這是一本務(wù)實的入門書,助你零起點上手自然語言處理。 HanLP 作者何晗匯集多年經(jīng)驗,從基本概念出發(fā),逐步介紹中文分詞、詞性標注、命名實體識別、信 息抽取、文本聚類、文本分類、句法分析這幾個熱門問題的算法原理與工程實現(xiàn)。書中通過對多種算法的講解,比較了它們的優(yōu)缺點和適用場景,同時詳細演示生產(chǎn)級成熟代碼,助你真正將自然語言處理應(yīng)用在生產(chǎn)環(huán)境中。 隨著本書的學習,你將從普通程序員晉級為機器學習工程師,*后進化到自然語言處理工程師。
你一定能看懂的自然語言處理(NLP)入門教程! 這是一本把讀者閱讀體驗放在首位的中文 NLP 圖書,作者采用從問題到算法再到工程實現(xiàn)的寫作思路,只允許必不可少的公式出現(xiàn),降低了讀者學習的門檻,通俗易懂、容易上手。是一本可以在地鐵上也能學會 NLP 開發(fā)的圖書。 全書有以下特點: 1. 圖文并茂,算法、公式、代碼相互印證,Java 與 Python 雙實現(xiàn)。 2. 學習路徑清晰,問題導(dǎo)向、算法實現(xiàn)、工程實戰(zhàn),簡單易懂好上手,雙色印刷閱讀體驗佳。 3. 業(yè)內(nèi)專家工業(yè)界周明、李航、劉群、王斌、楊攀,學術(shù)界宗成慶、劉知遠、張華平 聯(lián)合推薦。 4. 作者何晗(@hankcs)兼具一線實戰(zhàn)經(jīng)驗與硬核學術(shù)背景。自然語言處理開源項目 HanLP 作者(GitHub Star 數(shù)遠超賓夕法尼亞大學的 NLTK、斯坦福大學的 CoreNLP 以及哈工大的 LTP)埃默里大學計算機博士生,研究方向是句法分析、語義分析與問答系統(tǒng)。 5. 隨書附贈大尺寸(60CM*74CM)思維導(dǎo)圖,提供源碼下載、 GitHub 答疑,為教師提供教學講義 PPT。讀者可到圖靈社區(qū)本書頁面下載。
何晗(@hankcs) 自然語言處理類庫 HanLP 作者(GitHub 加星超過 14 600),碼農(nóng)場博主(日活躍讀者數(shù)超過 3000),埃默里大學計算機博士生,研究方向是句法分析、語義分析與問答系統(tǒng)。 HanLP 和碼農(nóng)場是 NLP 領(lǐng)域?qū)嵱玫膶W習資源,何晗大約每周處理一次 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 中文分詞、詞性標注和命名實體
識別 . 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)計的學習方法 .. 9
1.3.3 歷史 . 9
1.3.4 規(guī)則與統(tǒng)計 . 11
1.3.5 傳統(tǒng)方法與深度學習 11
1.4 機器學習 .. 12
1.4.1 什么是機器學習 13
1.4.2 模型 .. 13
1.4.3 特征 .. 13
1.4.4 數(shù)據(jù)集 .. 15
1.4.5 監(jiān)督學習 .. 16
1.4.6 無監(jiān)督學習 . 17
1.4.7 其他類型的機器學習算法 .. 18
1.5 語料庫 19
1.5.1 中文分詞語料庫 19
1.5.2 詞性標注語料庫 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é)點實現(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 自動機 .. 60
2.6.1 從字典樹到AC 自動機 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 自動機 . 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 準確率評測 . 74
2.9.1 準確率 .. 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 訓練 . 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é)點間的距離計算 111
3.4.4 詞圖上的維特比算法 . 112
3.4.5 與用戶詞典的集成 115
3.5 評測 .. 118
3.5.1 標準化評測 .. 118
3.5.2 誤差分析 118
3.5.3 調(diào)整模型 119
3.6 日語分詞 122
3.6.1 日語分詞語料 .. 122
3.6.2 訓練日語分詞器 . 123
3.7 總結(jié) .. 124
第4 章 隱馬爾可夫模型與序列標注 . 125
4.1 序列標注問題 . 125
4.1.1 序列標注與中文分詞 . 126
4.1.2 序列標注與詞性標注 . 127
4.1.3 序列標注與命名實體識別 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 隱馬爾可夫模型的訓練 .. 138
4.4.1 轉(zhuǎn)移概率矩陣的估計 . 138
4.4.2 初始狀態(tài)概率向量的估計 139
4.4.3 發(fā)射概率矩陣的估計 . 140
4.4.4 驗證樣本生成與模型訓練 141
4.5 隱馬爾可夫模型的預(yù)測 .. 142
4.5.1 概率計算的前向算法 . 142
4.5.2 搜索狀態(tài)序列的維特比算法 .. 143
4.6 隱馬爾可夫模型應(yīng)用于中文分詞 . 147
4.6.1 標注集 148
4.6.2 字符映射 149
4.6.3 語料轉(zhuǎn)換 150
4.6.4 訓練 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 章 感知機分類與序列標注 . 160
5.1 分類問題 160
5.1.1 定義 160
5.1.2 應(yīng)用 161
5.2 線性分類模型與感知機算法 161
5.2.1 特征向量與樣本空間 . 162
5.2.2 決策邊界與分離超平面 164
5.2.3 感知機算法 .. 167
5.2.4 損失函數(shù)與隨機梯度下降* 169
5.2.5 投票感知機和平均感知機 171
5.3 基于感知機的人名性別分類 174
5.3.1 人名性別語料庫 . 174
5.3.2 特征提取 174
5.3.3 訓練 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ù)測與學習的流程 180
5.5 線性模型的結(jié)構(gòu)化感知機算法 .. 180
5.5.1 結(jié)構(gòu)化感知機算法 . 180
5.5.2 結(jié)構(gòu)化感知機與序列標注 182
5.5.3 結(jié)構(gòu)化感知機的維特比解碼算法 .. 183
5.6 基于結(jié)構(gòu)化感知機的中文分詞 .. 186
5.6.1 特征提取 187
5.6.2 多線程訓練 .. 189
5.6.3 特征裁剪與模型壓縮* . 190
5.6.4 創(chuàng)建感知機分詞器 . 192
5.6.5 準確率與性能 .. 194
5.6.6 模型調(diào)整與在線學習* . 195
5.6.7 中文分詞特征工程* . 197
5.7 總結(jié) .. 199
第6 章 條件隨機場與序列標注 . 200
6.1 機器學習的模型譜系 200
6.1.1 生成式模型與判別式模型 201
6.1.2 有向與無向概率圖模型 202
6.2 條件隨機場 .. 205
6.2.1 線性鏈條件隨機場 . 205
6.2.2 條件隨機場的訓練* 207
6.2.3 對比結(jié)構(gòu)化感知機 . 210
6.3 條件隨機場工具包 . 212
6.3.1 CRF 的安裝 212
6.3.2 CRF 語料格式 213
6.3.3 CRF 特征模板 214
6.3.4 CRF 命令行訓練 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 訓練分詞器 .. 220
6.4.2 標準化評測 .. 220
6.5 總結(jié) .. 221
第7 章 詞性標注 . 222
7.1 詞性標注概述 . 222
7.1.1 什么是詞性 .. 222
7.1.2 詞性的用處 .. 223
7.1.3 詞性標注 223
7.1.4 詞性標注模型 .. 223
7.2 詞性標注語料庫與標注集 . 224
7.2.1 《人民日報》語料庫與PKU 標注集 .. 225
7.2.2 國家語委語料庫與863 標注集 . 231
7.2.3 《誅仙》語料庫與CTB 標注集 .. 234
7.3 序列標注模型應(yīng)用于詞性標注 .. 236
7.3.1 基于隱馬爾可夫模型的詞性標注 .. 237
7.3.2 基于感知機的詞性標注 238
7.3.3 基于條件隨機場的詞性標注 .. 240
7.3.4 詞性標注評測 .. 241
7.4 自定義詞性 .. 242
7.4.1 樸素實現(xiàn) 242
7.4.2 標注語料 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 基于層疊隱馬爾可夫模型的角色
標注框架 252
8.4.1 基于角色標注的中國人名識別 .. 252
8.4.2 基于角色標注的地名識別 .. 257
8.4.3 基于角色標注的機構(gòu)名識別 .. 258
8.5 基于序列標注的命名實體識別 .. 260
8.5.1 特征提取 261
8.5.2 基于隱馬爾可夫模型序列標注的
命名實體識別 .. 262
8.5.3 基于感知機序列標注的命名實體
識別 264
8.5.4 基于條件隨機場序列標注的命名
實體識別 265
8.5.5 命名實體識別標準化評測 265
8.6 自定義領(lǐng)域命名實體識別 . 266
8.6.1 標注領(lǐng)域命名實體識別語料庫 .. 267
8.6.2 訓練領(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)計指標 . 293
10.3 k 均值算法 293
10.3.1 基本原理 294
10.3.2 初始質(zhì)心的選取 . 294
10.3.3 更快的準則函數(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 標準化評測 .. 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 支持向量機分類器 .. 317
11.5.1 線性支持向量機* .. 317
11.5.2 線性支持向量機文本分類器
實現(xiàn) 319
11.6 標準化評測 .. 320
11.6.1 評測指標P、R、F1 320
11.6.2 試驗結(jié)果 321
11.7 情感分析 321
11.7.1 ChnSentiCorp 情感分析語
料庫 322
11.7.2 訓練情感分析模型 . 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 與感知機在線
學習 . 338
12.4.5 柱搜索 339
12.5 依存句法分析API 340
12.5.1 訓練模型 340
12.5.2 標準化評測 .. 341
12.6 案例:基于依存句法樹的意見
抽取 .. 342
12.7 總結(jié) .. 344
第 13 章 深度學習與自然語言處理 345
13.1 傳統(tǒng)方法的局限 345
13.1.1 數(shù)據(jù)稀疏 345
13.1.2 特征模板 347
13.1.3 誤差傳播 348
13.2 深度學習與優(yōu)勢 348
13.2.1 深度學習 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 語言學上的啟發(fā) . 354
13.3.2 CBOW 模型 . 354
13.3.3 訓練詞向量 .. 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 自然語言處理進階 .. 363
自然語言處理學習資料推薦 . 365