TensorFlow 與自然語言處理應用

李孟全

立即出貨

買這商品的人也買了...

相關主題

商品描述

自然語言處理(NLP)是電腦科學、人工智能、語言學關註電腦和人類(自然)語言之間的相互作用的領域。自然語言處理是機器學習的應用之一,用於分析、理解和生成自然語言,它與人機交互有關,最終實現人與電腦之間更好的交流。 本書分為12章,內容包括自然語言處理基礎、深度學習基礎、TensorFlow、詞嵌入(Word Embedding)、捲積神經網絡(CNN)與句子分類、循環神經網絡(RNN)、長短期記憶(LSTM)、利用LSTM實現圖像字幕自動生成、情感分析、機器翻譯及智能問答系統。 本書適合TensorFlow自然語言處理技術的初學者、NLP應用開發人員、NLP研究人員,也適合高等院校和培訓學校相關專業的師生教學參考。

作者簡介

李孟全,中國社會科學院研究生院碩士。十多年IT從業經歷,先後從事過程序員、項目負責人、部門負責人等崗位。長期關注人工智能領域,在機器學習、深度學習和NLP領域有一定的積累。

目錄大綱

目 錄

第1章 自然語言處理基礎 1
1.1 認識自然語言處理 2
1.2 自然語言處理方面的任務 2
1.3 第一階段:偏理論的理性主義 4
1.4 第二階段:偏實踐應用的經驗主義 5
1.5 第三階段:深度學習階段 7
1.6 NLP中深度學習的局限性 9
1.7 NLP的應用場景 10
1.8 NLP的發展前景 13
1.9 總結 14
第2章 深度學習基礎 15
2.1 深度學習介紹 15
2.2 深度學習演變簡述 16
2.2.1 深度學習早期 16
2.2.2 深度學習的發展 17
2.2.3 深度學習的爆發 17
2.3 神經網路介紹 18
2.4 神經網路的基本結構 19
2.5 兩層神經網路(多層感知器) 22
2.5.1 簡述 22
2.5.2 兩層神經網路結構 22
2.6 多層神經網路(深度學習) 23
2.6.1 簡述 23
2.6.2 多層神經網路結構 24
2.7 編碼器-解碼器網路 24
2.8 隨機梯度下降 25
2.9 反向傳播 27
2.10 總結 31
第3章 TensorFlow 32
3.1 TensorFlow概念解讀 32
3.2 TensorFlow主要特徵 33
3.2.1 自動求微分 33
3.2.2 多語言支援 33
3.2.3 高度的靈活性 34
3.2.4 真正的可攜性 34
3.2.5 將科研和產品聯繫在一起 34
3.2.6 性能最優化 34
3.3 TensorFlow安裝 34
3.4 TensorFlow計算圖 40
3.5 TensorFlow張量和模型會話 42
3.5.1 張量 42
3.5.2 會話 43
3.6 TensorFlow工作原理 43
3.7 通過一個示例來認識TensorFlow 45
3.8 TensorFlow用戶端 47
3.9 TensorFlow中常見元素解讀 49
3.9.1 在TensorFlow中定義輸入 50
3.9.2 在TensorFlow中定義變數 56
3.9.3 定義TensorFlow輸出 57
3.9.4定義TensorFlow運算或操作 58
3.10 變數作用域機制 68
3.10.1 基本原理 68
3.10.2 通過示例解讀 69
3.11 實現一個神經網路 71
3.11.1 資料準備 71
3.11.2 定義TensorFlow計算圖 71
3.11.3 運行神經網路 73
3.12 總結 75
第4章 詞嵌入 77
4.1 分散式表示 78
4.1.1 分散式表示的直觀認識 78
4.1.2 分散式表示解讀 78
4.2 Word2vec模型(以Skip-Gram為例) 84
4.2.1 直觀認識Word2vec 85
4.2.2 定義任務 85
4.2.3 從原始文本創建結構化資料 85
4.2.4 定義詞嵌入層和神經網路 86
4.2.5 整合 87
4.2.6 定義損失函數 89
4.2.7 利用TensorFlow實現Skip-Gram模型 93
4.3原始Skip-Gram模型和改進Skip-Gram模型對比分析 96
4.3.1 原始的Skip-Gram演算法的實現 97
4.3.2 將原始Skip-Gram與改進後的Skip-Gram進行比較 98
4.4 CBOW模型 98
4.4.1 CBOW模型簡述 98
4.4.2 利用TensorFlow實現CBOW 演算法 100
4.5 Skip-Gram和 CBOW對比 101
4.5.1 Skip-Gram和CBOW模型結構分析 101
4.5.2 代碼層面對比兩模型性能 102
4.5.3 Skip-Gram和CBOW模型孰優 104
4.6 詞嵌入演算法的擴展 105
4.6.1 使用Unigram分佈進行負採樣 105
4.6.2 降採樣 107
4.6.3 CBOW 和其擴展類型比較 107
4.7 結構化Skip-Gram和連續視窗模型 108
4.7.1 結構化Skip-Gram演算法 108
4.7.2 連續視窗模型 110
4.8 GloVe模型 111
4.8.1 共現矩陣 112
4.8.2 使用GloVe模型訓練詞向量 112
4.8.3 GloVe模型實現 113
4.9 使用Word2Vec進行文檔分類 114
4.9.1 資料集 115
4.9.2 使用詞向量對文檔進行分類 115
4.9.3 小結 119
4.10 總結 120
第5章 卷積神經網路與句子分類 121
5.1 認識卷積神經網路 121
5.1.1 卷積神經網路的歷史演變 121
5.1.2 卷積神經網路結構簡述 122
5.2 輸入層 125
5.3 卷積運算層 126
5.3.1 標準卷積 126
5.3.2 帶步幅的卷積 127
5.3.3 帶填充的卷積 127
5.3.4 轉置卷積 128
5.3.5 參數共用機制 129
5.4 啟動函數 131
5.4.1 常見啟動函數及選擇 131
5.4.2 各個非線性啟動函數對比分析 132
5.5 池化層 134
5.5.1 理解池化 134
5.5.2 池化作用 135
5.5.3 最大池化 135
5.5.4 平均池化 136
5.6 全連接層 136
5.7 整合各層並使用反向傳播進行訓練 137
5.8 常見經典卷積神經網路 138
5.8.1 AlexNet 138
5.8.2 VGGNet 143
5.8.3 Google Inception Net 146
5.8.4 ResNet網路 149
5.9 利用CNN對MNIST資料集進行圖片分類 150
5.9.1 資料樣本 151
5.9.2 實現CNN 151
5.9.3 分析CNN產生的預測結果 153
5.10 利用CNN進行句子分類 154
5.10.1 CNN結構部分 154
5.10.2 池化運算 157
5.10.3 利用CNN實現句子分類 158
5.11 總結 160
第6章 迴圈神經網路 161
6.1 計算圖及其展開 162
6.2 RNN解讀 163
6.2.1 序列資料模型 163
6.2.2 數學層面簡要解讀RNN 165
6.3 通過時間的反向傳播演算法 166
6.3.1 反向傳播工作原理 166
6.3.2 直接使用反向傳播的局限性 167
6.3.3 通過反向傳播訓練RNN 168
6.3.4 截斷BPTT 168
6.3.5 BPTT的局限性——梯度消失和梯度爆炸 168
6.4 RNN的應用類型 170
6.4.1 一對一的RNN 170
6.4.2 一對多的RNN 170
6.4.3 多對一的RNN 171
6.4.4 多對多的RNN 171
6.5 利用RNN生成文本 172
6.5.1 定義超參數 172
6.5.2 隨著時間的推移展開截斷BPTT的輸入 173
6.5.3 定義驗證資料集 173
6.5.4 定義權重值和偏差 174
6.5.5 定義狀態永久變數 174
6.5.6 使用展開的輸入計算隱藏狀態和輸出 174
6.5.7 計算損失 175
6.5.8 在新文本片段的開頭重置狀態 175
6.5.9 計算驗證輸出 176
6.5.10 計算梯度和優化 176
6.6 輸出新生成的文本片段 176
6.7 評估RNN的文本結果輸出 177
6.8 困惑度——文本生成結果品質的度量 178
6.9 具有上下文特徵的迴圈神經網路——RNN-CF 179
6.9.1 RNN-CF的技術說明 180
6.9.2 RNN-CF的實現 181
6.9.3 定義RNN-CF超參數 181
6.9.4 定義輸入和輸出占位符 181
6.9.5 定義RNN-CF的權重值 182
6.9.6 用於維護隱藏層和上下文狀態的變數和操作 183
6.9.7 計算輸出 184
6.9.8計算損失 185
6.9.9 計算驗證輸出 185
6.9.10 計算測試輸出 186
6.9.11 計算梯度和優化 186
6.10 使用RNN-CF生成的文本 186
6.11 總結 188
第7章 長短期記憶 190
7.1 LSTM簡述 191
7.2 LSTM工作原理詳解 192
7.2.1 梯度資訊如何無損失傳遞 194
7.2.2 將資訊裝載入長時記憶細胞 194
7.2.3 更新細胞狀態可能產生的問題及解決方案 196
7.2.4 LSTM模型輸出 199
7.3 LSTM與標準RNN的區別 200
7.4 LSTM如何避免梯度消失和梯度爆炸問題 201
7.5 優化LSTM 203
7.5.1 貪婪採樣 203
7.5.2 集束搜索 204
7.5.3 使用詞向量 205
7.5.4 雙向LSTM 206
7.6 LSTM的其他變體 207
7.6.1 窺視孔連接 207
7.6.2 門控迴圈單元 208
7.7 總結 210
第8章 利用LSTM自動生成文本 211
8.1 文本到文本的生成 212
8.1.1 文本摘要 212
8.1.2 句子壓縮與融合 213
8.1.3 文本復述生成 213
8.2 意義到文本的生成 214
8.2.1 基於深層語法的文本生成 214
8.2.2 基於同步文法的文本生成 215
8.3 資料到文本的生成 216
8.4 文本自動生成前的資料準備 218
8.4.1 資料集 218
8.4.2 預處理資料 220
8.5 實現LSTM 220
8.5.1 定義超參數 221
8.5.2 定義參數 221
8.5.3 定義LSTM細胞及其操作 223
8.5.4 定義輸入和標籤 223
8.5.5 定義處理序列資料所需的序列計算 224
8.5.6 定義優化器 225
8.5.7 隨著時間的推移衰減學習率 225
8.5.8 進行預測 226
8.5.9 計算困惑度(損失) 227
8.5.10 重置狀態 227
8.5.11 貪婪採樣打破重複性 227
8.5.12 生成新文本 227
8.5.13 示例生成的文本 228
8.6 標準LSTM與帶有窺視孔連接和GRU的LSTM的比較 229
8.6.1 標準LSTM 229
8.6.2 門控迴圈單元 231
8.6.3 帶窺視孔連接的LSTM 233
8.6.4 隨著時間的推移訓練和驗證困惑度 235
8.7 優化LSTM——集束搜索 236
8.7.1 實現集束搜索 236
8.7.2 使用集束搜索生成文本的示例 238
8.8 改進LSTM——使用詞而不是n-gram生成文本 239
8.8.1 維度問題 239
8.8.2 完善Word2vec 239
8.8.3 使用Word2vec生成文本 240
8.8.4 使用LSTM-Word2vec和集束搜索生成文本的示例 241
8.8.5 困惑度隨著時間推移的變化情況 242
8.9 使用TensorFlow RNN API 242
8.10 總結 246
第9章 利用LSTM實現圖像字幕自動生成 247
9.1 簡要介紹 248
9.2 發展背景 248
9.3 利用深度學習框架從圖像中生成字幕 249
9.3.1 End-to-End 框架 249
9.3.2 下拉式列示方塊架 251
9.3.3 其他框架 252
9.4 評估指標和基準 253
9.5 近期研究 254
9.6 圖像字幕的產業佈局 255
9.7 詳解圖像字幕自動生成任務 255
9.7.1 認識資料集 255
9.7.2 用於圖像字幕自動生成的深度學習管道 257
9.7.3 使用CNN提取圖像特徵 259
9.7.4 使用VGG-16載入權重值並進行推理 260
9.7.5 學習詞向量 264
9.7.6 為LSTM模型準備字幕資料 265
9.7.7 生成LSTM的資料 266
9.7.8 定義LSTM 267
9.7.9 定量評估結果 270
9.7.10 為測試圖像集生成字幕 273
9.7.11 使用TensorFlow RNN API和預訓練的GloVe詞向量 276
9.8 總結 284
第10章 情感分析 286
10.1 認識情感分析 286
10.2 情感分析的問題 288
10.3 情感文檔分類 291
10.4 句子主觀性與情感分類 292
10.5 基於方面(Aspect)的情感分析 293
10.6 情感詞典生成 293
10.7 意見摘要 294
10.8 比較觀點分析 294
10.9 意見搜索 295
10.10 垃圾評論檢測 295
10.10.1 垃圾評論概述 295
10.10.2 垃圾評論的類型 296
10.10.3 可觀察到的資訊 297
10.10.4 資料樣本 298
10.10.5 垃圾評論檢測方法 299
10.11 評論的品質 302
10.12 利用TensorFlow進行中文情感分析實現 304
10.12.1 訓練語料 304
10.12.2 分詞和切分詞 304
10.12.3 索引長度標準化 305
10.12.4 反向切分詞 305
10.12.5 準備詞向量矩陣 306
10.12.6 填充和截短 306
10.12.7 構建模型 306
10.12.8 結論 307
10.13 總結 308
第11章 機器翻譯 310
11.1 機器翻譯簡介 311
11.2 基於規則的翻譯 312
11.2.1 基於轉換的機器翻譯 312
11.2.2 語際機器翻譯 314
11.2.3 基於字典的機器翻譯 317
11.3 統計機器翻譯 318
11.3.1 統計機器翻譯的基礎 318
11.3.2 基於詞的翻譯 319
11.3.3 基於短語的翻譯 319
11.3.4 基於句法的翻譯 320
11.3.5 基於分層短語的翻譯 321
11.3.6 統計機器翻譯的優勢與不足 321
11.4 神經網路機器翻譯 321
11.4.1 發展背景 321
11.4.2 神經網路機器翻譯的特性 323
11.4.3 通過例子來認識神經網路機器翻譯(NMT)模型的結構 323
11.4.4 神經網路機器翻譯(NMT)模型結構詳解 323
11.5 神經網路機器翻譯(NMT)系統的前期準備工作 326
11.5.1 訓練階段 326
11.5.2 反轉源語句 327
11.5.3 測試階段 328
11.6 BLEU評分——評估機器翻譯系統 329
11.6.1 BLEU簡述 329
11.6.2 BLEU度量 330
11.6.3 BLEU的調整和懲罰因數 332
11.6.4 BLEU得分總結 333
11.7 完整實現神經網路機器翻譯——德語到英語翻譯 333
11.7.1 關於樣本資料 334
11.7.2 預處理資料 334
11.7.3 學習詞向量 335
11.7.4 定義編碼器和解碼器 336
11.7.5 定義端到端輸出計算 338
11.7.6 神經網路機器翻譯系統運行結果(部分)的展示 339
11.8 結合詞向量訓練神經網路機器翻譯系統 342
11.8.1 最大化資料集辭彙和預訓練詞向量之間的匹配 342
11.8.2 為詞嵌入層定義TensorFlow變數 344
11.9 優化神經網路機器翻譯系統 346
11.9.1 Teacher Forcing演算法 346
11.9.2 深度 LSTM 348
11.9.3 注意力模型 349
11.10 實現注意力機制 356
11.10.1 定義權重值 356
11.10.2 計算注意力 357
11.10.3含有注意力機制的神經網路機器翻譯的部分翻譯結果 358
11.11 視覺化源語句和目標語句的注意力 361
11.12 歷史性突破——BERT模型 362
11.12.1 BERT模型簡述 362
11.12.2 BERT模型結構 363
11.13 總結 364
第12章 智慧問答系統 366
12.1 概要 366
12.2 基於知識庫的問答 367
12.2.1 資訊抽取 367
12.2.2 語義分析模式 371
12.2.3 資訊抽取與語義分析小結 374
12.2.4 挑戰 374
12.3 機器理解中的深度學習 375
12.3.1 任務描述 375
12.3.2 基於特徵工程的機器理解方法 378
12.3.3 機器理解中的深度學習方法 381
12.4 利用TensorFlow實現問答任務 386
12.4.1 bAbI資料集 386
12.4.2 分析GloVe並處理未知權杖387
12.4.3 已知或未知的資料部分 388
12.4.4 定義超參數 390
12.4.5 神經網路結構部分 391
12.4.6 輸入部分 392
12.4.7 問題部分 392
12.4.8 情景記憶部分 392
12.4.9 注意力部分 393
12.4.10 答案模組 394
12.4.11 模型優化 395
12.4.12 訓練模型並分析預測 395
12.5 總結 397