總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電腦技術 自動化基礎理論
 
 
 
 
TensorFlow自然語言處理
 叢書名稱: 智能系統與技術叢書
 作  者: (澳)圖珊•加內格達拉
 出版單位: 機械工業
 出版日期: 2019.06
 進貨日期: 2019/8/17
 ISBN: 9787111629146
 開  本: 16 開    
 定  價: 743
 售  價: 594
  會 員 價: 545
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
編輯推薦:

深度學習應用所使用的大部分數據是由自然語言處理(NLP)提供的,而TensorFlow是目前比較重要的深度學習框架。面對當今巨量資料流程中眾多的非結構化資料,本書詳細講解如何將TensorFlow與NLP二者結合以提供有效的工具,以及如何將這些工具應用於具體的NLP任務。

本書首先介紹NLP和TensorFlow的基礎知識,之後講解如何使用Word2vec及其高級擴展,以便通過創建詞嵌入將詞序列轉換為深度學習演算法可用的向量。本書還介紹如何通過卷積神經網路(CNN)和遞迴神經網路(RNN)等經典深度學習演算法執行句子分類和語言生成等重要的NLP任務。你將學習如何在NLP任務中應用高性能的RNN模型(比如長短期記憶單元),還將認識神經機器翻譯,並實現一個神經機器翻譯器。

通過閱讀本書,你將學到:

NLP的核心概念和各種自然語言處理方法

使用TensorFlow函數創建神經網路以完成NLP任務

將海量資料處理成可用于深度學習應用的單詞表示

使用CNN和RNN執行句子分類和語言生成

使用的RNN(如長短期記憶)執行複雜的文本生成任務

從頭開始編寫一個真正的神經機器翻譯器

未來的NLP趨勢和創新


內容簡介:

第1章是對NLP的簡單介紹。該章將首先討論我們需要NLP的原因。接下來,將討論NLP中一些常見的子任務。之後,將討論NLP的兩個主要階段,即傳統階段和深度學習階段。通過研究如何使用傳統演算法解決語言建模任務,我們將瞭解傳統階段NLP的特點。然後,將討論深度學習階段,在這一階段中深度學習演算法被大量用於NLP。我們還將討論深度學習演算法的主要系列。最後,將討論一種最基本的深度學習演算法:全連接神經網路。該章結束時會提供一份路線圖,簡要介紹後面的內容。

第2章介紹PythonTensorFlow庫,這是我們實現解決方案的主要平臺。首先在TensorFlow中編寫一段代碼,執行一個簡單的計算,並討論從運行代碼到得到結果這一過程中到底發生了什麼。我們將詳細介紹TensorFlow的基礎組件。把Tensorflow比作豐富的餐廳,瞭解如何完成訂單,以便進一步加強對TensorFlow的理解。稍後,將討論TensorFlow的更多技術細節,例如資料結構和操作(主要與神經網路相關)。最後,我們將實現一個全連接的神經網路來識別手寫數位。這將幫助我們瞭解如何使用TensorFlow來實現端到端解決方案。

第3章首先討論如何用TensorFlow解決NLP任務。在該章中,我們將討論如何用神經網路學習單詞向量或單詞表示。單詞向量也稱為詞嵌入。單詞向量是單詞的數字表示,相似單詞有相似值,不同單詞有不同值。首先,將討論實現這一目標的幾種傳統方法,包括使用稱為WordNet的大型人工構建知識庫。然後,將討論基於現代神經網路的方法,稱為Word2vec,它在沒有任何人為干預的情況下學習單詞向量。我們將通過一個實例來瞭解Word2vec的機制。接著,將討論用於實現此目的的兩種演算法變體:skip-gram和連續詞袋(CBOW)模型。我們將討論演算法的細節,以及如何在TensorFlow中實現它們。

第4章介紹與單詞向量相關的更高級方法。首先,會比較skip-gram和CBOW,討論其中哪一種有明顯優勢。接下來,將討論可用於提高Word2vec演算法性能的幾項改進。然後,將討論一種更新、更強大的詞嵌入學習演算法:GloVe(全域向量)演算法。最後,將在文檔分類任務中實際觀察單詞向量。在該練習中,我們將看到單詞向量十分強大,足以表示文檔所屬的主題(例如,娛樂和運動)。

第5章討論卷積神經網路(CNN),它是擅長處理諸如圖像或句子這樣的空間資料的神經網路家族。首先,討論如何處理資料以及處理資料時涉及哪種操作,以便對CNN有較深的理解。接下來,深入研究CNN計算中涉及的每個操作,以瞭解CNN背後的數學原理。*後,介紹兩個練習。*個練習使用CNN對手寫數位圖像進行分類,我們將看到CNN能夠在此任務上很快達到較高的準確率。接下來,我們將探討如何使用CNN對句子進行分類。特別地,我們要求CNN預測一個句子是否與物件、人物、位置等相關。

第6章介紹遞迴神經網路。遞迴神經網路(RNN)是一個可以類比資料序列的強大的神經網路家族。首先討論RNN背後的數學原理以及在學習期間隨時間更新RNN的更新規則。然後,討論RNN的不同變體及其應用(例如,一對一RNN和一對多RNN)。*後,用RNN執行文本生成任務的練習。我們用童話故事訓練RNN,然後要求RNN生成一個新故事。我們將看到在持久的長期記憶方面RNN表現不佳。*後,討論更高級的RNN變體,即RNN-CF,它能夠保持更長時間的記憶。

第7章介紹長短期記憶網路。RNN在保持長期記憶方面效果較差,這使我們需要探索能在更長時間內記住資訊的更強大技術。我們將在該章討論一種這樣的技術:長短期記憶網路(LSTM)。LSTM功能更強大,並且在許多時間序列任務中表現得優於其他序列模型。首先通過一個例子,研究潛在的數學原理和LSTM的更新規則,以說明每個計算的重要性。然後,將瞭解為什麼LSTM能夠更長時間地保持記憶。接下來,將討論如何進一步提高LSTM預測能力。最後,將討論具有更複雜結構的幾種LSTM變體(具有窺孔連接的LSTM),以及簡化LSTM門控迴圈單元(GRU)的方法。

第8章介紹LSTM的應用:文本生成。該章廣泛評估LSTM在文本生成任務中的表現。我們將定性和定量地衡量LSTM產生的文本的好壞程度,還將比較LSTM、窺孔連接LSTM和GRU。最後,將介紹如何將詞嵌入應用到模型中來改進LSTM生成的文本。

第9章轉到對多模態資料(即圖像和文本)的處理。在該章中,我們將研究如何自動生成給定圖像的描述。這涉及將前饋模型(即CNN)與詞嵌入層及順序模型(即LSTM)組合,形成一個端到端的機器學習流程。

第10章介紹有關神經機器翻譯(NMT)模型的應用。機器翻譯指的是將句子或短語從來源語言翻譯成目的語言。首先討論機器翻譯是什麼並簡單介紹機器翻譯歷史。然後,將詳細討論現代神經機器翻譯模型的體系結構,包括訓練和預測的流程。接下來,將瞭解如何從頭開始實現NMT系統。*後,會探索改進標準NMT系統的方法。

第11章重點介紹NLP的現狀和未來趨勢。我們將討論前面提到的系統的相關發現。該章將涵蓋大部分令人興奮的創新,並讓你直觀地感受其中的一些技術。

附錄向讀者介紹各種數學資料結構(例如,矩陣)和操作(例如,矩陣的逆),還將討論概率中的幾個重要概念。然後將介紹Keras,它是在底層使用TensorFlow的高級庫。Keras通過隱藏TensorFlow中的一些有難度的細節使得神經網路的實現更簡單。具體而言,通過使用Keras實現CNN來介紹如何使用Keras。接下來,將討論如何使用TensorFlow中的seq2seq庫來實現一個神經機器翻譯系統,所使用的代碼比在第11章中使用的代碼少得多。最後,將向你介紹如何使用TensorBoard視覺化詞嵌入的指南。TensorBoard是TensorFlow附帶的便捷視覺化工具,可用於視覺化和監視TensorFlow用戶端中的各種變數。


作者簡介:

圖珊·加內格達拉(Thushan Ganegedara)目前是澳大利亞悉尼大學第三年的博士生。他專注於機器學習和深度學習。他喜歡在未經測試的資料上運行演算法。他還是澳大利亞初創公司AssessThreat的首席資料科學家。他在斯里蘭卡莫拉圖瓦大學獲得了理學士學位。他經常撰寫有關機器學習的技術文章和教程。此外,他經常通過游泳來努力營造健康的生活方式。


圖書目錄:

譯者序

前言

關於作者

關於審閱者

第1章 自然語言處理簡介 1

1.1 什麼是自然語言處理 1

1.2 自然語言處理的任務 2

1.3 傳統的自然語言處理方法 3

1.3.1 理解傳統方法 4

1.3.2 傳統方法的缺點 7

1.4 自然語言處理的深度學習方法? 8

1.4.1 深度學習的歷史 8

1.4.2 深度學習和NLP的當前狀況 9

1.4.3 理解一個簡單的深層模型—全連接神經網路 10

1.5 本章之外的學習路線 12

1.6 技術工具簡介 14

1.6.1 工具說明 15

1.6.2 安裝Python和scikit-learn 15

1.6.3 安裝Jupyter Notebook 15

1.6.4 安裝TensorFlow 16

1.7 總結 17

第2章 理解TensorFlow 18

2.1 TensorFlow是什麼 18

2.1.1 TensorFlow入門 19

2.1.2 TensorFlow客戶端詳細介紹 21

2.1.3 TensorFlow架構:當你執行用戶端時發生了什麼 21

2.1.4 Cafe Le TensorFlow:使用類比理解TensorFlow 23

2.2 輸入、變數、輸出和操作 24

2.2.1 在TensorFlow中定義輸入 25

2.2.2 在TensorFlow中定義變數 30

2.2.3 定義TensorFlow輸出 31

2.2.4 定義TensorFlow操作 31

2.3 使用作用域重用變數 40

2.4 實現我們的第一個神經網路 42

2.4.1 準備資料 43

2.4.2 定義TensorFLow圖 43

2.4.3 運行神經網路 45

2.5 總結 46

第3章 Word2vec——學習詞嵌入 48

3.1 單詞的表示或含義是什麼 49

3.2 學習單詞表示的經典方法 49

3.2.1 WordNet—使用外部詞彙知識庫來學習單詞表示 50

3.2.2 獨熱編碼表示方式 53

3.2.3 TF-IDF方法 53

3.2.4 共現矩陣 54

3.3 Word2vec—基於神經網路學習單詞表示 55

3.3.1 練習:queen = king – he she嗎 56

3.3.2 為學習詞嵌入定義損失函數 58

3.4 skip-gram演算法 59

3.4.1 從原始文本到結構化的資料 59

3.4.2 使用神經網路學習詞嵌入 60

3.4.3 使用TensorFlow實現skip-gram 67

3.5 連續詞袋演算法 69

3.6 總結 71

第4章 高級Word2vec 72

4.1 原始skip-gram演算法 72

4.1.1 實現原始skip-gram演算法 73

4.1.2 比較原始skip-gram演算法和改進的skip-gram演算法 75

4.2 比較skip-gram演算法和CBOW演算法 75

4.2.1 性能比較 77

4.2.2 哪個更勝一籌:skip-gram還是CBOW 79

4.3 詞嵌入演算法的擴展 81

4.3.1 使用unigram分佈進行負採樣 81

4.3.2 實現基於unigram的負採樣 81

4.3.3 降採樣:從概率上忽視常用詞 83

4.3.4 實現降採樣 84

4.3.5 比較CBOW及其擴展演算法 84

4.4 最近的skip-gram和CBOW的擴展演算法 85

4.4.1 skip-gram演算法的限制 85

4.4.2 結構化skip-gram演算法 85

4.4.3 損失函數 86

4.4.4 連續視窗模型 87

4.5 GloVe:全域向量表示 88

4.5.1 理解GloVe 88

4.5.2 實現GloVe 89

4.6 使用Word2vec進行文檔分類 90

4.6.1 資料集 91

4.6.2 用詞向量進行文檔分類 91

4.6.3 實現:學習詞嵌入 92

4.6.4 實現:詞嵌入到文檔嵌入 92

4.6.5 文本聚類以及用t-SNE視覺化文檔嵌入 93

4.6.6 查看一些特異點 94

4.6.7 實現:用K-means對文檔進行分類/聚類 95

4.7 總結 96

第5章 用卷積神經網路進行句子分類 97

5.1 介紹卷積神經網路 97

5.1.1 CNN基礎 97

5.1.2 卷積神經網路的力量 100

5.2 理解卷積神經網路 100

5.2.1 卷積操作 100

5.2.2 池化操作 103

5.2.3 全連接層 104

5.2.4 組合成完整的CNN 105

5.3 練習:在MNIST資料集上用CNN進行圖片分類 105

5.3.1 關於資料 106

5.3.2 實現CNN 106

5.3.3 分析CNN產生的預測結果 108

5.4 用CNN進行句子分類 109

5.4.1 CNN結構 110

5.4.2 隨時間池化 112

5.4.3 實現:用CNN進行句子分類 112

5.5 總結 115

第6章 遞迴神經網路 116

6.1 理解遞迴神經網路 116

6.1.1 前饋神經網路的問題 117

6.1.2 用遞迴神經網路進行建模 118

6.1.3 遞迴神經網路的技術描述 119

6.2 基於時間的反向傳播 119

6.2.1 反向傳播的工作原理 120

6.2.2 為什麼RNN不能直接使用反向傳播 120

6.2.3 基於時間的反向傳播:訓練RNN 121

6.2.4 截斷的BPTT:更有效地訓練RNN 121

6.2.5 BPTT的限制:梯度消失和梯度爆炸 122

6.3 RNN的應用 123

6.3.1 一對一RNN 123

6.3.2 一對多RNN 123

6.3.3 多對一RNN 124

6.3.4 多對多RNN 124

6.4 用RNN產生文本 125

6.4.1 定義超參數 125

6.4.2 將輸入隨時間展開用於截斷的BPTT 125

6.4.3 定義驗證資料集 126

6.4.4 定義權重和偏置 126

6.4.5 定義狀態持續變數 127

6.4.6 用展開的輸入計算隱藏狀態和輸出 127

6.4.7 計算損失 128

6.4.8 在新文本片段的開頭重置狀態 128

6.4.9 計算驗證輸出 128

6.4.10 計算梯度和優化 129

6.4.11 輸出新生成的文字區塊 129

6.5 評估RNN的文本結果輸出 130

6.6 困惑度:衡量文本結果的品質 131

6.7 有上下文特徵的遞迴神經網路:更長記憶的RNN 132

6.7.1 RNN-CF的技術描述 132

6.7.2 實現RNN-CF 133

6.7.3 RNN-CF產生的文本 138

6.8 總結 140

第7章 長短期記憶網路 142

7.1 理解長短期記憶網路 142

7.1.1 LSTM是什麼 143

7.1.2 更詳細的LSTM 144

7.1.3 LSTM與標準RNN的區別 149

7.2 LSTM如何解決梯度消失問題 150

7.2.1 改進LSTM 152

7.2.2 貪婪採樣 153

7.2.3 集束搜索 153

7.2.4 使用詞向量 154

7.2.5 雙向LSTM(BiLSTM) 155

7.3 其他LSTM的變體 156

7.3.1 窺孔連接 156

7.3.2 門迴圈單元 157

7.4 總結 159

第8章 LSTM應用:文本生成 160

8.1 資料集 160

8.1.1 關於資料集 160

8.1.2 資料預處理 162

8.2 實現LSTM 162

8.2.1 定義超參數 163

8.2.2 定義參數 163

8.2.3 定義LSTM單元及操作 165

8.2.4 定義輸入和標籤 165

8.2.5 定義處理序列資料所需的序列計算 166

8.2.6 定義優化器 167

8.2.7 隨時間衰減學習率 167

8.2.8 做預測 168

8.2.9 計算困惑度(損失) 168

8.2.10 重置狀態 169

8.2.11 貪婪採樣避免單峰 169

8.2.12 生成新文本 169

8.2.13 生成的文本樣例 170

8.3 LSTM與窺孔LSTM和GRU對比 171

8.3.1 標準LSTM 171

8.3.2 門控迴圈單元(GRU) 172

8.3.3 窺孔LSTM 174

8.3.4 訓練和驗證隨時間的困惑度 175

8.4 改進LSTM:集束搜索 176

8.4.1 實現集束搜索 177

8.4.2 集束搜索生成文本的示例 179

8.5 LSTM改進:用單詞替代n-gram生成文本 179

8.5.1 維度災難 179

8.5.2 Word2vec補救 180

8.5.3 使用Word2vec生成文本 180

8.5.4 使用LSTM-Word2vec和集束搜索生成的文本示例 181

8.5.5 隨時間困惑度 182

8.6 使用TensorFlow RNN API 183

8.7 總結 186

第9章 LSTM應用:圖像標題生成 188

9.1 瞭解資料 188

9.1.1 ILSVRC ImageNet資料集 189

9.1.2 MS-COCO資料集 189

9.2 圖像標題生成實現路徑 191

9.3 使用CNN提取圖像特徵 193

9.4 實現:使用VGG-16載入權重和推理 193

9.4.1 構建和更新變數 194

9.4.2 預處理輸入 195

9.4.3 VGG-16推斷 196

9.4.4 提取圖像的向量化表達 197

9.4.5 使用VGG-16預測類別概率 197

9.5 學習詞嵌入 198

9.6 準備輸入LSTM的標題 198

9.7 生成LSTM的資料 199

9.8 定義LSTM 201

9.9 定量評估結果 203

9.9.1 BLEU 203

9.9.2 ROUGE 204

9.9.3 METEOR 204

9.9.4 CIDEr 206

9.9.5 模型隨著時間變化的BLEU-4 206

9.10 為測試圖像生成標題 207

9.11 使用TensorFlow RNN API和預訓練的GloVe詞向量 210

9.11.1 載入GloVe詞向量 210

9.11.2 清洗資料 212

9.11.3 使用TensorFlow RNN API和預訓練的詞嵌入 213

9.12 總結 218

第10章 序列到序列學習:神經機器翻譯 220

10.1 機器翻譯 220

10.2 機器翻譯簡史 221

10.2.1 基於規則的翻譯 221

10.2.2 統計機器翻譯(SMT) 222

10.2.3 神經機器翻譯(NMT) 223

10.3 理解神經機器翻譯 225

10.3.1 NMT原理 225

10.3.2 NMT架構 226

10.4 為NMT系統準備資料 228

10.4.1 訓練階段 229

10.4.2 反轉源句 229

10.4.3 測試階段 230

10.5 訓練NMT 230

10.6 NMT推理 231

10.7 BLEU評分:評估機器翻譯系統 232

10.7.1 修正的精確度 232

10.7.2 簡短懲罰項 233

10.7.3 最終BLEU得分 233

10.8 從頭開始實現NMT:德語到英語的翻譯 233

10.8.1 資料介紹 234

10.8.2 處理資料 234

10.8.3 學習詞嵌入 235

10.8.4 定義編碼器和解碼器 236

10.8.5 定義端到端輸出計算 238

10.8.6 翻譯結果 239

10.9 結合詞嵌入訓練NMT 241

10.9.1 最大化資料集詞彙表和預訓練詞嵌入之間的匹配 241

10.9.2 將嵌入層定義為TensorFlow變數 243

10.10 改進NMT 245

10.10.1 教師強迫 246

10.10.2 深度LSTM 247

10.11 注意力 247

10.11.1 突破上下文向量瓶頸 247

10.11.2 注意力機制細節 248

10.11.3 注意力NMT的翻譯結果 253

10.11.4 源句子和目標句子注意力視覺化 254

10.12 序列到序列模型的其他應用:聊天機器人 256

10.12.1 訓練聊天機器人 256

10.12.2 評估聊天機器人:圖靈測試 257

10.13 總結 258

第11章 自然語言處理的現狀與未來 259

11.1 NLP現狀 259

11.1.1 詞嵌入 260

11.1.2 神經機器翻譯 264

11.2 其他領域的滲透 266

11.2.1 NLP與電腦視覺結合 266

11.2.2 強化學習 268

11.2.3 NLP生成式對抗網路 269

11.3 走向通用人工智慧 270

11.3.1 一個模型學習全部 271

11.3.2 聯合多工模型:為多個NLP任務生成神經網路 272

11.4 社交媒體NLP 273

11.4.1 社交媒體中的謠言檢測 274

11.4.2 社交媒體中的情緒檢測 274

11.4.3 分析推特中的政治框架 274

11.5 湧現的新任務 275

11.5.1 諷刺檢測 275

11.5.2 語言基礎 276

11.5.3 使用LSTM略讀文本 276

11.6 新興的機器學習模型 277

11.6.1 階段LSTM 277

11.6.2 擴張RNN(DRNN) 278

11.7 總結 278

11.8 參考文獻 279

附錄 數學基礎與高級TensorFlow 282


章節試讀:

譯 者 序

近幾年來,自然語言處理(NLP)技術已經取得了階段性進展,在電商、金融、翻譯、智慧硬體、醫療、旅遊等行業廣泛應用,應用場景涵蓋語音交互、文本分類、情感分析、意圖分析、圖像識別等。在深度學習技術的驅動下,自然語言處理技術應用又上了一個臺階。這其中比較有代表性的是語音交互技術,在深度學習的驅動下,語音辨識、聲紋識別、語音合成等技術已經大規模應用於工業領域。以天貓精靈為代表的智慧音箱也已經走入家庭生活中。根據Statista統計資料顯示,在2018年,全球自然語言處理的市場規模達5.83億美元,到2024年預計將達到約21億美元,自然語言處理技術的應用前景廣闊。

TensorFlow作為廣泛使用的深度學習框架,在自然語言處理領域被廣泛使用。比較成熟的應用場景有搜尋引擎、個性化推薦、商業化廣告、語音辨識等。本書主要介紹NLP在TensorFlow中的實現,內容涉及詞嵌入的各種方法、CNN/RNN/LSTM的TensorFlow實現及應用、LSTM在文本生成及圖像標題生成方面的應用以及從統計機器翻譯到神經網路翻譯的轉變,最後探討自然語言處理的未來。通過結合TensorFlow的代碼實現,可以讓讀者更容易理解自然語言處理技術的原理。

回顧2018年,自然語言處理技術的一個聚焦點是穀歌的BERT(BidirectionalEncoder Representations from Transformers)。穀歌AI團隊新發佈的BERT模型在機器閱讀理解頂級水準測試SQuAD1.1中表現出驚人的成績:兩項衡量指標上全面超越人類,並且還在11種不同NLP測試中創出最佳成績。毋庸置疑,BERT模型開啟了NLP的新時代。BERT是基於Transformer的雙向編碼器表徵。與其他語言表徵模型不同,BERT旨在通過聯合調節所有層中的上下文來預訓練深度雙向表徵。BERT的另一個亮點是預訓練,在預訓練過程中作者隨機掩蔽15%的標記,隨機掩蔽的時候10%的單詞會被替代成其他單詞,10%的單詞不替換,剩下80%才被替換為[MASK]。在預訓練語料選取上,作者強調語料的選取很關鍵,要選用文檔級別的語料而不是句子級別的,這樣可以具備抽象表達連續長序列特徵的能力。如果說BERT是預訓練語言模型的代表,那麼無監督機器翻譯、常識推理、元學習、理解表示、使用大文檔的QA問答系統和推理等領域在2018年一樣備受關注。

儘管NLP在過去一段時間取得階段性進展,但仍需要繼續突破。比如BERT仍然強依賴於訓練資料,閱讀理解還是在給定問句的情況下從文章中抽取答案,推理進展相對緩慢。當前自然語言處理主要基於CNN和RNN及各種衍生,問答模型通常會階段收斂,學習不到語言真正深層的表達。綜上所述,當前自然語言處理的水準仍在推理和深層表徵上與人類有較大的差距,還有很長一段路要走。

本書是我和陸健利用業餘時間合作翻譯完成的。第1∼7章由陸健翻譯,內容涉及TensorFlow介紹、詞嵌入的各種方法、CNN/RNN/LSTM的TensorFlow實現及應用。第8∼11章及附錄由我翻譯,內容涉及LSTM在文本生成及圖像標題生成方面的應用、從統計機器翻譯到神經網路翻譯的轉變以及自然語言處理的未來。由於譯者水準有限,翻譯過程難免會有瑕疵,如有相關問題請發郵件至maec1208@gmail.com。

感謝華章公司編輯在翻譯過程中給予的協助,感謝我的愛人和孩子在本書翻譯過程中給予的理解與支持。



馬恩馳

人工智慧實驗室@杭州

2019年3月



前  言

在我們所處的數位資訊時代,資料量呈指數級增長,在我們閱讀本書時,它也正以前所未有的速度增長。此類資料大多數是與語言相關的資料(文本或語言),例如電子郵件、社交媒體帖子、電話和網路文章。自然語言處理(NLP)有效地利用這些資料來?明人們開展業務或日常工作。NLP已經徹底改變了我們使用資料改善業務和生活的方式,並且這種改變將在未來一直持續。

NLP最普遍的應用案例之一是虛擬助手(VA),例如Apple的Siri、Google的Assistant和Amazon的Alexa。當你向VA詢問“瑞士最便宜的酒店價格”時,就會觸發一系列複雜的NLP任務。首先,VA需要瞭解(解析)你的請求(例如,它需要知道你要檢索酒店價格,而不是尋找附近的公園)。VA需要做出的另一個決定是“哪家酒店便宜?”接下來,VA需要對瑞士的城市進行排名(可能基於你過去的旅行歷史)。然後,VA可能會訪問Booking.com和Agoda.com等網站,獲取瑞士的酒店價格,並通過分析每家酒店的價格和評論對其進行排名。因此,你在幾秒鐘內看到的是執行了一系列非常複雜的NLP任務的結果。

那麼,是什麼使得這些NLP任務在處理我們的日常任務時如此聰明和準確?其底層方法是深度學習演算法。深度學習演算法本質上是複雜的神經網路,它可以將原始資料映射到所需的輸出,而無須針對特定任務執行任何特徵工程。這意味著只需提供客戶的酒店評論,演算法就可以直接回答“客戶對這家酒店的評價如何?”這樣的問題。此外,深度學習已經在一系列NLP任務(例如,語音辨識和機器翻譯)中達到甚至超過了人類的表現。

通過閱讀本書,你可以學習如何使用深度學習去解決許多有趣的NLP問題。如果你想成為一個改變世界的人,那麼研究NLP是至關重要的。這些任務包括學習單詞的語義,生成全新的故事,以及通過研究雙語句對進行語言翻譯。所有技術章節都附有練習,這些練習會指導讀者逐步實現這些系統。對於本書中的所有練習,我們都使用基於Python的TensorFlow庫,TensorFlow是一種流行的分散式運算庫,可以非常方便地實現深度神經網路。

本書讀者

本書適用於那些有志于利用語言資料改造世界的初學者。本書將為你提供解決NLP任務的堅實基礎。在本書中,我們將涵蓋NLP的各個方面,更多地關注實際應用而不是理論基礎。等到學習這些方法的更高級理論時,擁有解決各種NLP任務的良好實踐知識將幫助你實現更平穩的過渡。此外,扎實的實踐知識可以?明你最大限度地將演算法從一個特定領域遷移到更多領域。

本書內容

第1章是對NLP的簡單介紹。該章將首先討論我們需要NLP的原因。接下來,將討論NLP中一些常見的子任務。之後,將討論NLP的兩個主要階段,即傳統階段和深度學習階段。通過研究如何使用傳統演算法解決語言建模任務,我們將瞭解傳統階段NLP的特點。然後,將討論深度學習階段,在這一階段中深度學習演算法被大量用於NLP。我們還將討論深度學習演算法的主要系列。最後,將討論一種最基本的深度學習演算法:全連接神經網路。該章結束時會提供一份路線圖,簡要介紹後面的內容。

第2章介紹Python TensorFlow庫,這是我們實現解決方案的主要平臺。首先在TensorFlow中編寫一段代碼,執行一個簡單的計算,並討論從運行代碼到得到結果這一過程中到底發生了什麼。我們將詳細介紹TensorFlow的基礎組件。把Tensorflow比作豐富的餐廳,瞭解如何完成訂單,以便進一步加強對TensorFlow的理解。稍後,將討論TensorFlow的更多技術細節,例如資料結構和操作(主要與神經網路相關)。最後,我們將實現一個全連接的神經網路來識別手寫數位。這將幫助我們瞭解如何使用TensorFlow來實現端到端解決方案。

第3章首先討論如何用TensorFlow解決NLP任務。在該章中,我們將討論如何用神經網路學習單詞向量或單詞表示。單詞向量也稱為詞嵌入。單詞向量是單詞的數字表示,相似單詞有相似值,不同單詞有不同值。首先,將討論實現這一目標的幾種傳統方法,包括使用稱為WordNet的大型人工構建知識庫。然後,將討論基於現代神經網路的方法,稱為Word2vec,它在沒有任何人為干預的情況下學習單詞向量。我們將通過一個實例來瞭解Word2vec的機制。接著,將討論用於實現此目的的兩種演算法變體:skip-gram和連續詞袋(CBOW)模型。我們將討論演算法的細節,以及如何在TensorFlow中實現它們。

第4章介紹與單詞向量相關的更高級方法。首先,會比較skip-gram和CBOW,討論其中哪一種有明顯優勢。接下來,將討論可用於提高Word2vec演算法性能的幾項改進。然後,將討論一種更新、更強大的詞嵌入學習演算法:GloVe(全域向量)演算法。最後,將在文檔分類任務中實際觀察單詞向量。在該練習中,我們將看到單詞向量十分強大,足以表示文檔所屬的主題(例如,娛樂和運動)。

第5章討論卷積神經網路(CNN),它是擅長處理諸如圖像或句子這樣的空間資料的神經網路家族。首先,討論如何處理資料以及處理資料時涉及哪種操作,以便對CNN有較深的理解。接下來,深入研究CNN計算中涉及的每個操作,以瞭解CNN背後的數學原理。最後,介紹兩個練習。第一個練習使用CNN對手寫數位圖像進行分類,我們將看到CNN能夠在此任務上很快達到較高的準確率。接下來,我們將探討如何使用CNN對句子進行分類。特別地,我們要求CNN預測一個句子是否與物件、人物、位置等相關。

第6章介紹遞迴神經網路。遞迴神經網路(RNN)是一個可以類比資料序列的強大的神經網路家族。首先討論RNN背後的數學原理以及在學習期間隨時間更新RNN的更新規則。然後,討論RNN的不同變體及其應用(例如,一對一RNN和一對多RNN)。最後,用RNN執行文本生成任務的練習。我們用童話故事訓練RNN,然後要求RNN生成一個新故事。我們將看到在持久的長期記憶方面RNN表現不佳。最後,討論更高級的RNN變體,即RNN-CF,它能夠保持更長時間的記憶。

第7章介紹長短期記憶網路。RNN在保持長期記憶方面效果較差,這使我們需要探索能在更長時間內記住資訊的更強大技術。我們將在該章討論一種這樣的技術:長短期記憶網路(LSTM)。LSTM功能更強大,並且在許多時間序列任務中表現得優於其他序列模型。首先通過一個例子,研究潛在的數學原理和LSTM的更新規則,以說明每個計算的重要性。然後,將瞭解為什麼LSTM能夠更長時間地保持記憶。接下來,將討論如何進一步提高LSTM預測能力。最後,將討論具有更複雜結構的幾種LSTM變體(具有窺孔連接的LSTM),以及簡化LSTM門控迴圈單元(GRU)的方法。

第8章介紹LSTM的應用:文本生成。該章廣泛評估LSTM在文本生成任務中的表現。我們將定性和定量地衡量LSTM產生的文本的好壞程度,還將比較LSTM、窺孔連接LSTM和GRU。最後,將介紹如何將詞嵌入應用到模型中來改進LSTM生成的文本。

第9章轉到對多模態資料(即圖像和文本)的處理。在該章中,我們將研究如何自動生成給定圖像的描述。這涉及將前饋模型(即CNN)與詞嵌入層及順序模型(即LSTM)組合,形成一個端到端的機器學習流程。

第10章介紹有關神經機器翻譯(NMT)模型的應用。機器翻譯指的是將句子或短語從來源語言翻譯成目的語言。首先討論機器翻譯是什麼並簡單介紹機器翻譯歷史。然後,將詳細討論現代神經機器翻譯模型的體系結構,包括訓練和預測的流程。接下來,將瞭解如何從頭開始實現NMT系統。最後,會探索改進標準NMT系統的方法。

第11章重點介紹NLP的現狀和未來趨勢。我們將討論前面提到的系統的相關最新發現。該章將涵蓋大部分令人興奮的創新,並讓你直觀地感受其中的一些技術。

附錄向讀者介紹各種數學資料結構(例如,矩陣)和操作(例如,矩陣的逆),還將討論概率中的幾個重要概念。然後將介紹Keras,它是在底層使用TensorFlow的高級庫。Keras通過隱藏TensorFlow中的一些有難度的細節使得神經網路的實現更簡單。具體而言,通過使用Keras實現CNN來介紹如何使用Keras。接下來,將討論如何使用TensorFlow中的seq2seq庫來實現一個神經機器翻譯系統,所使用的代碼比在第11章中使用的代碼少得多。最後,將向你介紹如何使用TensorBoard視覺化詞嵌入的指南。TensorBoard是TensorFlow附帶的便捷視覺化工具,可用於視覺化和監視TensorFlow用戶端中的各種變數。

如何充分利用本書

為了充分利用本書,讀者需要具備以下能力:

有強烈的意願和堅定的意志學習NLP的先進技術。

熟悉Python的基本語法和資料結構(例如,清單和字典)。

理解基本的數學原理(例如,矩陣或向量的乘法)?。

(可選)對於一些小節,需要高級的數學知識(例如,微分計算)來理解特定模型是如何在訓練時克服潛在的實際問題的。

(可選)對超出本書的內容,可以閱讀相關論文以獲取最新進展或細節。

下載示例代碼及彩色圖像

本書的示例代碼及所有截圖和樣圖,可以從http://www.packtpub.com通過個人帳號下載,也可以訪問華章圖書官網http://www.hzbook.com,通過註冊並登錄個人帳號下載。

這些代碼還可在GitHub上獲取,網址是:https://github.com/PacktPublishing/Natural-Language-Processing-with-TensorFlow。



About the Author

關 於 作 者

圖珊·加內格達拉(Thushan Ganegedara)目前是澳大利亞悉尼大學第三年的博士生。他專注於機器學習和深度學習。他喜歡在未經測試的資料上運行演算法。他還是澳大利亞初創公司AssessThreat的首席資料科學家。他在斯里蘭卡莫拉圖瓦大學獲得了理學士學位。他經常撰寫有關機器學習的技術文章和教程。此外,他經常通過游泳來努力營造健康的生活方式。

感謝我的父母、兄弟姐妹和我的妻子,感謝他們對我的信任以及給予我的支援,感謝我所有的老師和博士生導師提供的指導。



About the Reviewers

關於審閱者

Motaz Saad擁有洛林大學電腦科學專業博士學位,他喜歡資料並以此為樂。他在NLP、計算語言學、資料科學和機器學習領域擁有超過10年的專業經驗,目前擔任IUG資訊技術學院的助理教授。

Joseph O’Connor博士是一名對深度學習充滿熱情的資料科學家。他的公司Deep LearnAnalytics是一家總部位於英國的資料科學諮詢公司,旨在與企業合作,開發從概念到部署的機器學習應用程式和基礎架構。因為對MINOS高能物理實驗的資料分析所做的研究,他獲得倫敦大學學院授予的博士學位。從那時起,他為許多私營公司開發ML產品,主攻NLP和時間序列預測。你可以在http://deeplearnanalytics.com/找到他的相關資訊。


圖片預覽:

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。