內(nèi)容簡介
這是一部講解如何基于NLP技術(shù)和人機交互技術(shù)實現(xiàn)聊天機器人的著作。
兩位作者聊天機器人領(lǐng)域均有多年大型項目的實戰(zhàn)經(jīng)驗,這本書不僅講解了NLP和人機交互的核心技術(shù),而且從技術(shù)、算法、實戰(zhàn)3個維度講解聊天機器人的原理、實現(xiàn)與工程實踐。
本書有3個特點:
前瞻性強,專注于NLP和人機交互的前沿技術(shù),以及會話式AI技術(shù)在熱門場景中的工程實踐。
實戰(zhàn)性強,每章都提供實戰(zhàn)代碼,大部分代碼簡單修改后便可在實際場景中使用;數(shù)據(jù)集并非簡單構(gòu)造,而是具有真實性。
對比性強,結(jié)合應(yīng)用場景,對比不同技術(shù)的優(yōu)劣,既能指導(dǎo)讀者進行技術(shù)選型,又能加深讀者對不同技術(shù)的理解。
本書一共12章,分為三大部分:
第壹部分 基礎(chǔ)篇(第1-2章)
首先系統(tǒng)介紹了人機交互技術(shù)和聊天機器人技術(shù)的必備基礎(chǔ),然后講解了深度學(xué)習(xí)工具的使用以及NLP開發(fā)環(huán)境的搭建
第二部分 算法篇(第3-8章)
這部分是核心內(nèi)容,主要講解中文自然語言處理的各種算法,包括分詞技術(shù)、數(shù)據(jù)預(yù)處理、詞向量技術(shù)、序列標(biāo)注與中文 NER、文本深度學(xué)習(xí)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。
第三部分 實戰(zhàn)篇(第9-12章)
主要講解了語言模型與對話生成、知識圖譜問答、自然語言推理、實體語義理解這4種人機交互方面的高階技術(shù),涵蓋信息抽取、槽位填充、語義理解、聊天機器人、問答系統(tǒng)、多輪對話技術(shù)等知識點。
前言
第1章 人機交互導(dǎo)論 1
1.1 圖靈測試 1
1.1.1 圖靈測試相關(guān)背景 1
1.1.2 圖靈測試的定義 2
1.1.3 圖靈測試引發(fā)的思考 3
1.2 專家系統(tǒng) 3
1.2.1 專家系統(tǒng)的定義 3
1.2.2 專家系統(tǒng)的框架 4
1.2.3 專家系統(tǒng)的發(fā)展 6
1.3 人機交互 6
1.3.1 人機交互簡介 6
1.3.2 人機交互模塊的發(fā)展 7
1.3.3 自然語言理解 9
1.3.4 對話管理 10
1.3.5 自然語言生成 10
1.4 機器人形態(tài) 11
1.4.1 聊天機器人 12
1.4.2 任務(wù)型機器人 13
1.4.3 面向FAQ的問答機器人 13
1.4.4 面向KB的問答機器人 14
1.5 本章小結(jié) 14
第2章 人機對話前置技術(shù) 15
2.1 深度學(xué)習(xí)框架 15
2.1.1 Theano 15
2.1.2 TensorFlow 16
2.1.3 Keras 17
2.1.4 PyTorch 17
2.2 搭建NLP開發(fā)環(huán)境 18
2.2.1 下載和安裝Anaconda 18
2.2.2 conda的使用 21
2.2.3 中文分詞工具——Jieba 22
2.2.4 PyTorch的下載與安裝 24
2.2.5 Jupyter Notebook遠程訪問 25
2.3 TorchText的安裝與介紹 26
2.4 本章小結(jié) 29
第3章 中文分詞技術(shù) 30
3.1 分詞的概念和分類 30
3.2 規(guī)則分詞 31
3.2.1 正向最大匹配 31
3.2.2 逆向最大匹配 32
3.2.3 雙向最大匹配 33
3.3 統(tǒng)計分詞 35
3.4 混合分詞 44
3.5 Jieba分詞 44
3.6 準(zhǔn)確率評測 47
3.6.1 混淆矩陣 48
3.6.2 中文分詞中的P、R、F1計算 49
3.7 本章小結(jié) 51
第4章 數(shù)據(jù)預(yù)處理 52
4.1 數(shù)據(jù)集介紹 52
4.2 數(shù)據(jù)預(yù)處理 53
4.3 TorchText預(yù)處理 55
4.3.1 torchtext.data 55
4.3.2 torchtext.datasets 56
4.3.3 構(gòu)建詞表 57
4.3.4 構(gòu)建迭代器 58
4.4 本章小結(jié) 60
第5章 詞向量實戰(zhàn) 61
5.1 詞向量的由來 61
5.1.1 one-hot模型 61
5.1.2 神經(jīng)網(wǎng)絡(luò)詞向量模型 63
5.2 word2vec 67
5.2.1 初探word2vec 67
5.2.2 深入CBOW模型 68
5.2.3 Skip-gram模型介紹 69
5.2.4 word2vec模型本質(zhì) 70
5.3 glove 71
5.3.1 初探glove 71
5.3.2 glove模型原理 72
5.4 word2vec實戰(zhàn) 74
5.4.1 預(yù)處理模塊 74
5.4.2 模型框架 78
5.4.3 模型訓(xùn)練 79
5.4.4 模型評估 82
5.5 glove實戰(zhàn) 83
5.5.1 預(yù)處理模塊 83
5.5.2 模型框架 85
5.5.3 模型訓(xùn)練 86
5.5.4 模型評估 87
5.6 本章小結(jié) 87
第6章 序列標(biāo)注與中文NER實戰(zhàn) 88
6.1 序列標(biāo)注任務(wù) 88
6.1.1 任務(wù)定義及標(biāo)簽體系 88
6.1.2 任務(wù)特點及對比 90
6.1.3 任務(wù)應(yīng)用場景 92
6.2 序列標(biāo)注的技術(shù)方案 94
6.2.1 隱馬爾可夫模型 94
6.2.2 條件隨機場 94
6.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò) 96
6.2.4 Bert 97
6.3 序列標(biāo)注實戰(zhàn) 99
6.3.1 中文NER數(shù)據(jù)集 99
6.3.2 數(shù)據(jù)預(yù)處理 100
6.3.3 模型訓(xùn)練框架 102
6.3.4 模型評估 103
6.4 BiLSTM 104
6.4.1 參數(shù)介紹 104
6.4.2 BiLSTM模型框架 104
6.4.3 模型效果評估 106
6.5 BiLSTM-CRF 107
6.5.1 參數(shù)介紹 107
6.5.2 BiLSTM-CRF模型框架 107
6.5.3 模型評價 112
6.6 本章小結(jié) 112
第7章 文本分類技術(shù) 113
7.1 TFIDF與樸素貝葉斯 113
7.1.1 TFIDF 113
7.1.2 樸素貝葉斯 115
7.1.3 實戰(zhàn)案例之新聞分類 116
7.2 TextCNN 118
7.2.1 TextCNN網(wǎng)絡(luò)結(jié)構(gòu)解析 118
7.2.2 實戰(zhàn)案例之新聞分類 121
7.3 FastText 129
7.3.1 模型架構(gòu) 129
7.3.2 層次softmax 130
7.3.3 n-gram子詞特征 130
7.3.4 安裝與實例解析 131
7.4 后臺運行 134
7.5 本章小結(jié) 134
第8章 循環(huán)神經(jīng)網(wǎng)絡(luò) 135
8.1 RNN 135
8.1.1 序列數(shù)據(jù) 135
8.1.2 神經(jīng)網(wǎng)絡(luò)需要記憶 136
8.1.3 RNN基本概念 136
8.1.4 RNN的輸入輸出類型 138
8.1.5 雙向循環(huán)神經(jīng)網(wǎng)絡(luò) 139
8.1.6 深層循環(huán)神經(jīng)網(wǎng)絡(luò) 140
8.1.7 RNN的問題 141
8.1.8 RNN PyTorch實現(xiàn) 141
8.2 LSTM 143
8.2.1 LSTM網(wǎng)絡(luò)結(jié)構(gòu)解析 143
8.2.2 LSTM PyTorch實現(xiàn) 147
8.3 GRU 149
8.3.1 GRU網(wǎng)絡(luò)結(jié)構(gòu)解析 149
8.3.2 GRU PyTorch實現(xiàn) 151
8.4 TextRNN 152
8.4.1 基本概念 152
8.4.2 實戰(zhàn)案例之新聞分類 153
8.5 TextRCNN 154
8.5.1 基本概念 154
8.5.2 實戰(zhàn)案例之新聞分類 155
8.6 實戰(zhàn)案例之詩歌生成 155
8.6.1 數(shù)據(jù)預(yù)處理 156
8.6.2 模型結(jié)構(gòu) 158
8.6.3 模型訓(xùn)練 158
8.6.4 詩歌生成 159
8.7 本章小結(jié) 161
第9章 語言模型與對話生成 162
9.1 自然語言生成介紹 162
9.2 序列生成模型 163
9.2.1 seq2seq的基本框架 164
9.2.2 Encoder-Decoder框架的缺點 165
9.3 經(jīng)典的seq2seq框架 166
9.3.1 基于RNN的seq2seq 166
9.3.2 基于CNN的seq2seq 167
9.4 Attention機制 169
9.4.1 序列模型RNN 169
9.4.2 Attention機制的原理 170
9.4.3 Self-Attention模型 171
9.4.4 Transfomer模型介紹 171
9.5 Bert——自然語言處理的新范式 173
9.5.1 Bert結(jié)構(gòu) 174
9.5.2 預(yù)訓(xùn)練任務(wù) 175
9.6 聊天機器人實戰(zhàn) 177
9.6.1 數(shù)據(jù)介紹和數(shù)據(jù)預(yù)處理 177
9.6.2 實現(xiàn)seq2seq模型 179
9.7 本章小結(jié) 182
第10章 知識圖譜問答 183
10.1 知識圖譜概述 184
10.2 關(guān)系抽取 186
10.3 人物間關(guān)系識別 189
10.3.1 任務(wù)分析 189
10.3.2 模型設(shè)計 190
10.3.3 代碼實現(xiàn)及優(yōu)化 191
10.4 圖譜構(gòu)建 196
10.4.1 Neo4J簡介 197
10.4.2 Neo4J創(chuàng)建圖譜示例 198
10.5 基于深度學(xué)習(xí)的知識圖譜問答模塊 203
10.5.1 數(shù)據(jù)構(gòu)造 205
10.5.2 查詢目標(biāo)檢測 206
10.5.3 查詢條件抽取 207
10.5.4 基于知識圖譜查詢模塊實現(xiàn) 210
10.6 本章小結(jié) 212
第11章 自然語言推理 213
11.1 自然語言推理介紹 213
11.2 自然語言推理常見模型 215
11.2.1 SIAMESE網(wǎng)絡(luò) 215
11.2.2 BiMPM網(wǎng)絡(luò) 217
11.2.3 Bert網(wǎng)絡(luò) 221
11.3 多輪對話中的答案導(dǎo)向問題 223
11.4 答案導(dǎo)向問題的實戰(zhàn) 224
11.4.1 數(shù)據(jù)構(gòu)造 224
11.4.2 孿生網(wǎng)絡(luò)實戰(zhàn) 226
11.4.3 BiMPM網(wǎng)絡(luò)實戰(zhàn) 232
11.4.4 Bert網(wǎng)絡(luò)實戰(zhàn) 236
11.4.5 模型結(jié)果比較 237
11.5 本章小結(jié) 238
第12章 實體語義理解 239
12.1 實體語義理解簡介 239
12.2 現(xiàn)有語義理解系統(tǒng)分析 242
12.2.1 Time-NLPY/Time-NLP/FNLP 242
12.2.2 HeidelTime 244
12.2.3 知識驅(qū)動方法與數(shù)據(jù)驅(qū)動方法 246
12.3 實體語義理解的技術(shù)方案 247
12.4 實體語義理解實戰(zhàn) 248
12.5 數(shù)值解析實戰(zhàn) 257
12.6 時間解析實戰(zhàn) 262
12.6.1 時間信息的中間表示 262
12.6.2 時長解析 263
12.6.3 日期和時間點 265
12.6.4 時間段 268
12.6.5 時間信息的推理計算 270
12.7 本章小結(jié) 273