自然語言處理
-
【作 者】主編 馮建周
【I S B N 】978-7-5226-0527-2
【責任編輯】石永峰
【適用讀者群】本專通用
【出版時間】2022-04-12
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】256
【千字數】409
【印 張】16
【定 價】¥48
【叢 書】普通高等教育人工智能專業系列教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
自然語言處理是人工智能的重要分支,本書是一本自然語言處理的入門教材,主要面向高年級本科生和低年級研究生。本著理論結合實踐的基本原則,本書共分為11章,其中第1章概述了自然語言處理的研究內容、發展歷程、技術特色和當前現狀,是概述性的一章。第2章是自然語言處理的編程基礎,對Python語言及其相關模塊進行了介紹。第3章是自然語言處理的算法基礎,主要對常見的機器學習算法(分類算法、聚類算法、概率圖模型、集成學習、人工神經網絡等)進行了講解。第4~5章從統計學方法入手講解了自然語言處理的兩個基礎任務:分詞和關鍵詞抽取。第6章則講解了當前流行的詞向量技術,尤其是Word2vec和大規模預訓練模型BERT。第7~11章分別對當前自然語言處理的熱門研究領域展開講解,包括文本分類、信息抽取、機器閱讀理解、文本生成和摘要抽取、對話和聊天系統等。
本書除了可以作為高等院校計算機、大數據和人工智能及其相關專業的本科生和研究生教材外,也可供對自然語言處理技術感興趣的研究人員和工程技術人員參考。
結構合理
針對課程特點及學生學習需求安排結構,使理論與實踐相輔相成、緊密結合。
內容新穎
聚焦當前的研究熱點,引入深度學習算法解決多種自然語言處理問題。
資源豐富
配有微課視頻、提供相關代碼包,充分利用線上資源優勢,輔助知識理解。
自然語言處理是人工智能的重要分支,自然語言處理技術是體現人工智能技術發展程度的一個重要衡量尺度。伴隨著人工智能在幾十年間的幾度沉浮,自然語言處理技術的發展勢頭也同樣經歷著多次的高潮與低谷。當前,隨著新一代人工智能技術的蓬勃發展,自然語言處理技術也迎來了一個前所未有的發展高峰期,尤其在21世紀前后,統計學習方法被作為主要技術手段應用在自然語言處理中,并在多個領域取得了革命性的進步。進入到21世紀的第二個十年以后,隨著對深度學習的研究,以及新型的詞向量技術的出現,尤其是大規模自監督預訓練模型的出現,自然語言處理技術在很多領域得到了快速發展,并逐漸進入成熟的商業應用,先后在智能搜索引擎、信息抽取、對話與聊天系統以及文本生成等領域進入開花落地階段。
隨著自然語言處理技術的快速發展,自然語言處理得到業界越來越多的關注,越來越多的相關書籍紛紛問世,從筆者的角度來看,這些書籍可根據面向的人群分為兩類:一類是面向行業從業人員,這類書籍更加注重實踐環節,對理論著筆比重較低;另一類是面向研究生以上學歷的學習者,這類書籍更加偏重理論部分的講解,對實踐環節著墨較少。筆者認為,隨著自然語言處理技術的快速普及,也可以開設面向高年級本科生和低年級研究生的相關課程,而面向這類人群的教材應該做到理論和實踐并重,同時理論部分又需要適當精簡,做到深入淺出;而實踐部分則需要緊扣理論,以驗證性實踐項目為主,不宜過于復雜,通過恰當的案例讓學生加深對理論的理解,同時培養學生的實踐動手能力。從這個角度出發,筆者開始醞釀并編寫這樣一本教材。
本書從四個層面介紹自然語言處理技術,首先對自然語言處理技術的發展歷程、技術特點以及當前的研究現狀進行概述。第二個層面主要是講述自然語言處理技術的兩個基礎:編程基礎和算法基礎。在第2章講解了自然語言處理技術的編程基礎,由于當前Python語言已經成為自然語言處理技術的主流編程語言,因此在這一章主要對Python的語法特點和自然語言處理技術中常用的相關模塊進行了講解,對于不了解Python編程語言的學生,可以利用這一章補齊短板;對于已經具備編程基礎的學生,則可以直接跳過。第3章系統介紹了自然語言處理技術的算法基礎,包含常用的機器學習算法,例如分類算法、聚類算法、人工神經網絡模型等。對于沒有算法基礎的學生來講,這一章可以很好地補充基礎算法知識,為下面進入自然語言處理相關領域奠定算法基礎。對于已經掌握了這些基礎算法的學生來講,則可以直接跳過此章。第三個層面主要講解了基于統計學習方法的自然語言處理技術的一些基礎任務,例如分詞技術、關鍵詞抽取技術等。第四個層面則是從詞向量模型開始講起,從Word2vec到大規模預訓練模型BERT,以及在此基礎上結合最新的深度學習算法的自然語言處理研究領域,例如文本分類技術、信息抽取技術、機器閱讀理解技術、文本生成和摘要抽取技術以及對話和聊天系統等。本書相關代碼詳見https://github.com/nlpresearchers/nlpbook。
在本書的籌備和編寫過程中,馮建周負責全書的結構設計和統稿審校工作,具體章節負責人如下:第1章由馮建周編寫,第2章由王文龍編寫,第3章由于浩洋編寫,第4~6章由余揚和王琴編寫,第7章由馮建周和徐甘霖編寫,第8章由馮建周、崔金滿和魏啟凱編寫,第9章由魏永輝和劉鎖陣編寫,第10章由魏永輝和任重燦編寫,第11章由魏永輝和龍景編寫。
由于編寫時間倉促和編者水平限制,書中難免存在錯誤、疏漏之處,望讀者包涵,批評指正。
第1章 自然語言處理概述 1
1.1 自然語言處理的定義 1
1.2 自然語言處理的應用領域 1
1.3 自然語言處理的發展歷程 4
1.4 自然語言處理的研究現狀和發展趨勢 5
1.5 自然語言處理的知識和技術儲備 6
本章小結 7
第2章 自然語言處理編程基礎 8
2.1 Python基礎 8
2.1.1 Python語言概述 8
2.1.2 Python基礎知識 9
2.2 NumPy和Pandas的使用 15
2.2.1 NumPy的使用 16
2.2.2 Pandas的使用 20
2.3 深度學習框架PyTorch 27
2.3.1 PyTorch簡介及環境搭建 27
2.3.2 PyTorch入門 28
本章小結 34
第3章 機器學習算法基礎 35
3.1 分類算法 35
3.1.1 樸素貝葉斯模型 35
3.1.2 決策樹模型 37
3.1.3 支持向量機模型 38
3.1.4 邏輯回歸模型 39
3.2 聚類算法 41
3.2.1 原型聚類 41
3.2.2 密度聚類 42
3.2.3 層次聚類 43
3.3 模型評估與選擇 44
3.3.1 經驗誤差與過擬合 44
3.3.2 評估方法 45
3.3.3 性能度量 47
3.4 概率圖模型 49
3.4.1 隱馬爾可夫模型(HMM) 49
3.4.2 條件隨機場模型 50
3.4.3 LDA模型 53
3.5 集成學習 53
3.5.1 個體與集成 53
3.5.2 XGboost模型 54
3.5.3 Bagging和隨機森林 55
3.6 人工神經網絡與深度學習 55
3.6.1 人工神經網絡與深度學習概述 55
3.6.2 BP神經網絡 56
3.6.3 卷積神經網絡(CNN) 58
3.6.4 循環神經網絡(RNN)與LSTM 59
本章小結 61
第4章 中文分詞 62
4.1 基于詞表的分詞算法 62
4.1.1 正向最大匹配算法 63
4.1.2 逆向最大匹配算法 63
4.1.3 雙向最大匹配算法 64
4.1.4 案例實現 65
4.2 基于統計模型的分詞算法 68
4.2.1 N-gram模型 69
4.2.2 基于N-gram模型的分詞算法 69
4.2.3 案例實現 70
4.3 基于序列標注的分詞算法 74
4.3.1 序列標注下的隱馬爾可夫模型 74
4.3.2 基于隱馬爾可夫模型進行中文分詞 75
4.3.3 維特比(Viterbi)算法 76
4.3.4 其他基于序列標注的分詞算法 77
4.3.5 案例實現 77
4.4 中文分詞工具 80
4.4.1 常見的中文分詞工具 80
4.4.2 Jieba分詞 80
4.4.3 案例實現 82
本章小結 83
第5章 關鍵詞提取 84
5.1 TextRank關鍵詞提取算法 85
5.1.1 PageRank算法 85
5.1.2 TextRank算法 86
5.1.3 案例實現 87
5.2 TF-IDF關鍵詞提取算法 89
5.2.1 評估詞的重要性的常見指標 90
5.2.2 TF-IDF算法 90
5.2.3 案例實現 92
本章小結 95
第6章 詞向量技術 96
6.1 詞向量技術發展歷程 96
6.1.1 詞向量概述 96
6.1.2 詞向量的發展歷程 96
6.2 Word2vec 107
6.2.1 Word2vec的基本原理 107
6.2.2 Word2vec的兩種訓練模型 107
6.2.3 Word2vec的兩種優化方法 110
6.2.4 案例實現 111
6.3 注意力機制 112
6.3.1 Encoder-Decoder框架 112
6.3.2 注意力機制概述 113
6.3.3 注意力機制的發展 116
6.4 BERT預訓練模型 118
6.4.1 Transformer模型 118
6.4.2 BERT模型 121
6.4.3 案例實現 125
本章小結 126
第7章 文本分類 127
7.1 文本分類概述 127
7.2 基于樸素貝葉斯的文本分類方法 128
7.2.1 基于樸素貝葉斯算法的文本分類流程 128
7.2.2 案例實現 129
7.3 基于深度學習的文本分類 131
7.3.1 基于卷積神經網絡的文本分類 131
7.3.2 案例實現 131
7.4 開放領域文本分類 134
7.4.1 開放領域文本分類簡介 134
7.4.2 案例實現 135
本章小結 139
第8章 文本信息抽取 140
8.1 命名實體識別 140
8.1.1 命名實體識別概述 140
8.1.2 基于LSTM的命名實體識別 142
8.1.3 細粒度命名實體識別 146
8.2 實體關系抽取 151
8.2.1 關系抽取概述 151
8.2.2 基于卷積神經網絡的關系抽取算法 152
8.2.3 實體關系的聯合抽取算法 156
8.3 事件抽取 162
8.3.1 事件抽取概述 162
8.3.2 事件檢測 163
8.3.3 事件元素抽取 168
本章小結 174
第9章 機器閱讀理解 175
9.1 機器閱讀理解概述 175
9.2 抽取式閱讀理解 177
9.2.1 抽取式閱讀理解概述 177
9.2.2 基于BiDAF的抽取式閱讀理解案例 178
9.2.3 基于預訓練模型的抽取式閱讀理解 181
9.3 選擇式閱讀理解 183
9.3.1 選擇式閱讀理解概述 183
9.3.2 基于Co-Match的選擇式閱讀理解案例 184
9.3.3 基于預訓練模型的選擇式閱讀理解 187
本章小結 188
第10章 文本生成與文本摘要 190
10.1 文本生成與文本摘要概述 190
10.2 抽取式文本摘要 192
10.2.1 傳統方法 193
10.2.2 基于RNN的抽取式文本摘要 194
10.2.3 基于預訓練模型的抽取式文本摘要 195
10.3 生成式文本摘要 196
10.3.1 早期的Seq2Seq模型 197
10.3.2 Seq2Seq+Attention模型 197
10.3.3 指針生成網絡 198
10.3.4 預訓練模型+微調 199
10.4 文本摘要案例 201
10.4.1 文本摘要常用數據集 201
10.4.2 使用TextRank進行簡單的抽取式摘要 201
10.4.3 使用預訓練模型進行文本摘要 203
本章小結 205
第11章 對話系統 206
11.1 任務型對話系統 206
11.1.1 模塊化方法 206
11.1.2 自然語言理解(NLU) 207
11.1.3 對話狀態跟蹤(DST) 210
11.1.4 對話策略學習(DPL) 211
11.1.5 自然語言生成(NLG) 212
11.2 閑聊對話系統 213
11.2.1 檢索式對話系統 214
11.2.2 粗排模型 215
11.2.3 精排模型 216
11.2.4 檢索式對話系統實現 218
11.3 基于PyTorch框架的對話系統實戰 221
11.3.1 數據準備和模塊加載 222
11.3.2 加載和預處理數據 223
11.3.3 創建詞典 226
11.3.4 為模型準備數據 229
11.3.5 定義模型 231
11.3.6 定義訓練步驟 235
11.3.7 訓練迭代 235
11.3.8 評估定義 237
11.3.9 評估文本 238
11.3.10 運行模型 239
11.3.11 模型訓練 240
11.3.12 運行評估 241
本章小結 242
參考文獻 243