近年來,自然語言處理技術(shù)備受矚目,一方面受益于計算機(jī)硬件和機(jī)器學(xué)習(xí)等相關(guān)技術(shù)的快速發(fā)展,自然語言處理的技術(shù)性能得到了快速提高,讓人們真實(shí)地看到和切身感受到了該技術(shù)所帶來的便利; 另一方面,隨著計算機(jī)網(wǎng)絡(luò)和移動通訊技術(shù)的快速發(fā)展和普及應(yīng)用,人們對自然語言處理技術(shù)的需求愈加迫切,對技術(shù)性能和服務(wù)方式的要求也越來越高,從機(jī)器翻譯、問答系統(tǒng)和人機(jī)對話系統(tǒng),到自動文摘、情感分析和觀點(diǎn)挖掘等,再從輿論監(jiān)督、社會管理和國家安全,到工商業(yè)界的業(yè)務(wù)需求和普通百姓的日常生活服務(wù),自然語言處理技術(shù)都以其不可替代的地位和作用得到了廣泛關(guān)注和重視。尤其2022年底大規(guī)模語言模型騰空出世,徹底刷新了人們對自然語言處理技術(shù)的傳統(tǒng)認(rèn)知,甚至顛覆和改變了整個人工智能領(lǐng)域的研究范式和發(fā)展方向。自然語言處理學(xué)科方向從鮮為人知的丑小鴨一躍而成為備受追捧的白天鵝,這門課程也在大多數(shù)高校的人工智能學(xué)院或人工智能專業(yè)中理所當(dāng)然地成為專業(yè)必修課。自然語言處理的春天來到了。
在春暖花開的季節(jié)里,不同模態(tài)數(shù)據(jù)之間的邊界變得越來越模糊,自然語言文本、語音、圖像和視頻處理幾乎進(jìn)入了同一種范式。與此同時,學(xué)術(shù)界和工業(yè)界研發(fā)機(jī)構(gòu)所從事的工作越來越趨于同質(zhì)化。越來越多的共享數(shù)據(jù)、技術(shù)和平臺,為該領(lǐng)域的迅速成長和壯大提供了強(qiáng)有力的支持。這對于技術(shù)初學(xué)者來說,何嘗不是一件幸事!但是,面對蜂擁而出的各類算法和模型,如何為初學(xué)者提供一個快速入門的切入點(diǎn)呢?大語言模型席卷全球,其最基本的理論方法和實(shí)現(xiàn)技術(shù)是什么?通過一種什么樣的方式讓初學(xué)者快速地了解每一種算法和模型是如何實(shí)現(xiàn)的,數(shù)據(jù)應(yīng)如何處理,參數(shù)該如何配置和優(yōu)化,系統(tǒng)要如何搭建,平臺可如何使用?這些基本問題和需求像線蟲一樣蠕動在我的心里,讓我時不時地產(chǎn)生要撰寫一部介紹技術(shù)實(shí)現(xiàn)方法著作的沖動,有時候這種蠕動如芒刺在背讓我坐臥不安。當(dāng)百度飛槳技術(shù)團(tuán)隊(duì)通過清華大學(xué)出版社聯(lián)系我,有意合作撰寫本書時,讓我頓時眼前一亮,因?yàn)槲抑里w槳團(tuán)隊(duì)有足夠的實(shí)力協(xié)助我完成這一任務(wù),他們不僅有經(jīng)驗(yàn)豐富的專業(yè)技術(shù)人員,而且有成熟可靠的飛槳平臺。我自己團(tuán)隊(duì)得力干將趙陽博士(副研究員)的加盟更讓我信心倍增。于是,我們一拍即合。自那一刻起,我便堅信芒刺將不復(fù)存在。
本書默認(rèn)讀者對自然語言處理的基礎(chǔ)理論和方法有一定的了解,所以理論部分僅點(diǎn)到為止,而主要筆墨用于介紹技術(shù)具體實(shí)現(xiàn)方法。在內(nèi)容分配上,以當(dāng)前主流的神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)方法為主,適當(dāng)涉及n元文法模型和條件隨機(jī)場等統(tǒng)計自然語言處理的經(jīng)典方法; 既有關(guān)鍵技術(shù),也有應(yīng)用系統(tǒng),通過具體案例從不同層面全方位地貫穿整個自然語言處理全域。書中提供的每個代碼都已經(jīng)通過調(diào)試,并以Jupyter Notebook形式托管在百度AI Studio星河社區(qū)上。讀者按照書中的說明就可以直接使用AI Studio星河社區(qū)提供的免費(fèi)GPU算力卡在線編譯運(yùn)行書中的程序代碼,為讀者實(shí)踐、練習(xí)提供了極大的便利。
作為共同作者的趙陽博士和飛槳技術(shù)團(tuán)隊(duì)為本書的寫作給予了最有力的支持和幫助,如果沒有他們的鼎力相助和友好合作,恐怕一切還只會停留在我的空想和沖動之中。在此向他們表示最誠摯的謝意!
本書的撰寫工作得到了中國科學(xué)院大學(xué)教材出版中心的資助。學(xué)校教務(wù)處的田晨晨老師、人工智能學(xué)院的肖俊副院長和屈曉春老師給予了大力幫助和支持。同行專家趙鐵軍、王厚峰、王小捷、黃民烈和張家俊等對本書的初始結(jié)構(gòu)提出了寶貴的修改建議。中國科學(xué)院自動化研究所自然語言處理團(tuán)隊(duì)的向露博士對書中的部分內(nèi)容進(jìn)行了審閱和補(bǔ)充。清華大學(xué)出版社的孫亞楠編輯和王倩編輯給予了最貼心的幫助。一并向他們表示衷心的感謝!
本書從2021年6月開始策劃,基本內(nèi)容確定之后實(shí)施代碼編寫、調(diào)試和優(yōu)化工作,在組織準(zhǔn)備過程中對部分內(nèi)容進(jìn)行了微調(diào),至2022年初基本完成。2022年底大模型出現(xiàn)之后,根據(jù)最新技術(shù)發(fā)展我們又對書中部分內(nèi)容重新作了調(diào)整。由于時間十分倉促,再加上作者的水平有限,書中難免有不妥之處,甚至可能存在疏漏或錯誤。作者真誠地歡迎讀者給予批評指正,或提出修改建議。謝謝!
宗成慶
2023年12月
第1章緒論
1.1自然語言處理方法概述
1.2本書的內(nèi)容組織
1.3本書的實(shí)踐平臺
1.3.1本地運(yùn)行
1.3.2AI Studio星河社區(qū)運(yùn)行
1.3.3本書使用的API
1.3.4本書使用的數(shù)據(jù)集
第2章神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
2.1概述
2.2神經(jīng)元與感知機(jī)
2.2.1神經(jīng)元
2.2.2感知機(jī)
2.2.3常見的激活函數(shù)
2.3前饋神經(jīng)網(wǎng)絡(luò)
2.4卷積神經(jīng)網(wǎng)絡(luò)
2.4.1卷積
2.4.2池化
2.4.3卷積神經(jīng)網(wǎng)絡(luò)
2.5循環(huán)神經(jīng)網(wǎng)絡(luò)
2.5.1簡單循環(huán)神經(jīng)網(wǎng)絡(luò)
2.5.2長短時記憶網(wǎng)絡(luò)
2.5.3門控循環(huán)單元
2.5.4循環(huán)神經(jīng)網(wǎng)絡(luò)拓展知識
第3章分布式表示
3.1詞的分布式表示
3.1.1靜態(tài)詞向量
3.1.2動態(tài)詞向量
3.2短語的分布式表示
3.3句子的分布式表示
3.3.1基于循環(huán)神經(jīng)網(wǎng)絡(luò)的表示方法
3.3.2基于預(yù)訓(xùn)練語言模型的表示方法
第4章序列生成模型
4.1基于循環(huán)神經(jīng)網(wǎng)絡(luò)的Seq2Seq模型
4.1.1基于RNN的Seq2Seq模型原理
4.1.2解碼策略
4.2融合注意力機(jī)制的Seq2Seq模型
4.3基于Transformer的Seq2Seq模型
4.3.1自注意力模型
4.3.2Transformer的網(wǎng)絡(luò)結(jié)構(gòu)
4.3.3Transformer編碼器
4.3.4Transformer解碼器
4.3.5知識延伸: 基于Transformer結(jié)構(gòu)的模型
第5章基礎(chǔ)語言模型
5.1統(tǒng)計語言模型
5.1.1模型定義
5.1.2數(shù)據(jù)平滑方法
5.1.3語言模型評價
5.2神經(jīng)網(wǎng)絡(luò)語言模型
5.2.1前饋神經(jīng)網(wǎng)絡(luò)語言模型
5.2.2循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型
5.2.3語言模型與詞向量
第6章預(yù)訓(xùn)練大模型
6.1GPT語言模型
6.1.1GPT模型預(yù)訓(xùn)練
6.1.2GPT在下游任務(wù)中的應(yīng)用
6.2BERT語言模型
6.2.1BERT模型的預(yù)訓(xùn)練任務(wù)
6.2.2BERT在下游任務(wù)中的應(yīng)用
6.3ERNIE 語言模型
6.4預(yù)訓(xùn)練大模型
6.4.1基礎(chǔ)大模型
6.4.2指令微調(diào)
6.4.3基于人類反饋的強(qiáng)化學(xué)習(xí)
第7章詞語切分
7.1基于BERT實(shí)現(xiàn)中文分詞
7.1.1任務(wù)目標(biāo)
7.1.2實(shí)現(xiàn)思路及流程
7.1.3數(shù)據(jù)處理
7.1.4模型構(gòu)建
7.1.5訓(xùn)練配置
7.1.6模型訓(xùn)練
7.1.7模型評估
7.1.8模型預(yù)測
7.2基于BPE算法實(shí)現(xiàn)子詞切分
7.2.1任務(wù)目標(biāo)
7.2.2實(shí)現(xiàn)思路及流程
7.2.3構(gòu)建BPE詞表
7.2.4文本子詞切分
7.2.5語料還原
7.3實(shí)驗(yàn)思考
第8章文本情感分類方法實(shí)踐
8.1基于LSTM模型的情感分類方法
8.1.1任務(wù)目標(biāo)
8.1.2實(shí)現(xiàn)思路及流程
8.1.3數(shù)據(jù)處理
8.1.4模型構(gòu)建
8.1.5訓(xùn)練配置
8.1.6模型訓(xùn)練
8.1.7模型評估
8.1.8模型預(yù)測
8.2基于BERT模型實(shí)現(xiàn)情感分類
8.2.1數(shù)據(jù)處理
8.2.2模型構(gòu)建
8.2.3訓(xùn)練配置
8.2.4模型訓(xùn)練
8.2.5模型評估
8.2.6模型預(yù)測
8.3基于BERT的屬性級情感分類
8.3.1任務(wù)目標(biāo)
8.3.2實(shí)現(xiàn)思路及流程
8.3.3屬性和觀點(diǎn)抽取
8.3.4屬性級情感分類
8.3.5全流程模型推理
8.4實(shí)驗(yàn)思考
第9章信息抽取實(shí)踐
9.1基于Bi-LSTM和CRF的命名實(shí)體識別方法
9.1.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
9.1.2數(shù)據(jù)處理
9.1.3模型構(gòu)建
9.1.4訓(xùn)練配置
9.1.5模型訓(xùn)練
9.1.6模型評估
9.1.7模型預(yù)測
9.2基于ERNIE-UIE實(shí)現(xiàn)實(shí)體關(guān)系抽取
9.2.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
9.2.2數(shù)據(jù)處理
9.2.3模型構(gòu)建
9.2.4訓(xùn)練配置
9.2.5模型訓(xùn)練
9.2.6模型評估
9.2.7模型預(yù)測
9.3實(shí)驗(yàn)思考
第10章文本語義匹配實(shí)踐
10.1基于SimNet的文本語義匹配
10.1.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
10.1.2數(shù)據(jù)處理
10.1.3模型構(gòu)建
10.1.4訓(xùn)練配置
10.1.5模型訓(xùn)練
10.1.6模型評估
10.1.7模型預(yù)測
10.2基于RocketQA的文本語義匹配
10.2.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
10.2.2數(shù)據(jù)處理
10.2.3模型構(gòu)建
10.2.4訓(xùn)練配置
10.2.5模型訓(xùn)練
10.2.6模型評估
10.2.7模型預(yù)測
10.3實(shí)驗(yàn)思考
第11章基于PEGASUS的中文文本摘要實(shí)踐
11.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
11.2數(shù)據(jù)處理
11.2.1數(shù)據(jù)集確定
11.2.2數(shù)據(jù)加載
11.2.3將數(shù)據(jù)轉(zhuǎn)換成特征形式
11.2.4構(gòu)造DataLoader
11.3模型構(gòu)建
11.4訓(xùn)練配置
11.4.1BLEU算法
11.4.2ROUGE算法
11.5模型訓(xùn)練
11.6模型評估
11.7模型預(yù)測
11.8實(shí)驗(yàn)思考
第12章基于ERNIE 3.0實(shí)現(xiàn)意圖識別
12.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
12.2數(shù)據(jù)處理
12.2.1數(shù)據(jù)集確定
12.2.2數(shù)據(jù)加載
12.2.3將數(shù)據(jù)轉(zhuǎn)換成特征形式
12.2.4構(gòu)造DataLoader
12.3模型構(gòu)建
12.4訓(xùn)練配置
12.5模型訓(xùn)練
12.6模型評估
12.7模型預(yù)測
12.8實(shí)驗(yàn)思考
第13章機(jī)器閱讀理解實(shí)踐
13.1任務(wù)目標(biāo)
13.2實(shí)現(xiàn)流程
13.3數(shù)據(jù)處理
13.3.1數(shù)據(jù)集確定
13.3.2數(shù)據(jù)加載
13.3.3將數(shù)據(jù)轉(zhuǎn)換成特征形式
13.3.4構(gòu)造DataLoader
13.4模型構(gòu)建
13.5訓(xùn)練配置
13.6模型訓(xùn)練
13.7模型評估
13.8模型預(yù)測
13.9實(shí)驗(yàn)思考
第14章機(jī)器翻譯實(shí)踐
14.1任務(wù)目標(biāo)和實(shí)現(xiàn)流程
14.2數(shù)據(jù)處理
14.2.1數(shù)據(jù)集確定
14.2.2數(shù)據(jù)加載
14.2.3將數(shù)據(jù)轉(zhuǎn)換成特征形式
14.2.4構(gòu)建DataLoader
14.2.5后處理
14.3模型構(gòu)建
14.3.1嵌入層的代碼實(shí)現(xiàn)
14.3.2組裝Transformer模型
14.4訓(xùn)練配置
14.5模型訓(xùn)練
14.6模型評估
14.6.1數(shù)據(jù)讀取
14.6.2權(quán)重加載
14.6.3模型評估
14.7模型預(yù)測
14.8實(shí)驗(yàn)思考
第15章基于大模型的自動問答實(shí)踐
15.1任務(wù)目標(biāo)和設(shè)計方案
15.2通過飛槳零代碼開發(fā)工具實(shí)現(xiàn)
15.3通過PaddleNLP實(shí)現(xiàn)
15.3.1代碼實(shí)現(xiàn)邏輯
15.3.2配置大模型
15.3.3配置向量檢索模型
15.3.4定義document store
15.3.5構(gòu)建文檔索引
15.3.6構(gòu)建問答應(yīng)用
15.3.7(可選)在線推理部署
15.4實(shí)驗(yàn)思考
附錄 術(shù)語與縮略語
參考文獻(xiàn)