自然語言處理實戰(zhàn) 利用Python理解、分析和生成文本(異步圖書出品)
定 價:99 元
- 作者:[美] 霍布森·萊恩,科爾·霍華德,漢納斯·馬克斯·哈普克 著,史亮,魯驍,唐可欣,王斌 譯
- 出版時間:2020/10/1
- ISBN:9787115540232
- 出 版 社:人民郵電出版社
- 中圖法分類:TP391
- 頁碼:432
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書是介紹自然語言處理(NLP)和深度學習的實戰(zhàn)書。NLP已成為深度學習的核心應(yīng)用領(lǐng)域,而深度學習是NLP研究和應(yīng)用中的必要工具。本書分為3部分:第一部分介紹NLP基礎(chǔ),包括分詞、TF-IDF向量化以及從詞頻向量到語義向量的轉(zhuǎn)換;第二部分講述深度學習,包含神經(jīng)網(wǎng)絡(luò)、詞向量、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長短期記憶(LSTM)網(wǎng)絡(luò)、序列到序列建模和注意力機制等基本的深度學習模型和方法;第三部分介紹實戰(zhàn)方面的內(nèi)容,包括信息提取、問答系統(tǒng)、人機對話等真實世界系統(tǒng)的模型構(gòu)建、性能挑戰(zhàn)以及應(yīng)對方法。
本書面向中高級Python開發(fā)人員,兼具基礎(chǔ)理論與編程實戰(zhàn),是現(xiàn)代NLP領(lǐng)域從業(yè)者的實用參考書。
Python開發(fā)人員入門自然語言處理必備
現(xiàn)代自然語言處理領(lǐng)域從業(yè)者的實用參考指南
小米AI實驗室NLP團隊獻譯
1.本書是構(gòu)建能夠閱讀和解釋人類語言的機器的實用指南;
2.讀者可以使用現(xiàn)有的Python 包來捕獲文本的含義并相應(yīng)地做出響應(yīng);
3.本書擴展了傳統(tǒng)的自然語言處理方法,包括神經(jīng)網(wǎng)絡(luò)、現(xiàn)代深度學習算法和生成技術(shù),用于解決真實世界的問題,如提取日期和名稱、合成文本和回答無固定格式的問題;
4.提供源代碼。
深度學習領(lǐng)域的**進展使各類應(yīng)用能夠極其精準地理解文本和語音。其結(jié)果是,聊天機器人能夠模仿真人篩選出與職位高度匹配的簡歷,完成卓越的預(yù)測性搜索,自動生成文檔摘要——所有這些都能夠以很低的成本實現(xiàn)。新技術(shù)的發(fā)展連同Keras 和TensorFlow之類的易用工具的出現(xiàn),使專業(yè)品質(zhì)的自然語言處理(NLP)比以往任何時候都更容易實現(xiàn)。
本書主要內(nèi)容
● Keras、TensorFlow、gensim和 scikit-learn等工具的使用。
● 基于規(guī)則的自然語言處理和基于數(shù)據(jù)的自然語言處理。
● 可擴展的自然語言處理流水線。
閱讀本書,讀者需要對深度學習的知識有基本的了解,并具有中等水平的Python 編程技能。
作者簡介
霍布森.萊恩(Hobson Lane)擁有20年構(gòu)建自主系統(tǒng)的經(jīng)驗,這些系統(tǒng)能夠代表人類做出重要決策。Hobson在Talentpair訓練機器完成簡歷的閱讀和理解,以減少招聘者產(chǎn)生的偏見。在Aira,他幫助構(gòu)建了第一個聊天機器人,為視障人士描述視覺世界。他是Keras、scikit-learn、PyBrain、PUGNLP和ChatterBot等開源項目的積極貢獻者。他目前正在從事完全公益的開放科學研究和教育項目,包括構(gòu)建一個開放源碼的認知助手。他在AIAA、PyCon、PAIS和IEEE上發(fā)表了多篇論文和演講,并獲得了機器人和自動化領(lǐng)域的多項專利。
科爾.霍華德(Cole Howard)是一位機器學習工程師、NLP實踐者和作家。他一生都在尋找模式,并在人工神經(jīng)網(wǎng)絡(luò)的世界里找到了自己真正的家。他開發(fā)了大型電子商務(wù)推薦引擎和面向超維機器智能系統(tǒng)(深度學習神經(jīng)網(wǎng)絡(luò))的最先進的神經(jīng)網(wǎng)絡(luò),這些系統(tǒng)在Kaggle競賽中名列前茅。他曾在Open Source Bridge和Hack University 大會上發(fā)表演講,介紹卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)及其在自然語言處理中的作用。
漢納斯.馬克斯.哈普克(Hannes Max Hapke)是從一位電氣工程師轉(zhuǎn)行成為機器學習工程師的。他在高中研究如何在微控制器上計算神經(jīng)網(wǎng)絡(luò)時,對神經(jīng)網(wǎng)絡(luò)產(chǎn)生了濃厚的興趣。Hannes喜歡自動化軟件開發(fā)和機器學習流水線。他與合作者共同開發(fā)了面向招聘、能源和醫(yī)療應(yīng)用的深度學習模型和機器學習流水線。Hannes在包括OSCON、Open Source Bridge和Hack University在內(nèi)的各種會議上發(fā)表演講介紹機器學習。
譯者簡介
史亮 小米NLP高級軟件工程師,本科畢業(yè)于武漢大學,后保送中科院計算所碩博連讀,獲得博士學位。目前主要負責小米MiNLP平臺的研發(fā)工作。
魯驍 小米NLP高級軟件工程師,本科、碩士畢業(yè)于華中科技大學,博士畢業(yè)于中科院計算所。目前主要從事大規(guī)模文本分類、內(nèi)容過濾、人機對話等方向的研發(fā)工作。
唐可欣 小米NLP軟件工程師,本科畢業(yè)于西安電子科技大學,碩士畢業(yè)于法國巴黎高科電信學院。主要從事語言模型、意圖分析、情感分析等方向的研發(fā)工作。
王斌 小米AI實驗室主任、NLP首席科學家,前中科院博導、研究員,中國科學院大學教授。譯有《信息檢索導論》《大數(shù)據(jù):互聯(lián)網(wǎng)大規(guī)模數(shù)據(jù)挖掘與分布式處理》《機器學習實戰(zhàn)》等書籍。
目 錄
第 一部分 處理文本的機器
第 1章 NLP概述 3
1.1 自然語言與編程語言 3
1.2 神奇的魔法 4
1.2.1 會交談的機器 5
1.2.2 NLP中的數(shù)學 5
1.3 實際應(yīng)用 7
1.4 計算機“眼”中的語言 8
1.4.1 鎖的語言(正則表達式) 9
1.4.2 正則表達式 9
1.4.3 一個簡單的聊天機器人 11
1.4.4 另一種方法 14
1.5 超空間簡述 17
1.6 詞序和語法 19
1.7 聊天機器人的自然語言流水線 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 點積 37
2.2.2 度量詞袋之間的重合度 37
2.2.3 標點符號的處理 38
2.2.4 將詞匯表擴展到n-gram 43
2.2.5 詞匯表歸一化 48
2.3 情感 55
2.3.1 VADER:一個基于規(guī)則的情感分析器 56
2.3.2 樸素貝葉斯 58
2.4 小結(jié) 61
第3章 詞中的數(shù)學 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 思想實驗 90
4.1.4 一個主題評分算法 94
4.1.5 一個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 基于截斷的SVD的短消息語義分析 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個LdiA主題 125
4.6 距離和相似度 127
4.7 反饋及改進 129
4.8 主題向量的威力 132
4.8.1 語義搜索 133
4.8.2 改進 135
4.9 小結(jié) 135
第二部分 深度學習(神經(jīng)網(wǎng)絡(luò))
第5章 神經(jīng)網(wǎng)絡(luò)初步(感知機與反向傳播) 139
5.1 神經(jīng)網(wǎng)絡(luò)的組成 140
5.1.1 感知機 140
5.1.2 數(shù)字感知機 141
5.1.3 認識偏置 142
5.1.4 誤差曲面 153
5.1.5 不同類型的誤差曲面 154
5.1.6 多種梯度下降算法 155
5.1.7 Keras:用Python實現(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 如何計算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計算文檔相似度 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 學習 199
7.4 狹窄的窗口 199
7.4.1 Keras實現(xià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 開始學習(訓練) 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 隨時間反向傳播算法 221
8.1.2 不同時刻的權(quán)重更新 223
8.1.3 簡要回顧 225
8.1.4 難點 225
8.1.5 利用Keras實現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò) 226
8.2 整合各個部分 230
8.3 自我學習 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章 改進記憶力:長短期記憶網(wǎng)絡(luò)(LSTM) 239
9.1 長短期記憶(LSTM) 240
9.1.1 隨時間反向傳播 247
9.1.2 模型的使用 250
9.1.3 臟數(shù)據(jù) 251
9.1.4 “未知”詞條的處理 254
9.1.5 字符級建模 255
9.1.6 生成聊天文字 260
9.1.7 進一步生成文本 262
9.1.8 文本生成的問題:內(nèi)容不受控 269
9.1.9 其他記憶機制 269
9.1.10 更深的網(wǎng)絡(luò) 270
9.2 小結(jié) 271
第 10章 序列到序列建模和注意力機制 272
10.1 編碼-解碼架構(gòu) 272
10.1.1 解碼思想 273
10.1.2 似曾相識? 275
10.1.3 序列到序列對話 276
10.1.4 回顧LSTM 277
10.2 組裝一個序列到序列的流水線 278
10.2.1 為序列到序列訓練準備數(shù)據(jù)集 278
10.2.2 Keras中的序列到序列模型 279
10.2.3 序列編碼器 280
10.2.4 思想解碼器 281
10.2.5 組裝一個序列到序列網(wǎng)絡(luò) 282
10.3 訓練序列到序列網(wǎng)絡(luò) 282
10.4 使用序列到序列網(wǎng)絡(luò)構(gòu)建一個聊天機器人 284
10.4.1 為訓練準備語料庫 285
10.4.2 建立字符字典 286
10.4.3 生成獨熱編碼訓練集 286
10.4.4 訓練序列到序列聊天機器人 287
10.4.5 組裝序列生成模型 288
10.4.6 預(yù)測輸出序列 288
10.4.7 生成回復 289
10.4.8 與聊天機器人交談 290
10.5 增強 290
10.5.1 使用裝桶法降低訓練復雜度 290
10.5.2 注意力機制 291
10.6 實際應(yīng)用 292
10.7 小結(jié) 294
第三部分 進入現(xiàn)實世界(現(xiàn)實中的NLP挑戰(zhàn))
第 11章 信息提取(命名實體識別與問答系統(tǒng)) 297
11.1 命名實體與關(guān)系 297
11.1.1 知識庫 298
11.1.2 信息提取 300
11.2 正則模式 300
11.2.1 正則表達式 301
11.2.2 把信息提取當作機器學習里的特征提取任務(wù) 302
11.3 值得提取的信息 303
11.3.1 提取GPS位置 303
11.3.2 提取日期 304
11.4 提取人物關(guān)系(事物關(guān)系) 309
11.4.1 詞性標注 309
11.4.2 實體名稱標準化 313
11.4.3 實體關(guān)系標準化和提取 314
11.4.4 單詞模式 314
11.4.5 文本分割 314
11.4.6 為什么split('.! ')函數(shù)不管用 316
11.4.7 使用正則表達式進行斷句 316
11.5 現(xiàn)實世界的信息提取 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的模式匹配聊天機器人 328
12.2.2 模式匹配的網(wǎng)絡(luò)視圖 334
12.3 知識方法 334
12.4 檢索(搜索)方法 336
12.4.1 上下文挑戰(zhàn) 336
12.4.2 基于示例檢索的聊天機器人 338
12.4.3 基于搜索的聊天機器人 341
12.5 生成式方法 343
12.5.1 聊聊NLPIA 343
12.5.2 每種方法的利弊 345
12.6 四輪驅(qū)動 345
12.7 設(shè)計過程 347
12.8 技巧 349
12.8.1 用帶有可預(yù)測答案的問題提問 349
12.8.2 要有趣 350
12.8.3 當其他所有方法都失敗時,搜索 350
12.8.4 變得受歡迎 350
12.8.5 成為連接器 351
12.8.6 變得有情感 351
12.9 現(xiàn)實世界 351
12.10 小結(jié) 352
第 13章 可擴展性(優(yōu)化、并行化和批處理) 353
13.1 太多(數(shù)據(jù))未必是好事 353
13.2 優(yōu)化NLP算法 354
13.2.1 索引 354
13.2.2 高級索引 355
13.2.3 基于Annoy的高級索引 357
13.2.4 究竟為什么要使用近似索引 361
13.2.5 索引變通方法:離散化 362
13.3 常數(shù)級內(nèi)存算法 363
13.3.1 gensim 363
13.3.2 圖計算 363
13.4 并行化NLP計算 364
13.4.1 在GPU上訓練NLP模型 364
13.4.2 租與買 365
13.4.3 GPU租賃選擇 366
13.4.4 張量處理單元TPU 367
13.5 減少模型訓練期間的內(nèi)存占用 367
13.6 使用TensorBoard了解模型 369
13.7 小結(jié) 372
附錄A 本書配套的NLP工具 373
附錄B 有趣的Python和正則表達式 380
附錄C 向量和矩陣(線性代數(shù)基礎(chǔ)) 385
附錄D 機器學習常見工具與技術(shù) 391
附錄E 設(shè)置亞馬遜云服務(wù)(AWS)上的GPU 403
附錄F 局部敏感哈希 415
資源 421
詞匯表 428