內容簡介
自然語言處理(NLP)是應用程序開發的重要領域,在解決實際問題中起著越來越重要的作用。NLP任務支持的自然語言可訪問應用程序需求顯著增。本書將探索如何使用諸如全文本搜索、專有名稱識彆、聚類、標記、信息提取、匯總等方法自主組織文本。書中涵蓋瞭NLP的概念,即使沒有統計或自然語言處理背景的人也可以理解它。
作者簡介
bout the Author
作者簡介
Richard M. Reese曾就職於學術界和工業界。他曾在電信和航天工業領域工作17年,期間曾擔任研發、軟件開發、監督和培訓等多個職位。他目前任教於塔爾頓州立大學,運用他多年來積纍的行業經驗來完善他的課程。
Richard曾齣版過關於Java和C的書籍,他使用簡潔易用的方法討論主題,這些書籍包括《EJB 3.1 Cookbook》,有關Java 7和Java 8的新功能、Java認證以及jMonkey引擎,以及一本關於C指針的書。
我要感謝我的女兒詹妮弗,因她發錶瞭很多評論,並做齣很大貢獻。她的付齣是無價的。
目錄
CONTENTS
目 錄
譯者序
作者簡介
審校者簡介
前言
第1章 NLP簡介 1
1.1 什麼是NLP 2
1.2 為何使用NLP 3
1.3 NLP的難點 4
1.4 NLP工具匯總 5
1.4.1 Apache OpenNLP 6
1.4.2 Stanford NLP 7
1.4.3 LingPipe 9
1.4.4 GATE 10
1.4.5 UIMA 10
1.5 文本處理概覽 10
1.5.1 文本分詞 11
1.5.2 文本斷句 12
1.5.3 人物識彆 14
1.5.4 詞性判斷 16
1.5.5 文本分類 17
1.5.6 關係提取 18
1.5.7 方法組閤 20
1.6 理解NLP模型 20
1.6.1 明確目標 20
1.6.2 選擇模型 21
1.6.3 構建、訓練模型 21
1.6.4 驗證模型 22
1.6.5 使用模型 22
1.7 準備數據 22
1.8 本章小結 24
第2章 文本分詞 25
2.1 理解文本分詞 25
2.2 什麼是分詞 26
2.3 一些簡單的Java分詞器 28
2.3.1 使用Scanner類 29
2.3.2 使用split方法 30
2.3.3 使用BreakIterator類 31
2.3.4 使用StreamTokenizer類 32
2.3.5使用StringTokenizer類 34
2.3.6使用Java核心分詞法的性能考慮 34
2.4NLP分詞器的API 34
2.4.1使用OpenNLPTokenizer類分詞器 35
2.4.2使用Stanford分詞器 37
2.4.3訓練分詞器進行文本分詞 41
2.4.4分詞器的比較 44
2.5理解標準化處理 45
2.5.1轉換為小寫字母 45
2.5.2去除停用詞 46
2.5.3詞乾化 49
2.5.4詞形還原 51
2.5.5使用流水綫進行標準化處理 54
2.6本章小結 55
第3章 文本斷句 56
3.1SBD方法 56
3.2SBD難在何處 57
3.3理解LingPipe的HeuristicSen-tenceModel類的SBD規則 59
3.4簡單的Java SBD 60
3.4.1使用正則錶達式 60
3.4.2使用BreakIterator類 62
3.5使用NLP API 63
3.5.1使用OpenNLP 64
3.5.2使用Stanford API 66
3.5.3使用LingPipe 74
3.6訓練文本斷句模型 78
3.6.1使用訓練好的模型 80
3.6.2使用SentenceDetector-Evaluator類評估模型 81
3.7本章小結 82
第4章 人物識彆 83
4.1NER難在何處 84
4.2NER的方法 84
4.2.1列錶和正則錶達式 85
4.2.2統計分類器 85
4.3使用正則錶達式進行NER 86
4.3.1使用Java的正則錶達式來尋找實體 86
4.3.2使用LingPipe的RegEx-Chunker類 88
4.4使用NLP API 89
4.4.1使用OpenNLP進行NER 89
4.4.2使用Stanford API進行NER 95
4.4.3使用LingPipe進行NER 96
4.5訓練模型 100
4.6本章小結 103
第5章 詞性判斷 104
5.1詞性標注 104
5.1.1詞性標注器的重要性 107
5.1.2詞性標注難在何處 107
5.2使用NLP API 109
5.2.1使用OpenNLP詞性標注器 110
5.2.2使用Stanford詞性標注器 118
5.2.3使用LingPipe詞性標注器 125
5.2.4訓練OpenNLP詞性標注模型 129
5.3本章小結 131
第6章 文本分類 132
6.1文本分類問題 132
6.2情感分析介紹 134
6.3文本分類技術 135
6.4使用API進行文本分類 136
6.4.1OpenNLP的使用 136
6.4.2Stanford API的使用 140
6.4.3使用LingPipe進行文本分類 145
6.5本章小結 152
第7章 關係提取 153
7.1關係類型 154
7.2理解解析樹 155
7.3關係提取的應用 156
7.4關係提取 159
7.5使用NLP API 159
7.5.1OpenNLP的使用 159
7.5.2使用Stanford API 162
7.5.3判斷共指消解的實體 166
7.6問答係統的關係提取 168
7.6.1判斷單詞依賴關係 169
7.6.2判斷問題類型 170
7.6.3搜索答案 171
7.7本章小結 173
第8章 方法組閤 174
8.1準備數據 175
8.1.1使用Boilerpipe從HTML中提取文本 175
8.1.2使用POI從Word文檔中提取文本 177
8.1.3使用PDFBox從PDF文檔中提取文本 181
8.2流水綫 182
8.2.1使用Stanford流水綫 182
8.2.2在Standford流水綫中使用多核處理器 187
8.3創建一個文本搜索的流水綫 188
8.4本章小結 193
前言/序言
PREFACE前 言自然語言處理(NLP)已用於解決各種各樣的問題,包括對搜索引擎的支持,對網頁文本的總結與分類,以及結閤機器學習技術解決諸如語音識彆、查詢分析等問題。它已經在任何包含有用信息的文件中使用。
NLP用於增強應用程序的實用性和功能,主要通過簡化用戶輸入以及將文本轉換成更加可用的形式來實現。實際上,NLP能夠處理各種來源的文本,使用一係列核心NLP任務從文本中轉化或提取信息。
本書重點介紹NLP應用中可能遇到的核心NLP任務,每個NLP任務都從問題的描述以及可應用領域開始。介紹每項任務中比較睏難的問題,以便你能更好地理解問題。隨後通過使用大量的Java技術和API來支持NLP任務。
本書涵蓋內容第1章解釋瞭NLP的重要性和用法。本章以簡單的例子來解釋如何使用NLP技術。
第2章主要討論標記化,標記化是使用更為先進的NLP技術的第一步,本章介紹瞭核心Java和Java NLP標記化API。
第3章證明句子邊界消歧技術是一個重要的NLP任務。這一步是其他許多下遊NLP任務的預處理步驟,其中文本元素不應跨越句子邊界進行分隔。這樣就可以確保所有短語都在一個句子中,並支持詞性分析。
第4章涵蓋瞭通常所說的命名實體識彆。這個任務主要涉及識彆人、地點和文本中相似的實體。該技術是處理查詢和搜索的初始步驟。
第5章說明如何檢測詞性,詞性是文本中的語法元素,例如名詞和動詞。識彆這些元素是確定文本含義和檢測文本內關係的重要步驟。
第6章證明文本分類對於垃圾郵件檢測和情感分析等任務非常有用。此外,本章也對支持文本分類的NLP技術進行瞭調查和說明。
第7章演示解析樹。解析樹可應用於很多目的,其中包括信息提取。信息提取擁有這些元素之間關係的信息。通過一個實現簡單查詢的例子來說明這個過程。
第8章包含從各種類型的文件(如PDF和Word文件)中提取數據的技術。接下來主要介紹瞭如何將以前的NLP技術結閤至一個管道中以解決更大的問題。
閱讀本書的技術準備Java SDK 7用於說明NLP技術。各種NLP API是必需的並可以隨時下載。IDE可選擇,並不做強製要求。
本書讀者對象對NLP技術感興趣的、有Java經驗的開發人員會發現這本書很有用。不需要事先具備NLP知識。
Java自然語言處理 下載 mobi epub pdf txt 電子書