內(nèi)容簡介
這是一部講解如何基于NLP技術和人機交互技術實現(xiàn)聊天機器人的著作。
兩位作者聊天機器人領域均有多年大型項目的實戰(zhàn)經(jīng)驗,這本書不僅講解了NLP和人機交互的核心技術,而且從技術、算法、實戰(zhàn)3個維度講解聊天機器人的原理、實現(xiàn)與工程實踐。
本書有3個特點:
前瞻性強,專注于NLP和人機交互的前沿技術,以及會話式AI技術在熱門場景中的工程實踐。
實戰(zhàn)性強,每章都提供實戰(zhàn)代碼,大部分代碼簡單修改后便可在實際場景中使用;數(shù)據(jù)集并非簡單構造,而是具有真實性。
對比性強,結合應用場景,對比不同技術的優(yōu)劣,既能指導讀者進行技術選型,又能加深讀者對不同技術的理解。
本書一共12章,分為三大部分:
第壹部分 基礎篇(第1-2章)
首先系統(tǒng)介紹了人機交互技術和聊天機器人技術的必備基礎,然后講解了深度學習工具的使用以及NLP開發(fā)環(huán)境的搭建
第二部分 算法篇(第3-8章)
這部分是核心內(nèi)容,主要講解中文自然語言處理的各種算法,包括分詞技術、數(shù)據(jù)預處理、詞向量技術、序列標注與中文 NER、文本深度學習、循環(huán)神經(jīng)網(wǎng)絡等。
第三部分 實戰(zhàn)篇(第9-12章)
主要講解了語言模型與對話生成、知識圖譜問答、自然語言推理、實體語義理解這4種人機交互方面的高階技術,涵蓋信息抽取、槽位填充、語義理解、聊天機器人、問答系統(tǒng)、多輪對話技術等知識點。
前言
第1章 人機交互導論 1
1.1 圖靈測試 1
1.1.1 圖靈測試相關背景 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 任務型機器人 13
1.4.3 面向FAQ的問答機器人 13
1.4.4 面向KB的問答機器人 14
1.5 本章小結 14
第2章 人機對話前置技術 15
2.1 深度學習框架 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 本章小結 29
第3章 中文分詞技術 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 準確率評測 47
3.6.1 混淆矩陣 48
3.6.2 中文分詞中的P、R、F1計算 49
3.7 本章小結 51
第4章 數(shù)據(jù)預處理 52
4.1 數(shù)據(jù)集介紹 52
4.2 數(shù)據(jù)預處理 53
4.3 TorchText預處理 55
4.3.1 torchtext.data 55
4.3.2 torchtext.datasets 56
4.3.3 構建詞表 57
4.3.4 構建迭代器 58
4.4 本章小結 60
第5章 詞向量實戰(zhàn) 61
5.1 詞向量的由來 61
5.1.1 one-hot模型 61
5.1.2 神經(jīng)網(wǎng)絡詞向量模型 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 預處理模塊 74
5.4.2 模型框架 78
5.4.3 模型訓練 79
5.4.4 模型評估 82
5.5 glove實戰(zhàn) 83
5.5.1 預處理模塊 83
5.5.2 模型框架 85
5.5.3 模型訓練 86
5.5.4 模型評估 87
5.6 本章小結 87
第6章 序列標注與中文NER實戰(zhàn) 88
6.1 序列標注任務 88
6.1.1 任務定義及標簽體系 88
6.1.2 任務特點及對比 90
6.1.3 任務應用場景 92
6.2 序列標注的技術方案 94
6.2.1 隱馬爾可夫模型 94
6.2.2 條件隨機場 94
6.2.3 循環(huán)神經(jīng)網(wǎng)絡 96
6.2.4 Bert 97
6.3 序列標注實戰(zhàn) 99
6.3.1 中文NER數(shù)據(jù)集 99
6.3.2 數(shù)據(jù)預處理 100
6.3.3 模型訓練框架 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 本章小結 112
第7章 文本分類技術 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)絡結構解析 118
7.2.2 實戰(zhàn)案例之新聞分類 121
7.3 FastText 129
7.3.1 模型架構 129
7.3.2 層次softmax 130
7.3.3 n-gram子詞特征 130
7.3.4 安裝與實例解析 131
7.4 后臺運行 134
7.5 本章小結 134
第8章 循環(huán)神經(jīng)網(wǎng)絡 135
8.1 RNN 135
8.1.1 序列數(shù)據(jù) 135
8.1.2 神經(jīng)網(wǎng)絡需要記憶 136
8.1.3 RNN基本概念 136
8.1.4 RNN的輸入輸出類型 138
8.1.5 雙向循環(huán)神經(jīng)網(wǎng)絡 139
8.1.6 深層循環(huán)神經(jīng)網(wǎng)絡 140
8.1.7 RNN的問題 141
8.1.8 RNN PyTorch實現(xiàn) 141
8.2 LSTM 143
8.2.1 LSTM網(wǎng)絡結構解析 143
8.2.2 LSTM PyTorch實現(xiàn) 147
8.3 GRU 149
8.3.1 GRU網(wǎng)絡結構解析 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ù)預處理 156
8.6.2 模型結構 158
8.6.3 模型訓練 158
8.6.4 詩歌生成 159
8.7 本章小結 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結構 174
9.5.2 預訓練任務 175
9.6 聊天機器人實戰(zhàn) 177
9.6.1 數(shù)據(jù)介紹和數(shù)據(jù)預處理 177
9.6.2 實現(xiàn)seq2seq模型 179
9.7 本章小結 182
第10章 知識圖譜問答 183
10.1 知識圖譜概述 184
10.2 關系抽取 186
10.3 人物間關系識別 189
10.3.1 任務分析 189
10.3.2 模型設計 190
10.3.3 代碼實現(xiàn)及優(yōu)化 191
10.4 圖譜構建 196
10.4.1 Neo4J簡介 197
10.4.2 Neo4J創(chuàng)建圖譜示例 198
10.5 基于深度學習的知識圖譜問答模塊 203
10.5.1 數(shù)據(jù)構造 205
10.5.2 查詢目標檢測 206
10.5.3 查詢條件抽取 207
10.5.4 基于知識圖譜查詢模塊實現(xiàn) 210
10.6 本章小結 212
第11章 自然語言推理 213
11.1 自然語言推理介紹 213
11.2 自然語言推理常見模型 215
11.2.1 SIAMESE網(wǎng)絡 215
11.2.2 BiMPM網(wǎng)絡 217
11.2.3 Bert網(wǎng)絡 221
11.3 多輪對話中的答案導向問題 223
11.4 答案導向問題的實戰(zhàn) 224
11.4.1 數(shù)據(jù)構造 224
11.4.2 孿生網(wǎng)絡實戰(zhàn) 226
11.4.3 BiMPM網(wǎng)絡實戰(zhàn) 232
11.4.4 Bert網(wǎng)絡實戰(zhàn) 236
11.4.5 模型結果比較 237
11.5 本章小結 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 知識驅動方法與數(shù)據(jù)驅動方法 246
12.3 實體語義理解的技術方案 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 本章小結 273