動手學自然語言處理:Python實現(第2版)

李樹德(Raymond Lee)著 毛小崗 徐同春 譯

  • 動手學自然語言處理:Python實現(第2版)-preview-1
  • 動手學自然語言處理:Python實現(第2版)-preview-2
  • 動手學自然語言處理:Python實現(第2版)-preview-3
動手學自然語言處理:Python實現(第2版)-preview-1

相關主題

商品描述

《動手學自然語言處理:Python實現(第2版)》系統講解自然語言處理(NLP)領域的前沿技術與核心知識,涵蓋基礎理論、經典算法,以及AI聊天機器人、大語言模型、生成式人工智能等當下熱門應用方向,幫助讀者快速建立系統化的NLP知識框架。書中特別設計了7個由淺入深的NLP實驗項目(合計14小時的實驗內容),帶領讀者動手實踐主流Python工具庫,包括NLTK、spaCy、TensorFlow、Keras、Transformer與BERT。通過完整的案例實操,幫助讀者真正吃透理論、練會代碼、掌握實戰能力。 本書旨在幫助讀者夯實自然語言處理技術基礎,熟練使用Python開發各類NLP應用,獨立完成聊天機器人等實用項目。讀者可借助書中配套的NLP工具包,搭建屬於自己的NLP應用。 本書兼顧課堂教學與工程實操,既可作為高校相關專業本科生、研究生的NLP入門與進階教材,也適合授課教師、助教作為課程講義與實驗指導用書。讀者完成書中14小時的Python實驗訓練後,可系統掌握NLP與人工智能相關知識,能夠面向不同應用場景,構建可落地的NLP應用系統。

作者簡介

譯者簡介: 毛小崗,博士,首都經濟貿易大學講師。他是數據科學和人工智能領域的研究者和愛好者,參與過多項企業和政府主導的數據分析課題並做了大量相關工 作。毛博士在大學裏主講“Python 文本數據挖掘實戰”“商務數據分析”和“機器學習實戰與Kaggle競賽實訓”等多門數據分析課程,教學功底紮實。 徐同春,首都經濟貿易大學工商管理學院研究生,研究方向為公司治理與公司金融,專註數據科學在企業管理和商業分析中的運用。

目錄大綱

目錄

第 I 部分 概念與技術

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

1.1 引言 2

1.2 人類語言與智能 3

1.3 人類語言的語言層級 5

1.4 人類語言的歧義 6

1.5 自然語言處理簡史 7

1.5.1 第一階段:機器翻譯

(20 世紀 60 年代以前) 7

1.5.2 第二階段:早期人工智能在自然語言處理中的應用(20 世紀 60 年代至70 年代) 7

1.5.3 第三階段:自然語言處理的語法邏輯階段(20世紀 70 年代至80年代) 8

1.5.4 第四階段:人工智能與機器學習(20 世紀 80 年代至 2000 年代) 8

1.5.5 第五階段:BERT、Transformer、ChatGPT與大型語言模型的興起(2000 年代–至今) 8

1.6 自然語言處理與人工智能 9

1.7 自然語言處理的主要組成部分 10

1.8 自然語言理解 11

1.8.1 語音識別 12

1.8.2 句法分析 12

1.8.3 語義分析 12

1.8.4 語用分析 12

1.9 自然語言處理的潛在應用 12

1.9.1 機器翻譯 13

1.9.2 信息提取 13

1.9.3 信息檢索 14

1.9.4 情感分析 14

1.9.5 問答型聊天機器人 14

第 2 章 N 元語言模型 16

2.1 引言 16

2.2 N 元語言模型 18

2.2.1 基本的 NLP 術語 20

2.2.2 語言建模與鏈式規則 21

2.3 馬爾可夫鏈在 N 元模型中的應用 23

2.4 實例探究:《福爾摩斯探案集》 24

2.5 N 元模型中的香農方法 28

2.6 語言模型評估與平滑技術 31

2.6.1 困惑度 31

2.6.2 外部評估方法 32

2.6.3 零計數問題 33

2.6.4 平滑技術 33

2.6.5 拉普拉斯(加 1)平滑 33

2.6.6 加 k 平滑 35

2.6.7 回退和插值平滑 36

2.6.8 古德-圖靈平滑 37

2.7 練習題 37

第 3 章 詞性標註 39

3.1 詞性的概念 39

3.2 詞性標註 40

3.2.1 語言學中詞性標註的概念 40

3.2.2 自然語言處理中詞性標註的概念 40

3.2.3 賓州樹庫項目中使用的詞性標簽 41

3.2.4 自然語言處理中詞性的重要性 43

3.3 自然語言理解中的主要組成部分 44

3.3.1 計算語言學和詞性標註 45

3.3.2 詞性和語義含義 45

3.3.3 形態與句法定義的詞性標註 46

3.4 英語中的九大詞性 46

3.4.1 英語詞類 47

3.4.2 介詞的定義 48

3.4.3 連詞的定義 49

3.4.4 代詞的定義 50

3.4.5 動詞的定義 51

3.5 詞性標註集的不同類型 52

3.5.1 標註集的概念 52

3.5.2 詞性標註的歧義性 53

3.5.3 使用知識進行詞性標註 54

3.6 詞性標註的方法 54

3.6.1 基於規則的詞性標註方法 54

3.6.2 基於規則的詞性標註示例 55

3.6.3 基於概率的詞性標註示例 56

3.6.4 使用 Brill 標註器的混合方法進行詞性標註 57

3.6.5 基於轉換的學習的概念 57

3.6.6 混合詞性標註:Brill 標註器 58

3.6.7 學習 Brill 標註器的轉換 58

3.7 詞性標註器的評估 59

3.8 練習題 60

第 4 章 句法分析 61

4.1 引言和目的 61

4.2 句法分析介紹 62

4.2.1 句法的概念 62

4.2.2 句法規則 62

4.2.3 常見的句法模式 62

4.2.4 句法分析在自然語言處理中的重要性 63

4.3 句子中的成分類型 64

4.3.1 成分的概念 64

4.3.2 成分的種類 65

4.3.3 名詞短語 65

4.3.4 動詞短語 66

4.3.5 簡單成分的復雜性 67

4.3.6 動詞短語的子類劃分 68

4.3.7 詞匯在解析中的作用 69

4.3.8 語法規則中的遞歸 70

4.4 上下文無關語法 70

4.4.1 上下文無關語言的概念 70

4.4.2 上下文無關語法的概念 71

4.4.3 上下文無關語法的主要組成部分 71

4.4.4 使用上下文無關語法的推導 72

4.5 上下文無關語法解析 73

4.5.1 形態學解析 73

4.5.2 音位學解析 73

4.5.3 句法解析 74

4.5.4 解析作為一種樹搜索 74

4.5.5 英語片段的上下文無關語法 74

4.5.6 “Play the Piano”的上下文無關語法的解析樹 74

4.5.7 自頂向下解析器 75

4.5.8 自底向上解析器 76

4.5.9 解析控制 77

4.5.10 自頂向下與自底向上解析的優缺點 78

4.6 詞匯化和概率解析 78

4.6.1 在解析中使用概率的原因 78

4.6.2 解析中的語義 79

4.6.3 概率上下文無關語法的概念 80

4.6.4 概率上下文無關語法的簡單示例 80

4.6.5 使用概率進行語言建模 83

4.6.6 概率上下文無關語法的局限性 83

4.6.7 解決方案:詞匯化解析 84

4.7 練習題 86

第 5 章 語義表示 87

5.1 引言 87

5.2 語義的概念 87

5.3 語義表示 88

5.4 語義處理 89

5.5 常見的語義表示方法 89

5.5.1 一階謂詞演算 90

5.5.2 語義網絡 90

5.5.3 概念依賴圖 90

5.5.4 基於框架的表達 91

5.6 語義表示的要求 92

5.6.1 可驗證性 92

5.6.2 歧義性 92

5.6.3 含糊性 92

5.6.4 規範形式 93

5.7 推理 94

5.7.1 推理的概念 94

5.7.2 使用一階謂詞邏輯進行推理的例子 94

5.8 Fillmore 的普遍案例理論 95

5.8.1 Fillmore 的普遍案例理論的概念 95

5.8.2 Fillmore 理論中的主要案例角色 96

5.8.3 案例角色分析中的復雜性 97

5.9 一階謂詞邏輯 98

5.9.1 一階謂詞邏輯表示方案 98

5.9.2 一階謂詞邏輯的主要元素 98

5.9.3 一階謂詞邏輯的謂詞-參數結構 100

5.9.4 一階謂詞邏輯中的語義表示問題 101

5.9.5 使用一階謂詞邏輯進行推理 101

5.10 練習題 103

第 6 章 語義分析 104

6.1 引言 104

6.1.1 語義分析的概念 104

6.1.2 語義分析在自然語言處理中的重要性 104

6.1.3 人類在語義分析方面的優勢 105

6.2 詞匯語義分析與組合語義分析 105

6.2.1 詞匯語義分析的概念 105

6.2.2 組合語義分析的概念 106

6.3 單詞意義和關系 107

6.3.1 單詞意義的概念 107

6.3.2 詞匯語義的類型 107

6.4 詞義消歧 111

6.4.1 詞義消歧的概念 111

6.4.2 詞義消歧的難點 112

6.4.3 詞義消歧的方法 113

6.5 WordNet 與在線詞庫 114

6.5.1 WordNet 的概念 114

6.5.2 Synsets 的概念 114

6.5.3 WordNet 的知識結構 115

6.5.4 WordNet 中捕獲的主要詞匯關系 116

6.5.5 WordNet 和詞典的應用 117

6.6 其他在線詞庫:MeSH 117

6.6.1 MeSH 的概念 117

6.6.2 MeSH 本體的用途 118

6.7 詞相似性和詞庫方法 118

6.7.1 引言 118

6.7.2 基於路徑的相似性 119

6.7.3 基於路徑的相似性問題 120

6.7.4 信息內容相似性 120

6.7.5 Resnik 方法 122

6.7.6 Dekang Lin 方法 122

6.7.7 擴展的 Lesk 算法 123

6.8 分布式相似性 123

6.8.1 分布式意義模型 123

6.8.2 詞向量 123

6.8.3 詞條-文檔矩陣 124

6.8.4 點互信息 125

6.8.5 計算詞條-上下文矩陣上的正點互信息的例子 126

6.8.6 加權點互信息技術 127

6.8.7 點互信息計算中的k 平滑 128

6.8.8 上下文和詞相似性測量 129

6.8.9 相似性評估 131

6.9 練習題 131

第 7 章 語用分析 133

7.1 引言 133

7.2 篇章現象 133

7.2.1 共指消解 134

7.2.2 共指消解的重要性 134

7.2.3 一致性與共指 135

7.2.4 共指關系的重要性 136

7.2.5 基於實體的一致性 137

7.3 篇章分割 137

7.3.1 篇章分割的概念 137

7.3.2 無監督篇章分割 138

7.3.3 Hearst 的 TextTiling方法 138

7.3.4 TextTiling 算法 140

7.3.5 有監督篇章分割 140

7.4 篇章連貫性 141

7.4.1 文本的連貫性 141

7.4.2 連貫關系的概念 142

7.4.3 連貫關系的類型 142

7.4.4 篇章連貫性的層次結構 143

7.4.5 指稱表達式的類型 144

7.4.6 篩選潛在指代對象的特征 144

7.4.7 代詞解釋中的偏好 145

7.5 共指消解算法 146

7.5.1 引言 146

7.5.2 Hobbs 算法 146

7.5.3 中心算法 148

7.5.4 機器學習方法 151

7.6 評估 153

7.7 練習題 153

第 8 章 遷移學習和 Transformer技術 155

8.1 遷移學習的概念 155

8.2 遷移學習的目的 156

8.3 遷移學習的解決方案 157

8.4 循環神經網絡 159

8.4.1 循環神經網絡的概念 159

8.4.2 循環神經網絡的作用 159

8.4.3 循環神經網絡體系結構 160

8.4.4 長短期記憶網絡 162

8.4.5 門循環單元 164

8.4.6 雙向循環神經網絡 165

8.5 Transformer 技術 166

8.5.1 Transformer 的概念 166

8.5.2 Transformer 架構 167

8.5.3 深入理解編碼器 168

8.6 BERT 170

8.6.1 BERT 的概念 170

8.6.2 BERT 的架構 170

8.6.3 BERT 的訓練 171

8.7 其他相關的 Transformer 技術 172

8.7.1 Transformer-XL 172

8.7.2 ALBERT 173

8.8 練習題 173

第 9 章 主要的自然語言處理應用 174

9.1 引言 174

9.2 信息檢索系統 174

9.2.1 信息檢索系統簡介 174

9.2.2 向量空間模型在信息檢索中的應用 175

9.2.3 信息檢索中的術語分布模型 179

9.2.4 潛在語義索引在信息檢索中的應用 181

9.2.5 信息檢索中的話語分割 184

9.3 文本摘要系統 185

9.3.1 文本摘要系統簡介 185

9.3.2 文本摘要數據集 187

9.3.3 文本摘要系統類型 187

9.3.4 查詢式摘要系統與通用摘要系統 188

9.3.5 單文檔與多文檔摘要 190

9.3.6 現代文本摘要系統 191

9.4 問答系統 196

9.4.1 QA 系統和人工智能 196

9.4.2 工業級問答系統概述 200

9.5 練習題 206

第 10 章 大語言模型與生成式人工智能 207

10.1 大語言模型與生成式人工智能簡介 207

10.1.1 什麼是大語言模型 207

10.1.2 生成式人工智能概述 208

10.1.3 大語言模型與生成式人工智能的交匯 209

10.1.4 大語言模型在現代人工智能中的重要性 210

10.2 大語言模型的基礎 211

10.2.1 神經網絡架構 211

10.2.2 註意力機制 212

10.2.3 Transformer 架構 212

10.2.4 模型規模化:從 BERT 到 GPT 214

10.3 大語言模型領域的主要參與者 215

10.3.1 OpenAI 的 ChatGPT(當前版本:GPT-4) 215

10.3.2 Google DeepMind的Pathways語言模型(PaLM,當前版本為 PaLM 2) 216

10.3.3 Meta 的大語言模型(LLaMA,當前版本為 LLaMA 2) 217

10.3.4 Anthropic 的 Claude(當前版本為Claude 2) 218

10.3.5 百度的 ERNIE 3.0 Titan 219

10.4 大語言模型在生成式人工智能中的應用 220

10.4.1 創意寫作與內容生成 220

10.4.2 語言翻譯 221

10.4.3 對話式人工智能與聊天機器人 222

10.4.4 文本摘要與內容策展 224

10.5 倫理考量與挑戰 225

10.5.1 偏見的檢測與緩解 225

10.5.2 隱私與數據安全 226

10.5.3 錯誤信息的傳播 226

10.5.4 大語言模型部署的倫理指南 227

10.6 未來展望與研究方向 228

10.6.1 大語言模型與生成式人工智能的當前發展趨勢 228

10.6.2 人工智能創造力的未來 230

10.6.3 大語言模型在人工智能倫理中的作用 230

10.6.4 未來發展方向:研究與開發 231

10.7 練習題 233

第 II 部分 使用 Python 實現的自然語言處理實驗教程(14 小時)

第 11 章 實驗 1:自然語言工具包使用基礎(第 1-2 小時) 236

11.1 引言 236

11.2 什麼是 NLTK 238

11.3 使用 NLTK 進行簡單的文本分詞示例 238

11.4 NLTK 的安裝 239

11.5 為什麼使用 Python 進行自然語言處理 241

11.6 NLTK 在基礎文本處理中的應用 242

11.7 使用 NLTK 進行簡單文本分析 244

11.8 使用詞匯離散圖進行文本分析 247

11.8.1 詞匯離散圖的概念 247

11.8.2 基於《理智與情感》文本的詞匯離散圖分析 248

11.8.3 基於就職演說語料庫文本的歷時詞匯離散圖分析 248

11.9 使用 NLTK 進行自然語言處理分詞操作 249

11.9.1 什麼是自然語言處理中的分詞 249

11.9.2 tokenize()與 split()的區別 250

11.9.3 統計不同的詞元 251

11.9.4 詞匯多樣性 253

11.10 NLTK 中的基本統計工具 254

11.11 使用累積模式繪制相同的頻率分布圖 255

11.11.1 罕見詞 257

11.11.2 搭配詞 258

第 12 章 實驗 2:使用自然語言工具包進行 N-gram 建模(第 3-4小時) 260

12.1 引言 260

12.2 什麼是 N-gram 261

12.3 N-gram 在自然語言處理中的應用 261

12.4 在 NLTK 中生成N-gram 261

12.5 生成 N-gram 統計信息 264

12.6 SpaCy 在自然語言處理中的應用 270

12.7 如何安裝 spaCy 271

12.8 使用 spaCy 進行分詞 271

第 13 章 實驗 3:基於自然語言工具包的詞性標註(第 5-6 小時) 278

13.1 引言 278

13.2 重新審視 NLTK 中的分詞技術 279

13.3 使用 NLTK 進行詞幹提取 281

13.3.1 詞幹提取概述 281

13.3.2 詞幹提取的意義 282

13.3.3 詞幹提取的實現方法 282

13.4 使用 NLTK 刪除停用詞 285

13.4.1 什麼是停用詞 285

13.4.2 NLTK 停用詞列表 285

13.4.3 示例文本實踐 286

13.4.4 自定義停用詞庫 286

13.5 使用 NLTK 進行文本分析 288

13.6 與 WordCloud 集成 290

13.7 使用 NLTK 進行詞性標註 292

13.7.1 什麼是詞性標註 292

13.7.2 通用詞性標註集 292

13.7.3 PENN Treebank 詞性標註集(英文與中文版本) 293

13.7.4 詞性標註的應用 294

13.8 使用 NLTK 創建自定義詞性標註器 297

第 14 章 實驗 4:基於 spaCy 的語義分析與詞向量(第 7-8 小時) 303

14.1 引言 303

14.2 詞向量的概念 304

14.3 理解詞向量 304

14.4 詞向量初探 306

14.5 類比與向量運算 309

14.6 如何創建詞向量 310

14.7 spaCy 預訓練詞向量 310

14.8 語義分析中的相似度方法 312

14.9 使用 spaCy 的高級語義相似度方法 315

14.9.1 理解語義相似度 315

14.9.2 歐幾裏得距離 315

14.9.3 余弦距離與余弦相似度 316

14.9.4 使用語義相似度進行文本分類 318

14.9.5 提取關鍵短語 319

14.9.6 提取與比較命名實體 320

第 15 章 實驗 5:情感分析與文本分類(第 9-10 小時) 323

15.1 引言 323

15.2 使用 spaCy 和 LSTM 技術的文本分類 324

15.3 技術要求 324

15.4 文本分類概述 325

15.4.1 什麼是文本分類 325

15.4.2 作為 AI 應用的文本分類 326

15.5 使用 spaCy NLP 流水線的文本分類器 327

15.5.1 TextCategorizer 類 327

15.5.2 為 TextCategorizer 格式化訓練數據 329

15.5.3 系統訓練 331

15.5.4 系統測試 333

15.5.5 針對多標簽文本分類訓練 TextCategorizer 333

15.6 使用 spaCy 進行情感分析 337

15.6.1 IMDB 大型影評數據集 337

15.6.2 數據集探索 337

15.6.3 訓練 TextClassifier 340

15.7 人工神經網絡概述 342

15.8 TensorFlow 與 Keras概述 343

15.9 使用 LSTM 技術進行序列建模 343

15.10 Keras 分詞器在自然語言處理中的應用 344

15.11 基於 LSTM 的電影影評情感分析(使用 Keras與 spaCy)348

第 16 章 實驗 6:使用 spaCy與TensorFlow 的Transformer 模型(第 11-12 小時) 355

16.1 引言 355

16.2 技術要求 356

16.3 Transformer 與遷移學習概述 356

16.4 為什麼選擇Transformer 357

16.5 BERT 技術概述 359

16.5.1 BERT 是什麼 359

16.5.2 BERT 架構 360

16.5.3 BERT 輸入格式 362

16.5.4 如何訓練 BERT 363

16.6 Transformer 與TensorFlow 364

16.6.1 HuggingFace 的Transformers 庫 364

16.6.2 使用 BERT 分詞器 366

16.6.3 BERT 中的詞向量 369

16.7 使用 BERT 回顧文本分類 370

16.8 Transformer 流水線技術 374

16.8.1 面向情感分析的Transformer 流水線 375

16.8.2 面向問答系統的Transformer 流水線 375

16.9 Transformer 與 spaCy 376

第 17 章 實驗7:基於 TensorFlow與Transformer 技術構建聊天機器人(第13-14小時) 380

17.1 引言 380

17.2 技術要求 381

17.3 AI 聊天機器人概述 381

17.3.1 聊天機器人是什麼 381

17.3.2 聊天機器人的喚醒詞 382

17.3.3 聊天機器人中的自然語言處理組件 383

17.4 使用 TensorFlow 與Transformer 技術構建電影聊天機器人 383

17.4.1 聊天機器人數據集 384

17.4.2 電影對話預處理 384

17.4.3 電影對話的分詞處理 386

17.4.4 過濾與填充過程 386

17.4.5 創建 TensorFlow 電影數據集對象 387

17.4.6 計算註意力學習權重 388

17.4.7 多頭註意力機制 389

17.4.8 系統實現 390

17.5 相關研究 405