自然語言處理實(shí)戰(zhàn) 利用Python理解、分析和生成文本(異步圖書出品)
定 價(jià):99 元
- 作者:[美] 霍布森·萊恩,科爾·霍華德,漢納斯·馬克斯·哈普克 著,史亮,魯驍,唐可欣,王斌 譯
- 出版時(shí)間:2020/10/1
- ISBN:9787115540232
- 出 版 社:人民郵電出版社
- 中圖法分類:TP391
- 頁碼:432
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書是介紹自然語言處理(NLP)和深度學(xué)習(xí)的實(shí)戰(zhàn)書。NLP已成為深度學(xué)習(xí)的核心應(yīng)用領(lǐng)域,而深度學(xué)習(xí)是NLP研究和應(yīng)用中的必要工具。本書分為3部分:第一部分介紹NLP基礎(chǔ),包括分詞、TF-IDF向量化以及從詞頻向量到語義向量的轉(zhuǎn)換;第二部分講述深度學(xué)習(xí),包含神經(jīng)網(wǎng)絡(luò)、詞向量、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長短期記憶(LSTM)網(wǎng)絡(luò)、序列到序列建模和注意力機(jī)制等基本的深度學(xué)習(xí)模型和方法;第三部分介紹實(shí)戰(zhàn)方面的內(nèi)容,包括信息提取、問答系統(tǒng)、人機(jī)對話等真實(shí)世界系統(tǒng)的模型構(gòu)建、性能挑戰(zhàn)以及應(yīng)對方法。
本書面向中高級(jí)Python開發(fā)人員,兼具基礎(chǔ)理論與編程實(shí)戰(zhàn),是現(xiàn)代NLP領(lǐng)域從業(yè)者的實(shí)用參考書。
Python開發(fā)人員入門自然語言處理必備
現(xiàn)代自然語言處理領(lǐng)域從業(yè)者的實(shí)用參考指南
小米AI實(shí)驗(yàn)室NLP團(tuán)隊(duì)獻(xiàn)譯
1.本書是構(gòu)建能夠閱讀和解釋人類語言的機(jī)器的實(shí)用指南;
2.讀者可以使用現(xiàn)有的Python 包來捕獲文本的含義并相應(yīng)地做出響應(yīng);
3.本書擴(kuò)展了傳統(tǒng)的自然語言處理方法,包括神經(jīng)網(wǎng)絡(luò)、現(xiàn)代深度學(xué)習(xí)算法和生成技術(shù),用于解決真實(shí)世界的問題,如提取日期和名稱、合成文本和回答無固定格式的問題;
4.提供源代碼。
深度學(xué)習(xí)領(lǐng)域的**進(jìn)展使各類應(yīng)用能夠極其精準(zhǔn)地理解文本和語音。其結(jié)果是,聊天機(jī)器人能夠模仿真人篩選出與職位高度匹配的簡歷,完成卓越的預(yù)測性搜索,自動(dòng)生成文檔摘要——所有這些都能夠以很低的成本實(shí)現(xiàn)。新技術(shù)的發(fā)展連同Keras 和TensorFlow之類的易用工具的出現(xiàn),使專業(yè)品質(zhì)的自然語言處理(NLP)比以往任何時(shí)候都更容易實(shí)現(xiàn)。
本書主要內(nèi)容
● Keras、TensorFlow、gensim和 scikit-learn等工具的使用。
● 基于規(guī)則的自然語言處理和基于數(shù)據(jù)的自然語言處理。
● 可擴(kuò)展的自然語言處理流水線。
閱讀本書,讀者需要對深度學(xué)習(xí)的知識(shí)有基本的了解,并具有中等水平的Python 編程技能。
作者簡介
霍布森.萊恩(Hobson Lane)擁有20年構(gòu)建自主系統(tǒng)的經(jīng)驗(yàn),這些系統(tǒng)能夠代表人類做出重要決策。Hobson在Talentpair訓(xùn)練機(jī)器完成簡歷的閱讀和理解,以減少招聘者產(chǎn)生的偏見。在Aira,他幫助構(gòu)建了第一個(gè)聊天機(jī)器人,為視障人士描述視覺世界。他是Keras、scikit-learn、PyBrain、PUGNLP和ChatterBot等開源項(xiàng)目的積極貢獻(xiàn)者。他目前正在從事完全公益的開放科學(xué)研究和教育項(xiàng)目,包括構(gòu)建一個(gè)開放源碼的認(rèn)知助手。他在AIAA、PyCon、PAIS和IEEE上發(fā)表了多篇論文和演講,并獲得了機(jī)器人和自動(dòng)化領(lǐng)域的多項(xiàng)專利。
科爾.霍華德(Cole Howard)是一位機(jī)器學(xué)習(xí)工程師、NLP實(shí)踐者和作家。他一生都在尋找模式,并在人工神經(jīng)網(wǎng)絡(luò)的世界里找到了自己真正的家。他開發(fā)了大型電子商務(wù)推薦引擎和面向超維機(jī)器智能系統(tǒng)(深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò))的最先進(jìn)的神經(jīng)網(wǎng)絡(luò),這些系統(tǒng)在Kaggle競賽中名列前茅。他曾在Open Source Bridge和Hack University 大會(huì)上發(fā)表演講,介紹卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)及其在自然語言處理中的作用。
漢納斯.馬克斯.哈普克(Hannes Max Hapke)是從一位電氣工程師轉(zhuǎn)行成為機(jī)器學(xué)習(xí)工程師的。他在高中研究如何在微控制器上計(jì)算神經(jīng)網(wǎng)絡(luò)時(shí),對神經(jīng)網(wǎng)絡(luò)產(chǎn)生了濃厚的興趣。Hannes喜歡自動(dòng)化軟件開發(fā)和機(jī)器學(xué)習(xí)流水線。他與合作者共同開發(fā)了面向招聘、能源和醫(yī)療應(yīng)用的深度學(xué)習(xí)模型和機(jī)器學(xué)習(xí)流水線。Hannes在包括OSCON、Open Source Bridge和Hack University在內(nèi)的各種會(huì)議上發(fā)表演講介紹機(jī)器學(xué)習(xí)。
譯者簡介
史亮 小米NLP高級(jí)軟件工程師,本科畢業(yè)于武漢大學(xué),后保送中科院計(jì)算所碩博連讀,獲得博士學(xué)位。目前主要負(fù)責(zé)小米MiNLP平臺(tái)的研發(fā)工作。
魯驍 小米NLP高級(jí)軟件工程師,本科、碩士畢業(yè)于華中科技大學(xué),博士畢業(yè)于中科院計(jì)算所。目前主要從事大規(guī)模文本分類、內(nèi)容過濾、人機(jī)對話等方向的研發(fā)工作。
唐可欣 小米NLP軟件工程師,本科畢業(yè)于西安電子科技大學(xué),碩士畢業(yè)于法國巴黎高科電信學(xué)院。主要從事語言模型、意圖分析、情感分析等方向的研發(fā)工作。
王斌 小米AI實(shí)驗(yàn)室主任、NLP首席科學(xué)家,前中科院博導(dǎo)、研究員,中國科學(xué)院大學(xué)教授。譯有《信息檢索導(dǎo)論》《大數(shù)據(jù):互聯(lián)網(wǎng)大規(guī)模數(shù)據(jù)挖掘與分布式處理》《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》等書籍。
目 錄
第 一部分 處理文本的機(jī)器
第 1章 NLP概述 3
1.1 自然語言與編程語言 3
1.2 神奇的魔法 4
1.2.1 會(huì)交談的機(jī)器 5
1.2.2 NLP中的數(shù)學(xué) 5
1.3 實(shí)際應(yīng)用 7
1.4 計(jì)算機(jī)“眼”中的語言 8
1.4.1 鎖的語言(正則表達(dá)式) 9
1.4.2 正則表達(dá)式 9
1.4.3 一個(gè)簡單的聊天機(jī)器人 11
1.4.4 另一種方法 14
1.5 超空間簡述 17
1.6 詞序和語法 19
1.7 聊天機(jī)器人的自然語言流水線 20
1.8 深度處理 22
1.9 自然語言智商 24
1.10 小結(jié) 26
第 2章 構(gòu)建自己的詞匯表——分詞 27
2.1 挑戰(zhàn)(詞干還原預(yù)覽) 28
2.2 利用分詞器構(gòu)建詞匯表 29
2.2.1 點(diǎn)積 37
2.2.2 度量詞袋之間的重合度 37
2.2.3 標(biāo)點(diǎn)符號(hào)的處理 38
2.2.4 將詞匯表擴(kuò)展到n-gram 43
2.2.5 詞匯表歸一化 48
2.3 情感 55
2.3.1 VADER:一個(gè)基于規(guī)則的情感分析器 56
2.3.2 樸素貝葉斯 58
2.4 小結(jié) 61
第3章 詞中的數(shù)學(xué) 62
3.1 詞袋 63
3.2 向量化 67
3.3 齊普夫定律 74
3.4 主題建模 76
3.4.1 回到齊普夫定律 79
3.4.2 相關(guān)度排序 80
3.4.3 工具 82
3.4.4 其他工具 83
3.4.5 Okapi BM25 85
3.4.6 未來展望 85
3.5 小結(jié) 85
第4章 詞頻背后的語義 87
4.1 從詞頻到主題得分 88
4.1.1 TF-IDF向量及詞形歸并 88
4.1.2 主題向量 89
4.1.3 思想實(shí)驗(yàn) 90
4.1.4 一個(gè)主題評分算法 94
4.1.5 一個(gè)LDA分類器 95
4.2 潛在語義分析 99
4.3 奇異值分解 103
4.3.1 左奇異向量U 105
4.3.2 奇異值向量S 106
4.3.3 右奇異向量VT 107
4.3.4 SVD矩陣的方向 107
4.3.5 主題約簡 108
4.4 主成分分析 109
4.4.1 三維向量上的PCA 111
4.4.2 回歸NLP 112
4.4.3 基于PCA的短消息語義分析 114
4.4.4 基于截?cái)嗟腟VD的短消息語義分析 116
4.4.5 基于LSA的垃圾短消息分類的效果 117
4.5 潛在狄利克雷分布(LDiA) 119
4.5.1 LDiA思想 120
4.5.2 基于LDiA主題模型的短消息語義分析 121
4.5.3 LDiA+LDA=垃圾消息過濾器 124
4.5.4 更公平的對比:32個(gè)LdiA主題 125
4.6 距離和相似度 127
4.7 反饋及改進(jìn) 129
4.8 主題向量的威力 132
4.8.1 語義搜索 133
4.8.2 改進(jìn) 135
4.9 小結(jié) 135
第二部分 深度學(xué)習(xí)(神經(jīng)網(wǎng)絡(luò))
第5章 神經(jīng)網(wǎng)絡(luò)初步(感知機(jī)與反向傳播) 139
5.1 神經(jīng)網(wǎng)絡(luò)的組成 140
5.1.1 感知機(jī) 140
5.1.2 數(shù)字感知機(jī) 141
5.1.3 認(rèn)識(shí)偏置 142
5.1.4 誤差曲面 153
5.1.5 不同類型的誤差曲面 154
5.1.6 多種梯度下降算法 155
5.1.7 Keras:用Python實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò) 155
5.1.8 展望 158
5.1.9 歸一化:格式化輸入 159
5.2 小結(jié) 159
第6章 詞向量推理(Word2vec) 160
6.1 語義查詢與類比 160
6.2 詞向量 162
6.2.1 面向向量的推理 165
6.2.2 如何計(jì)算Word2vec表示 167
6.2.3 如何使用gensim.word2vec模塊 175
6.2.4 生成定制化詞向量表示 177
6.2.5 Word2vec和GloVe 179
6.2.6 fastText 180
6.2.7 Word2vec和LSA 180
6.2.8 詞關(guān)系可視化 181
6.2.9 非自然詞 187
6.2.10 利用Doc2vec計(jì)算文檔相似度 188
6.3 小結(jié) 190
第7章 卷積神經(jīng)網(wǎng)絡(luò)(CNN) 191
7.1 語義理解 192
7.2 工具包 193
7.3 卷積神經(jīng)網(wǎng)絡(luò) 194
7.3.1 構(gòu)建塊 195
7.3.2 步長 196
7.3.3 卷積核的組成 196
7.3.4 填充 198
7.3.5 學(xué)習(xí) 199
7.4 狹窄的窗口 199
7.4.1 Keras實(shí)現(xiàn):準(zhǔn)備數(shù)據(jù) 201
7.4.2 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu) 206
7.4.3 池化 206
7.4.4 dropout 208
7.4.5 輸出層 209
7.4.6 開始學(xué)習(xí)(訓(xùn)練) 211
7.4.7 在流水線中使用模型 212
7.4.8 前景展望 213
7.5 小結(jié) 214
第8章 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 215
8.1 循環(huán)網(wǎng)絡(luò)的記憶功能 217
8.1.1 隨時(shí)間反向傳播算法 221
8.1.2 不同時(shí)刻的權(quán)重更新 223
8.1.3 簡要回顧 225
8.1.4 難點(diǎn) 225
8.1.5 利用Keras實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò) 226
8.2 整合各個(gè)部分 230
8.3 自我學(xué)習(xí) 231
8.4 超參數(shù) 232
8.5 預(yù)測 235
8.5.1 有狀態(tài)性 236
8.5.2 雙向RNN 236
8.5.3 編碼向量 238
8.6 小結(jié) 238
第9章 改進(jìn)記憶力:長短期記憶網(wǎng)絡(luò)(LSTM) 239
9.1 長短期記憶(LSTM) 240
9.1.1 隨時(shí)間反向傳播 247
9.1.2 模型的使用 250
9.1.3 臟數(shù)據(jù) 251
9.1.4 “未知”詞條的處理 254
9.1.5 字符級(jí)建模 255
9.1.6 生成聊天文字 260
9.1.7 進(jìn)一步生成文本 262
9.1.8 文本生成的問題:內(nèi)容不受控 269
9.1.9 其他記憶機(jī)制 269
9.1.10 更深的網(wǎng)絡(luò) 270
9.2 小結(jié) 271
第 10章 序列到序列建模和注意力機(jī)制 272
10.1 編碼-解碼架構(gòu) 272
10.1.1 解碼思想 273
10.1.2 似曾相識(shí)? 275
10.1.3 序列到序列對話 276
10.1.4 回顧LSTM 277
10.2 組裝一個(gè)序列到序列的流水線 278
10.2.1 為序列到序列訓(xùn)練準(zhǔn)備數(shù)據(jù)集 278
10.2.2 Keras中的序列到序列模型 279
10.2.3 序列編碼器 280
10.2.4 思想解碼器 281
10.2.5 組裝一個(gè)序列到序列網(wǎng)絡(luò) 282
10.3 訓(xùn)練序列到序列網(wǎng)絡(luò) 282
10.4 使用序列到序列網(wǎng)絡(luò)構(gòu)建一個(gè)聊天機(jī)器人 284
10.4.1 為訓(xùn)練準(zhǔn)備語料庫 285
10.4.2 建立字符字典 286
10.4.3 生成獨(dú)熱編碼訓(xùn)練集 286
10.4.4 訓(xùn)練序列到序列聊天機(jī)器人 287
10.4.5 組裝序列生成模型 288
10.4.6 預(yù)測輸出序列 288
10.4.7 生成回復(fù) 289
10.4.8 與聊天機(jī)器人交談 290
10.5 增強(qiáng) 290
10.5.1 使用裝桶法降低訓(xùn)練復(fù)雜度 290
10.5.2 注意力機(jī)制 291
10.6 實(shí)際應(yīng)用 292
10.7 小結(jié) 294
第三部分 進(jìn)入現(xiàn)實(shí)世界(現(xiàn)實(shí)中的NLP挑戰(zhàn))
第 11章 信息提。麑(shí)體識(shí)別與問答系統(tǒng)) 297
11.1 命名實(shí)體與關(guān)系 297
11.1.1 知識(shí)庫 298
11.1.2 信息提取 300
11.2 正則模式 300
11.2.1 正則表達(dá)式 301
11.2.2 把信息提取當(dāng)作機(jī)器學(xué)習(xí)里的特征提取任務(wù) 302
11.3 值得提取的信息 303
11.3.1 提取GPS位置 303
11.3.2 提取日期 304
11.4 提取人物關(guān)系(事物關(guān)系) 309
11.4.1 詞性標(biāo)注 309
11.4.2 實(shí)體名稱標(biāo)準(zhǔn)化 313
11.4.3 實(shí)體關(guān)系標(biāo)準(zhǔn)化和提取 314
11.4.4 單詞模式 314
11.4.5 文本分割 314
11.4.6 為什么split('.! ')函數(shù)不管用 316
11.4.7 使用正則表達(dá)式進(jìn)行斷句 316
11.5 現(xiàn)實(shí)世界的信息提取 318
11.6 小結(jié) 319
第 12章 開始聊天(對話引擎) 320
12.1 語言技能 321
12.1.1 現(xiàn)代方法 322
12.1.2 混合方法 326
12.2 模式匹配方法 327
12.2.1 基于AIML的模式匹配聊天機(jī)器人 328
12.2.2 模式匹配的網(wǎng)絡(luò)視圖 334
12.3 知識(shí)方法 334
12.4 檢索(搜索)方法 336
12.4.1 上下文挑戰(zhàn) 336
12.4.2 基于示例檢索的聊天機(jī)器人 338
12.4.3 基于搜索的聊天機(jī)器人 341
12.5 生成式方法 343
12.5.1 聊聊NLPIA 343
12.5.2 每種方法的利弊 345
12.6 四輪驅(qū)動(dòng) 345
12.7 設(shè)計(jì)過程 347
12.8 技巧 349
12.8.1 用帶有可預(yù)測答案的問題提問 349
12.8.2 要有趣 350
12.8.3 當(dāng)其他所有方法都失敗時(shí),搜索 350
12.8.4 變得受歡迎 350
12.8.5 成為連接器 351
12.8.6 變得有情感 351
12.9 現(xiàn)實(shí)世界 351
12.10 小結(jié) 352
第 13章 可擴(kuò)展性(優(yōu)化、并行化和批處理) 353
13.1 太多(數(shù)據(jù))未必是好事 353
13.2 優(yōu)化NLP算法 354
13.2.1 索引 354
13.2.2 高級(jí)索引 355
13.2.3 基于Annoy的高級(jí)索引 357
13.2.4 究竟為什么要使用近似索引 361
13.2.5 索引變通方法:離散化 362
13.3 常數(shù)級(jí)內(nèi)存算法 363
13.3.1 gensim 363
13.3.2 圖計(jì)算 363
13.4 并行化NLP計(jì)算 364
13.4.1 在GPU上訓(xùn)練NLP模型 364
13.4.2 租與買 365
13.4.3 GPU租賃選擇 366
13.4.4 張量處理單元TPU 367
13.5 減少模型訓(xùn)練期間的內(nèi)存占用 367
13.6 使用TensorBoard了解模型 369
13.7 小結(jié) 372
附錄A 本書配套的NLP工具 373
附錄B 有趣的Python和正則表達(dá)式 380
附錄C 向量和矩陣(線性代數(shù)基礎(chǔ)) 385
附錄D 機(jī)器學(xué)習(xí)常見工具與技術(shù) 391
附錄E 設(shè)置亞馬遜云服務(wù)(AWS)上的GPU 403
附錄F 局部敏感哈希 415
資源 421
詞匯表 428