Java自然語言處理
內容描述
自然語言處理(NLP)是應用程序開發的重要領域,在解決實際問題中起著越來越重要的作用。NLP任務支持的自然語言可訪問應用程序需求顯著增。本書將探索如何使用諸如全文本搜索、專有名稱識別、聚類、標記、信息提取、匯總等方法自主組織文本。書中涵蓋了NLP的概念,即使沒有統計或自然語言處理背景的人也可以理解它。
目錄大綱
譯者序
作者簡介
審校者簡介
前言
第1章NLP簡介1
1.1什麼是NLP2
1.2為何使用NLP3
1.3NLP的難點4
1.4NLP工具匯總5
1.4.1ApacheOpenNLP6
1.4.2StanfordNLP7
1.4.3LingPipe9
1.4.4GATE10
1.4.5UIMA10
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分詞器的API34
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簡單的JavaSBD60
3.4.1使用正則表達式60
3.4.2使用BreakIterator類62
3.5使用NLPAPI63
3.5.1使用OpenNLP64
3.5.2使用StanfordAPI66
3.5.3使用LingPipe74
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使用正則表達式進行NER86
4.3.1使用Java的正則表達式來尋找實體86
4.3.2使用LingPipe的RegEx—Chunker類88
4.4使用NLPAPI89
4.4.1使用OpenNLP進行NER89
4.4.2使用StanfordAPI進行NER95
4.4.3使用LingPipe進行NER96
4.5訓練模型100
4.6本章小結103
第5章詞性判斷104
5.1詞性標註104
5.1.1詞性標註器的重要性107
5.1.2詞性標註難在何處107
5.2使用NLPAPI109
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.2StanfordAPI的使用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使用NLPAPI159
7.5.1OpenNLP的使用159
7.5.2使用StanfordAPI162
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
作者介紹
Richard M. Reese曾就職於學術界和工業界。他曾在電信和航天工業領域工作17年,期間曾擔任研發、軟件開發、監督和培訓等多個職位。他目前任教於塔爾頓州立大學,運用他多年來積累的行業經驗來完善他的課程。
Richard曾出版過關於Java和C的書籍,他使用簡潔易用的方法討論主題,這些書籍包括《EJB 3.1 Cookbook》,有關Java 7和Java 8的新功能、Java認證以及jMonkey引擎,以及一本關於C指針的書。
我要感謝我的女兒詹妮弗,因她發表了很多評論,並做出很大貢獻。她的付出是無價的。