這是一本務(wù)實的入門書,助你零起點(diǎn)上手自然語言處理。 HanLP 作者何晗匯集多年經(jīng)驗,從基本概念出發(fā),逐步介紹中文分詞、詞性標(biāo)注、命名實體識別、信 息抽取、文本聚類、文本分類、句法分析這幾個熱門問題的算法原理與工程實現(xiàn)。書中通過對多種算法的講解,比較了它們的優(yōu)缺點(diǎn)和適用場景,同時詳細(xì)演示生產(chǎn)級成熟代碼,助你真正將自然語言處理應(yīng)用在生產(chǎn)環(huán)境中。 隨著本書的學(xué)習(xí),你將從普通程序員晉級為機(jī)器學(xué)習(xí)工程師,*后進(jìn)化到自然語言處理工程師。
你一定能看懂的自然語言處理(NLP)入門教程! 這是一本把讀者閱讀體驗放在首位的中文 NLP 圖書,作者采用從問題到算法再到工程實現(xiàn)的寫作思路,只允許必不可少的公式出現(xiàn),降低了讀者學(xué)習(xí)的門檻,通俗易懂、容易上手。是一本可以在地鐵上也能學(xué)會 NLP 開發(fā)的圖書。 全書有以下特點(diǎn): 1. 圖文并茂,算法、公式、代碼相互印證,Java 與 Python 雙實現(xiàn)。 2. 學(xué)習(xí)路徑清晰,問題導(dǎo)向、算法實現(xiàn)、工程實戰(zhàn),簡單易懂好上手,雙色印刷閱讀體驗佳。 3. 業(yè)內(nèi)專家工業(yè)界周明、李航、劉群、王斌、楊攀,學(xué)術(shù)界宗成慶、劉知遠(yuǎn)、張華平 聯(lián)合推薦。 4. 作者何晗(@hankcs)兼具一線實戰(zhàn)經(jīng)驗與硬核學(xué)術(shù)背景。自然語言處理開源項目 HanLP 作者(GitHub Star 數(shù)遠(yuǎn)超賓夕法尼亞大學(xué)的 NLTK、斯坦福大學(xué)的 CoreNLP 以及哈工大的 LTP)埃默里大學(xué)計算機(jī)博士生,研究方向是句法分析、語義分析與問答系統(tǒng)。 5. 隨書附贈大尺寸(60CM*74CM)思維導(dǎo)圖,提供源碼下載、 GitHub 答疑,為教師提供教學(xué)講義 PPT。讀者可到圖靈社區(qū)本書頁面下載。
何晗(@hankcs) 自然語言處理類庫 HanLP 作者(GitHub 加星超過 14 600),碼農(nóng)場博主(日活躍讀者數(shù)超過 3000),埃默里大學(xué)計算機(jī)博士生,研究方向是句法分析、語義分析與問答系統(tǒng)。 HanLP 和碼農(nóng)場是 NLP 領(lǐng)域?qū)嵱玫膶W(xué)習(xí)資源,何晗大約每周處理一次 HanLP GitHub上的 Issues。
第 1 章 新手上路 1
1.1 自然語言與編程語言 . 2
1.1.1 詞匯量 . 2
1.1.2 結(jié)構(gòu)化 . 2
1.1.3 歧義性 . 3
1.1.4 容錯性 . 3
1.1.5 易變性 . 4
1.1.6 簡略性 . 4
1.2 自然語言處理的層次 . 4
1.2.1 語音、圖像和文本 .. 5
1.2.2 中文分詞、詞性標(biāo)注和命名實體
識別 . 5
1.2.3 信息抽取 . 6
1.2.4 文本分類與文本聚類 .. 6
1.2.5 句法分析 . 6
1.2.6 語義分析與篇章分析 .. 7
1.2.7 其他高級任務(wù) 7
1.3 自然語言處理的流派 . 8
1.3.1 基于規(guī)則的專家系統(tǒng) .. 8
1.3.2 基于統(tǒng)計的學(xué)習(xí)方法 .. 9
1.3.3 歷史 . 9
1.3.4 規(guī)則與統(tǒng)計 . 11
1.3.5 傳統(tǒng)方法與深度學(xué)習(xí) 11
1.4 機(jī)器學(xué)習(xí) .. 12
1.4.1 什么是機(jī)器學(xué)習(xí) 13
1.4.2 模型 .. 13
1.4.3 特征 .. 13
1.4.4 數(shù)據(jù)集 .. 15
1.4.5 監(jiān)督學(xué)習(xí) .. 16
1.4.6 無監(jiān)督學(xué)習(xí) . 17
1.4.7 其他類型的機(jī)器學(xué)習(xí)算法 .. 18
1.5 語料庫 19
1.5.1 中文分詞語料庫 19
1.5.2 詞性標(biāo)注語料庫 19
1.5.3 命名實體識別語料庫 20
1.5.4 句法分析語料庫 20
1.5.5 文本分類語料庫 20
1.5.6 語料庫建設(shè) . 21
1.6 開源工具 .. 21
1.6.1 主流NLP 工具比較 .. 21
1.6.2 Python 接口 23
1.6.3 Java 接口 . 28
1.7 總結(jié) . 31
第 2 章 詞典分詞 32
2.1 什么是詞 .. 32
2.1.1 詞的定義 .. 32
2.1.2 詞的性質(zhì)--齊夫定律 .. 33
2.2 詞典 . 34
2.2.1 HanLP 詞典 . 34
2.2.2 詞典的加載 . 34
2.3 切分算法 .. 36
2.3.1 完全切分 .. 36
2.3.2 正向最長匹配 . 37
2.3.3 逆向最長匹配 . 39
2.3.4 雙向最長匹配 . 40
2.3.5 速度評測 .. 43
2.4 字典樹 46
2.4.1 什么是字典樹 . 46
2.4.2 字典樹的節(jié)點(diǎn)實現(xiàn) 47
2.4.3 字典樹的增刪改查實現(xiàn) .. 48
2.4.4 首字散列其余二分的字典樹 . 50
2.4.5 前綴樹的妙用 . 53
2.5 雙數(shù)組字典樹 55
2.5.1 雙數(shù)組的定義 . 55
2.5.2 狀態(tài)轉(zhuǎn)移 .. 56
2.5.3 查詢 .. 56
2.5.4 構(gòu)造* 57
2.5.5 全切分與最長匹配 60
2.6 AC 自動機(jī) .. 60
2.6.1 從字典樹到AC 自動機(jī) 61
2.6.2 goto 表 61
2.6.3 output 表 .. 62
2.6.4 fail 表 63
2.6.5 實現(xiàn) .. 65
2.7 基于雙數(shù)組字典樹的AC 自動機(jī) . 67
2.7.1 原理 .. 67
2.7.2 實現(xiàn) .. 67
2.8 HanLP 的詞典分詞實現(xiàn) 71
2.8.1 DoubleArrayTrieSegment 72
2.8.2 AhoCorasickDoubleArrayTrie-
Segment . 73
2.9 準(zhǔn)確率評測 . 74
2.9.1 準(zhǔn)確率 .. 74
2.9.2 混淆矩陣與TP/FN/FP/TN .. 75
2.9.3 精確率 .. 76
2.9.4 召回率 .. 76
2.9.5 F1 值 .. 77
2.9.6 中文分詞中的P、R、F1 計算 .. 77
2.9.7 實現(xiàn) .. 78
2.9.8 第二屆國際中文分詞評測 .. 79
2.9.9 OOV Recall Rate 與IV Recall Rate . 81
2.10 字典樹的其他應(yīng)用 . 83
2.10.1 停用詞過濾 .. 83
2.10.2 簡繁轉(zhuǎn)換 87
2.10.3 拼音轉(zhuǎn)換 90
2.11 總結(jié) . 91
第3 章 二元語法與中文分詞 . 92
3.1 語言模型 .. 92
3.1.1 什么是語言模型 92
3.1.2 馬爾可夫鏈與二元語法 .. 94
3.1.3 n 元語法 .. 95
3.1.4 數(shù)據(jù)稀疏與平滑策略 96
3.2 中文分詞語料庫 . 96
3.2.1 1998 年《人民日報》語料庫PKU . 97
3.2.2 微軟亞洲研究院語料庫MSR 98
3.2.3 繁體中文分詞語料庫 98
3.2.4 語料庫統(tǒng)計 . 99
3.3 訓(xùn)練 . 100
3.3.1 加載語料庫 .. 101
3.3.2 統(tǒng)計一元語法 .. 101
3.3.3 統(tǒng)計二元語法 .. 103
3.4 預(yù)測 .. 104
3.4.1 加載模型 104
3.4.2 構(gòu)建詞網(wǎng) 107
3.4.3 節(jié)點(diǎn)間的距離計算 111
3.4.4 詞圖上的維特比算法 . 112
3.4.5 與用戶詞典的集成 115
3.5 評測 .. 118
3.5.1 標(biāo)準(zhǔn)化評測 .. 118
3.5.2 誤差分析 118
3.5.3 調(diào)整模型 119
3.6 日語分詞 122
3.6.1 日語分詞語料 .. 122
3.6.2 訓(xùn)練日語分詞器 . 123
3.7 總結(jié) .. 124
第4 章 隱馬爾可夫模型與序列標(biāo)注 . 125
4.1 序列標(biāo)注問題 . 125
4.1.1 序列標(biāo)注與中文分詞 . 126
4.1.2 序列標(biāo)注與詞性標(biāo)注 . 127
4.1.3 序列標(biāo)注與命名實體識別 128
4.2 隱馬爾可夫模型 .. 129
4.2.1 從馬爾可夫假設(shè)到隱馬爾可夫
模型 129
4.2.2 初始狀態(tài)概率向量 . 130
4.2.3 狀態(tài)轉(zhuǎn)移概率矩陣 . 131
4.2.4 發(fā)射概率矩陣 .. 132
4.2.5 隱馬爾可夫模型的三個基本用法 .. 133
4.3 隱馬爾可夫模型的樣本生成 133
4.3.1 案例--醫(yī)療診斷 . 133
4.3.2 樣本生成算法 .. 136
4.4 隱馬爾可夫模型的訓(xùn)練 .. 138
4.4.1 轉(zhuǎn)移概率矩陣的估計 . 138
4.4.2 初始狀態(tài)概率向量的估計 139
4.4.3 發(fā)射概率矩陣的估計 . 140
4.4.4 驗證樣本生成與模型訓(xùn)練 141
4.5 隱馬爾可夫模型的預(yù)測 .. 142
4.5.1 概率計算的前向算法 . 142
4.5.2 搜索狀態(tài)序列的維特比算法 .. 143
4.6 隱馬爾可夫模型應(yīng)用于中文分詞 . 147
4.6.1 標(biāo)注集 148
4.6.2 字符映射 149
4.6.3 語料轉(zhuǎn)換 150
4.6.4 訓(xùn)練 151
4.6.5 預(yù)測 152
4.6.6 評測 153
4.6.7 誤差分析 154
4.7 二階隱馬爾可夫模型* 154
4.7.1 二階轉(zhuǎn)移概率張量的估計 155
4.7.2 二階隱馬爾可夫模型中的維特比
算法 156
4.7.3 二階隱馬爾可夫模型應(yīng)用于中文
分詞 158
4.8 總結(jié) .. 159
第5 章 感知機(jī)分類與序列標(biāo)注 . 160
5.1 分類問題 160
5.1.1 定義 160
5.1.2 應(yīng)用 161
5.2 線性分類模型與感知機(jī)算法 161
5.2.1 特征向量與樣本空間 . 162
5.2.2 決策邊界與分離超平面 164
5.2.3 感知機(jī)算法 .. 167
5.2.4 損失函數(shù)與隨機(jī)梯度下降* 169
5.2.5 投票感知機(jī)和平均感知機(jī) 171
5.3 基于感知機(jī)的人名性別分類 174
5.3.1 人名性別語料庫 . 174
5.3.2 特征提取 174
5.3.3 訓(xùn)練 175
5.3.4 預(yù)測 176
5.3.5 評測 177
5.3.6 模型調(diào)優(yōu) 178
5.4 結(jié)構(gòu)化預(yù)測問題 .. 180
5.4.1 定義 180
5.4.2 結(jié)構(gòu)化預(yù)測與學(xué)習(xí)的流程 180
5.5 線性模型的結(jié)構(gòu)化感知機(jī)算法 .. 180
5.5.1 結(jié)構(gòu)化感知機(jī)算法 . 180
5.5.2 結(jié)構(gòu)化感知機(jī)與序列標(biāo)注 182
5.5.3 結(jié)構(gòu)化感知機(jī)的維特比解碼算法 .. 183
5.6 基于結(jié)構(gòu)化感知機(jī)的中文分詞 .. 186
5.6.1 特征提取 187
5.6.2 多線程訓(xùn)練 .. 189
5.6.3 特征裁剪與模型壓縮* . 190
5.6.4 創(chuàng)建感知機(jī)分詞器 . 192
5.6.5 準(zhǔn)確率與性能 .. 194
5.6.6 模型調(diào)整與在線學(xué)習(xí)* . 195
5.6.7 中文分詞特征工程* . 197
5.7 總結(jié) .. 199
第6 章 條件隨機(jī)場與序列標(biāo)注 . 200
6.1 機(jī)器學(xué)習(xí)的模型譜系 200
6.1.1 生成式模型與判別式模型 201
6.1.2 有向與無向概率圖模型 202
6.2 條件隨機(jī)場 .. 205
6.2.1 線性鏈條件隨機(jī)場 . 205
6.2.2 條件隨機(jī)場的訓(xùn)練* 207
6.2.3 對比結(jié)構(gòu)化感知機(jī) . 210
6.3 條件隨機(jī)場工具包 . 212
6.3.1 CRF 的安裝 212
6.3.2 CRF 語料格式 213
6.3.3 CRF 特征模板 214
6.3.4 CRF 命令行訓(xùn)練 215
6.3.5 CRF 模型格式* 216
6.3.6 CRF 命令行預(yù)測 217
6.3.7 CRF 代碼分析* 218
6.4 HanLP 中的CRF API 220
6.4.1 訓(xùn)練分詞器 .. 220
6.4.2 標(biāo)準(zhǔn)化評測 .. 220
6.5 總結(jié) .. 221
第7 章 詞性標(biāo)注 . 222
7.1 詞性標(biāo)注概述 . 222
7.1.1 什么是詞性 .. 222
7.1.2 詞性的用處 .. 223
7.1.3 詞性標(biāo)注 223
7.1.4 詞性標(biāo)注模型 .. 223
7.2 詞性標(biāo)注語料庫與標(biāo)注集 . 224
7.2.1 《人民日報》語料庫與PKU 標(biāo)注集 .. 225
7.2.2 國家語委語料庫與863 標(biāo)注集 . 231
7.2.3 《誅仙》語料庫與CTB 標(biāo)注集 .. 234
7.3 序列標(biāo)注模型應(yīng)用于詞性標(biāo)注 .. 236
7.3.1 基于隱馬爾可夫模型的詞性標(biāo)注 .. 237
7.3.2 基于感知機(jī)的詞性標(biāo)注 238
7.3.3 基于條件隨機(jī)場的詞性標(biāo)注 .. 240
7.3.4 詞性標(biāo)注評測 .. 241
7.4 自定義詞性 .. 242
7.4.1 樸素實現(xiàn) 242
7.4.2 標(biāo)注語料 243
7.5 總結(jié) .. 244
第8 章 命名實體識別 . 245
8.1 概述 .. 245
8.1.1 命名實體 245
8.1.2 命名實體識別 .. 245
8.2 基于規(guī)則的命名實體識別 . 246
8.2.1 基于規(guī)則的音譯人名識別 247
8.2.2 基于規(guī)則的日本人名識別 248
8.2.3 基于規(guī)則的數(shù)詞英文識別 249
8.3 命名實體識別語料庫 .. 250
8.3.1 1998 年《人民日報》語料庫 . 250
8.3.2 微軟命名實體識別語料庫 251
8.4 基于層疊隱馬爾可夫模型的角色
標(biāo)注框架 252
8.4.1 基于角色標(biāo)注的中國人名識別 .. 252
8.4.2 基于角色標(biāo)注的地名識別 .. 257
8.4.3 基于角色標(biāo)注的機(jī)構(gòu)名識別 .. 258
8.5 基于序列標(biāo)注的命名實體識別 .. 260
8.5.1 特征提取 261
8.5.2 基于隱馬爾可夫模型序列標(biāo)注的
命名實體識別 .. 262
8.5.3 基于感知機(jī)序列標(biāo)注的命名實體
識別 264
8.5.4 基于條件隨機(jī)場序列標(biāo)注的命名
實體識別 265
8.5.5 命名實體識別標(biāo)準(zhǔn)化評測 265
8.6 自定義領(lǐng)域命名實體識別 . 266
8.6.1 標(biāo)注領(lǐng)域命名實體識別語料庫 .. 267
8.6.2 訓(xùn)練領(lǐng)域模型 .. 267
8.7 總結(jié) .. 268
第9 章 信息抽取 . 270
9.1 新詞提取 270
9.1.1 概述 270
9.1.2 基本原理 270
9.1.3 信息熵 271
9.1.4 互信息 272
9.1.5 實現(xiàn) 273
9.2 關(guān)鍵詞提取 .. 276
9.2.1 詞頻統(tǒng)計 277
9.2.2 TF-IDF .. 278
9.2.3 TextRank .. 280
9.3 短語提取 283
9.4 關(guān)鍵句提取 .. 284
9.4.1 BM25 . 284
9.4.2 TextRank .. 285
9.5 總結(jié) .. 287
第 10 章 文本聚類 . 288
10.1 概述 .. 288
10.1.1 聚類 288
10.1.2 聚類的應(yīng)用 .. 290
10.1.3 文本聚類 290
10.2 文檔的特征提取 291
10.2.1 詞袋模型 291
10.2.2 詞袋中的統(tǒng)計指標(biāo) . 293
10.3 k 均值算法 293
10.3.1 基本原理 294
10.3.2 初始質(zhì)心的選取 . 294
10.3.3 更快的準(zhǔn)則函數(shù) . 297
10.3.4 實現(xiàn) 298
10.4 重復(fù)二分聚類算法 .. 300
10.4.1 基本原理 300
10.4.2 自動判斷聚類個數(shù)k .. 301
10.4.3 實現(xiàn) 302
10.5 標(biāo)準(zhǔn)化評測 .. 303
10.5.1 P、R 和F1 值 .. 303
10.5.2 語料庫 304
10.5.3 評測試驗 305
10.6 總結(jié) .. 305
第 11 章 文本分類 . 306
11.1 文本分類的概念 306
11.2 文本分類語料庫 307
11.3 文本分類的特征提取 . 308
11.3.1 分詞 309
11.3.2 卡方特征選擇 .. 309
11.3.3 詞袋向量 312
11.4 樸素貝葉斯分類器 .. 312
11.4.1 樸素貝葉斯法原理 . 312
11.4.2 樸素貝葉斯文本分類器實現(xiàn) .. 314
11.5 支持向量機(jī)分類器 .. 317
11.5.1 線性支持向量機(jī)* .. 317
11.5.2 線性支持向量機(jī)文本分類器
實現(xiàn) 319
11.6 標(biāo)準(zhǔn)化評測 .. 320
11.6.1 評測指標(biāo)P、R、F1 320
11.6.2 試驗結(jié)果 321
11.7 情感分析 321
11.7.1 ChnSentiCorp 情感分析語
料庫 322
11.7.2 訓(xùn)練情感分析模型 . 322
11.7.3 拓展試驗 323
11.8 總結(jié) .. 323
第 12 章 依存句法分析 . 324
12.1 短語結(jié)構(gòu)樹 .. 324
12.1.1 上下文無關(guān)文法 . 324
12.1.2 短語結(jié)構(gòu)樹 .. 325
12.1.3 賓州樹庫和中文樹庫 . 326
12.2 依存句法樹 .. 327
12.2.1 依存句法理論 .. 327
12.2.2 中文依存句法樹庫 . 328
12.2.3 依存句法樹的可視化 . 331
12.3 依存句法分析 . 333
12.3.1 基于圖的依存句法分析 333
12.3.2 基于轉(zhuǎn)移的依存句法分析 333
12.4 基于轉(zhuǎn)移的依存句法分析 .. 334
12.4.1 Arc-Eager 轉(zhuǎn)移系統(tǒng) . 334
12.4.2 特征提取 336
12.4.3 Static 和Dynamic Oracle 337
12.4.4 Dynamic Oracle 與感知機(jī)在線
學(xué)習(xí) . 338
12.4.5 柱搜索 339
12.5 依存句法分析API 340
12.5.1 訓(xùn)練模型 340
12.5.2 標(biāo)準(zhǔn)化評測 .. 341
12.6 案例:基于依存句法樹的意見
抽取 .. 342
12.7 總結(jié) .. 344
第 13 章 深度學(xué)習(xí)與自然語言處理 345
13.1 傳統(tǒng)方法的局限 345
13.1.1 數(shù)據(jù)稀疏 345
13.1.2 特征模板 347
13.1.3 誤差傳播 348
13.2 深度學(xué)習(xí)與優(yōu)勢 348
13.2.1 深度學(xué)習(xí) 348
13.2.2 用稠密向量解決數(shù)據(jù)稀疏 352
13.2.3 用多層網(wǎng)絡(luò)自動提取特征表示 .. 352
13.2.4 端到端的設(shè)計 .. 353
13.3 word2vec .. 353
13.3.1 語言學(xué)上的啟發(fā) . 354
13.3.2 CBOW 模型 . 354
13.3.3 訓(xùn)練詞向量 .. 355
13.3.4 單詞語義相似度 . 357
13.3.5 詞語類比 358
13.3.6 短文本相似度 .. 359
13.4 基于神經(jīng)網(wǎng)絡(luò)的高性能依存句法
分析器 . 360
13.4.1 Arc-Standard 轉(zhuǎn)移系統(tǒng) .. 360
13.4.2 特征提取 361
13.4.3 實現(xiàn)與接口 .. 361
13.5 自然語言處理進(jìn)階 .. 363
自然語言處理學(xué)習(xí)資料推薦 . 365