Python自然語言理解:自然語言理解系統(tǒng)開發(fā)與應(yīng)用實(shí)戰(zhàn) [美]黛博拉·A. 達(dá)爾
定 價:99 元
- 作者:[美]黛博拉·A. 達(dá)爾
- 出版時間:2024/7/1
- ISBN:9787111758389
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書的目標(biāo)是為Python開發(fā)人員提供堅實(shí)的NLU基礎(chǔ)知識。本書將深入探索自然語言理解相關(guān)實(shí)用技術(shù),并幫助讀者創(chuàng)建各種新穎實(shí)用的自然語言理解應(yīng)用程序。本書共分為三部分:第1部分介紹了NLU的背景以及如何開始一個NLU項目;第二部分探討了完成NLU任務(wù)所需要使用的Python工具和相關(guān)技術(shù);第三部分討論了在管理和部署NLU應(yīng)用程序時應(yīng)該考慮的因素,以及對NLU未來的展望。
本書是一本全面介紹自然語言理解技術(shù)的實(shí)用指南,涵蓋自然語言理解的常用技術(shù)和眾多資源。書中不僅通過實(shí)際示例逐步解釋自然語言理解方面的基本概念、常用技術(shù)及其應(yīng)用方法,還詳細(xì)講解了每種技術(shù)的適用場景。此外,本書還介紹了實(shí)用的自然語言理解Python庫,以及常見問題的解決方案,如數(shù)據(jù)收集、系統(tǒng)評估以及自然語言理解應(yīng)用程序的部署等。通過閱讀本書,你將熟悉自然語言理解、深度學(xué)習(xí)和大語言模型方面的基礎(chǔ)知識,并掌握足夠的技能,可以將所學(xué)知識應(yīng)用于自然語言理解學(xué)術(shù)研究和實(shí)際的應(yīng)用項目中。
PREFACE
前 言
自然語言理解(Natural Language Understanding,NLU)是一種建模語言的方法,使
得計算機(jī)系統(tǒng)能夠處理語言文本,從而支持多種應(yīng)用程序的開發(fā)。
本書是一本關(guān)于 NLU 的實(shí)用指南。閱讀完本書,開發(fā)人員將學(xué)會如何將 NLU 技術(shù)應(yīng)用于各個領(lǐng)域,同時管理人員也將學(xué)會如何明確 NLU 在解決企業(yè)實(shí)際問題時的應(yīng)用范圍。
本書通過基本概念和實(shí)際示例的逐步闡釋,首先帶你了解什么是 NLU 以及如何應(yīng)用NLU 技術(shù)。然后,本書將探討當(dāng)下流行的 NLU 方法,并提供應(yīng)用每種方法的最佳實(shí)踐,包括最新的大語言模型(Large Language Model,LLM)。在此過程中,本書還會介紹最實(shí)用的 Python NLU 庫。通過閱讀本書,你將不僅掌握 NLU 的基礎(chǔ)知識,還將學(xué)會眾多實(shí)際問題的解決方案,如數(shù)據(jù)收集、系統(tǒng)評估、系統(tǒng)改進(jìn),以及 NLU 部署與應(yīng)用。其中最重要的是,本書不僅介紹一系列 NLU 方法,還會介紹在未來的工作中會用到的互聯(lián)網(wǎng)上豐富的 NLU 資源。
本書的目標(biāo)讀者
對于那些對學(xué)習(xí) NLU 感興趣或?qū)?yīng)用自然語言處理(Natural Language Processing,
NLP)方法來解決實(shí)際問題感興趣的 Python 開發(fā)人員(包括計算語言學(xué)家、語言學(xué)家、數(shù)據(jù)科學(xué)家、NLP 開發(fā)人員、AI 會話開發(fā)者以及相關(guān)領(lǐng)域的學(xué)生)來說,閱讀本書將獲益頗多。對于那些不具備技術(shù)背景的項目經(jīng)理來說,本書的前幾章也頗有趣味性。
為了深入地理解本書,讀者需要具備一定的 Python 基礎(chǔ)知識,但不需要掌握與 NLU相關(guān)的專業(yè)知識。
本書內(nèi)容
本書共 15 章,將帶領(lǐng)讀者全面而深入地理解 NLU,首先介紹 NLU 的基本概念,然后逐步講解 NLU 應(yīng)用領(lǐng)域和 NLU 系統(tǒng)開發(fā),最后探討如何改進(jìn)已經(jīng)開發(fā)的系統(tǒng)。
第 1 章將闡釋 NLU 的基本概念,以及 NLU 與語音識別等相關(guān)技術(shù)之間的區(qū)別。
第 2 章將系統(tǒng)地介紹 NLU 的應(yīng)用領(lǐng)域,并簡述每種應(yīng)用程序的具體需求。此外,還將列舉一些以當(dāng)前技術(shù)水平難以實(shí)現(xiàn)的應(yīng)用案例。
第 3 章將概述 NLU 的主要方法及其優(yōu)缺點(diǎn),包括基于規(guī)則的方法、基于統(tǒng)計的方法和基于深度學(xué)習(xí)的方法。此外,本章還將討論當(dāng)今流行的預(yù)訓(xùn)練模型,如 BERT 及其衍生模型。最后,本章將討論如何組合不同的方法形成一個解決方案。
第 4 章關(guān)注自然語言處理前的準(zhǔn)備工作。本章首先討論 JupyterLab 和 GitHub 等通用工具,以及它們的安裝和使用方法。然后介紹如何安裝 Python 和眾多用于 NLU 領(lǐng)域的Python 庫,包括 NLTK、spaCy 以及 TensorFlow/Keras。
第 5 章將介紹如何辨別和收集用于 NLU 的數(shù)據(jù)。本章將討論來自數(shù)據(jù)庫、網(wǎng)絡(luò)和文檔的數(shù)據(jù),以及數(shù)據(jù)的隱私性和倫理問題,還將簡要介紹綠野仙蹤技術(shù)(The Wizard of Oz technique)和其他通過模擬生成數(shù)據(jù)的方法。對于那些無法獲得數(shù)據(jù),或希望將自己的結(jié)果與其他研究人員的結(jié)果進(jìn)行比較的讀者,本章還將討論易獲得且廣泛使用的語料庫。此外,本章將進(jìn)一步討論文本數(shù)據(jù)預(yù)處理的基本操作,如詞干提取和詞形還原。
第 6 章將討論用于獲取數(shù)據(jù)整體情況的數(shù)據(jù)分析方法,包括獲取詞頻、類別頻率等數(shù)據(jù)匯總統(tǒng)計信息。本章還將討論 matplotlib 等可視化工具,以及基于可視化和統(tǒng)計結(jié)果做出的各種類型的決策。
第 7 章將討論在選擇算法時需要考慮的各種因素,包括數(shù)據(jù)規(guī)模、訓(xùn)練資源以及計劃的應(yīng)用場合。本章還將討論使用嵌入向量來表示語言,為定量處理自然語言做好準(zhǔn)備。本章最后將介紹如何使用 pipeline 方法組合多種算法。
第 8 章將討論如何將基于規(guī)則的方法用于具體的應(yīng)用。本章將給出正則表達(dá)式、詞形還原、句法分析、語義角色分配和本體知識等例子。本章主要使用 NLTK 庫。
第 9 章將討論如何將統(tǒng)計機(jī)器學(xué)習(xí)方法,如樸素貝葉斯、詞頻逆文檔頻率(Term
Freguency-Inverse Document Freguency,TF-IDF)、支持向量機(jī)(Support Vector Machine,SVM)和條件隨機(jī)場等,應(yīng)用于文本分類、意圖識別和實(shí)體提取等任務(wù)。本章將重點(diǎn)關(guān)
注較新的方法,以及這些方法相比于傳統(tǒng)方法的性能改進(jìn)。
第 10 章將討論基于神經(jīng)網(wǎng)絡(luò)[全連接神經(jīng)網(wǎng)絡(luò),循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Python Networle,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)]的機(jī)器學(xué)習(xí)方法在文本分類、信息提取等問題上的應(yīng)用。本章將對這些方法的結(jié)果與第 9 章的方法進(jìn)行比較。本章還將討論神經(jīng)網(wǎng)絡(luò)中的超參數(shù)、學(xué)習(xí)率,以及迭代訓(xùn)練等相關(guān)概念。本章
使用 TensorFlow/Keras 庫。
第 11 章將介紹當(dāng)前自然語言處理領(lǐng)域表現(xiàn)最出色的方法,即 Transformer 和預(yù)訓(xùn)練模型。本章將深入探討 Transformer 背后的原理,并提供一個使用 Transformer 進(jìn)行文本分類的例子。本章所有代碼都基于 TensorFlow/Keras Python 庫。
第 12 章將討論無監(jiān)督學(xué)習(xí)方法的應(yīng)用,包括主題建模等內(nèi)容,強(qiáng)調(diào)了無監(jiān)督學(xué)習(xí)在探數(shù)據(jù)和充分利用稀缺數(shù)據(jù)方面的價值。此外,本章還將討論部分監(jiān)督學(xué)習(xí),如弱監(jiān)督學(xué)習(xí)和遠(yuǎn)程監(jiān)督學(xué)習(xí)。
第 13 章將討論模型評價的相關(guān)問題,包括數(shù)據(jù)切分(將數(shù)據(jù)切分為訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集)、交叉驗(yàn)證、評估指標(biāo)(如精度、召回率、曲線下面積、消融實(shí)驗(yàn)、統(tǒng)計顯著性檢測和用戶測試等)。
第 14 章將討論系統(tǒng)維護(hù)問題。如果原始模型性能不理想,或者現(xiàn)實(shí)情況發(fā)生了變化,那么應(yīng)該如何調(diào)整模型?本章將討論在確保新數(shù)據(jù)不會降低現(xiàn)有系統(tǒng)的性能的前提下,如何添加新數(shù)據(jù)以及如何改變應(yīng)用程序的結(jié)構(gòu)。
第 15 章將提供本書的概述和對未來發(fā)展方向的展望。本章將討論系統(tǒng)可能存在改進(jìn)的地方,從而使系統(tǒng)訓(xùn)練得更快、適用于更具挑戰(zhàn)性的應(yīng)用程序。此外,本章還會介紹NLU領(lǐng)域的研究方向和未來技術(shù)的發(fā)展趨勢。
使用本書的先決條件
本書提供了 Jupyter Notebook 格式的代碼示例。要運(yùn)行這些 Notebook,讀者需要具備一定的 Python 編程基礎(chǔ),并熟悉一些基本的 Python 庫。此外,還需要安裝必要的軟件包。
安裝軟件包的最簡單方法是使用 pip 工具。pip 是一個優(yōu)秀的 Python 包管理工具。如
果你尚未在計算機(jī)上安裝 pip,那么可以按照鏈接 https://pypi.org/project/pip/
提供的安裝說明進(jìn)行安裝。
熟練掌握 Python 編程語言將有助于更好地理解本書中的關(guān)鍵概念。本書中的示例可
以在 CPU 上運(yùn)行,不需要使用 GPU,盡管一些復(fù)雜的機(jī)器學(xué)習(xí)示例在 GPU 上運(yùn)行的速
度會更快。
本書的所有代碼示例均在 Windows 11(64 位)操作系統(tǒng)上通過測試,確保其可行
性。
下載示例代碼文件
你可以從 GitHub 網(wǎng)站(https://github.com/PacktPublishing/Natural-Language?Understanding-with-Python)下載本書的示例代碼文件。如果本書的代碼有更新,那么 GitHub 庫中的代碼也會有相應(yīng)的更新。
下載彩色圖片
我們還提供了一個 PDF 文件,包含本書使用的屏幕截圖和圖表的彩色圖像。你可以從以下鏈接下載:https://packt.link/HrkNr。
排版約定
本書使用了多種文本約定,以區(qū)分不同類型的信息。
文本代碼:用于表示代碼示例、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴(kuò)展名、路徑名、虛擬 URL、用戶輸入以及 Twitter 句柄,例如“我們將使用 ENCOAdjacency
DistributionModule 對象建模鄰接矩陣”。
以下是一段代碼示例:
命令行輸入或輸出的寫法如下:
加粗字體:用于表示新術(shù)語、重要詞匯或屏幕上顯示的詞匯。例如,菜單或?qū)υ捒蛑械脑~。以粗體顯示。例如,從管理面板中選擇系統(tǒng)信息。
致謝
在我的職業(yè)生涯中,大部分時間都專注于顧問工作。作為獨(dú)立顧問,我享受到的一大好處是有機(jī)會與不同機(jī)構(gòu)的各路精英一同合作。這種合作使我能夠接觸到多種多樣的技術(shù),這是我在一家或幾家公司工作時難以獲得的。
在此,我由衷感謝所有與我一同工作的同事。從我學(xué)生時代起,一直到我的整個職業(yè)生涯,我都與這些同事通力合作。感謝來自伊利諾伊大學(xué)、明尼蘇達(dá)大學(xué)、賓夕法尼亞大學(xué)、Unisys 公司、MossRehab、心理語言技術(shù)公司、自閉癥語言治療機(jī)構(gòu)、Openstream、萬維網(wǎng)聯(lián)盟、萬維網(wǎng)基金會、應(yīng)用語音輸入輸出協(xié)會、今日信息、新互動、大學(xué)太空研究協(xié)會、美國宇航局阿姆斯研究中心、開放語音網(wǎng)絡(luò)的同事們,鑒于人數(shù)眾多,我無法一一列舉。從他們身上,我學(xué)習(xí)到了許多寶貴的經(jīng)驗(yàn)和知識。
黛博拉·達(dá)爾(Deborah A.Dahl)是 Conversational Technologies 公司的負(fù)責(zé)人,在自
然語言理解技術(shù)領(lǐng)域擁有超過 30 年的經(jīng)驗(yàn)。她為科研機(jī)構(gòu)、商業(yè)機(jī)構(gòu)和政府部門開發(fā)了多個自然語言處理系統(tǒng),其中包括為 NASA 開發(fā)的自然語言理解系統(tǒng)以及為安卓系統(tǒng)開發(fā)的語音和自然語言組件。多年來,黛博拉為眾多客戶提供了自然語言處理方面的咨詢服務(wù),積極參與了 20 多個自然語言處理方面的研討會,并撰寫了 70 多篇技術(shù)論文。本書是黛博拉在自然語言理解方面撰寫的第四本著作。黛博拉在明尼蘇達(dá)大學(xué)獲得了語言學(xué)博士學(xué)位,并曾在賓夕法尼亞大學(xué)從事博士后研究,研究方向?yàn)檎J(rèn)知科學(xué)。
前言
作者簡介
審校者簡介
第一部分 自然語言理解技術(shù)入門
第 1 章 自然語言理解方法與應(yīng)用程序 2
1.1 自然語言基礎(chǔ)知識 3
1.2 自然語言與字符編碼 3
1.3 對話式人工智能與自然語言理解 4
1.4 交互式應(yīng)用程序—聊天機(jī)器人與語音助手 5
1.4.1 通用語音助手 6
1.4.2 企業(yè)助手 6
1.4.3 翻譯 7
1.4.4 教育 7
1.5 非交互式應(yīng)用程序 8
1.5.1 分類 9
1.5.2 情感分析 9
1.5.3 垃圾郵件與網(wǎng)絡(luò)釣魚檢測 9
1.5.4 虛假新聞檢測 10
1.5.5 文檔檢索 10
1.5.6 分析 10
1.5.7 信息抽取 11
1.5.8 機(jī)器翻譯 11
1.5.9 其他應(yīng)用程序 11
1.5.10 應(yīng)用程序類型總結(jié) 12
1.6 Python 自然語言處理展望 12
1.7 本章小結(jié) 13
第 2 章 識別自然語言理解問題 14
2.1 識別適合當(dāng)前技術(shù)水平的問題 15
2.1.1 自然語言理解難以解決的問題 17
2.1.2 不需要自然語言理解的應(yīng)用程序 21
2.1.3 訓(xùn)練數(shù)據(jù) 24
2.1.4 應(yīng)用數(shù)據(jù) 25
2.2 開發(fā)成本 25
2.3 維護(hù)成本 26
2.4 決定是否使用自然語言理解的流程 27
2.5 本章小結(jié) 28
第二部分 自然語言理解系統(tǒng)開發(fā)與測試
第 3 章 自然語言理解方法 30
3.1 基于規(guī)則的方法 30
3.1.1 詞與詞典 31
3.1.2 詞性標(biāo)注 31
3.1.3 語法 32
3.1.4 句法分析 32
3.1.5 語義分析 32
3.1.6 語用分析 33
3.1.7 pipeline 33
3.2 傳統(tǒng)的機(jī)器學(xué)習(xí)算法 34
3.2.1 文檔表示 35
3.2.2 文檔分類 35
3.3 深度學(xué)習(xí)方法 36
3.4 預(yù)訓(xùn)練模型 37
3.5 選擇自然語言理解方法需要考慮的因素 37
3.6 本章小結(jié) 38
第 4 章 用于自然語言理解的Python 庫與工具 39
4.1 技術(shù)要求 40
4.2 安裝 Python 40
4.3 安裝 JupyterLab 和 GitHub 41
4.3.1 JupyterLab 41
4.3.2 GitHub 42
4.4 常用的自然語言處理Python 庫 42
4.4.1 NLTK 43
4.4.2 spaCy 45
4.4.3 Keras 47
4.4.4 其他自然語言處理Python 庫 47
4.4.5 自然語言處理 Python庫的選擇 47
4.4.6 其他有用的 Python 庫 48
4.5 一個示例 49
4.5.1 設(shè)置 JupyterLab 49
4.5.2 處理一句話 51
4.5.3 查看語料庫屬性 52
4.6 本章小結(jié) 56
第 5 章 數(shù)據(jù)收集與數(shù)據(jù)預(yù)處理 57
5.1 數(shù)據(jù)收集與數(shù)據(jù)標(biāo)注 57
5.1.1 收集應(yīng)用程序所需數(shù)據(jù) 58
5.1.2 收集科研項目所需數(shù)據(jù) 59
5.1.3 元數(shù)據(jù) 60
5.1.4 常用語料庫 61
5.2 確保數(shù)據(jù)的隱私性并遵守道德準(zhǔn)則 62
5.2.1 確保訓(xùn)練數(shù)據(jù)的隱私 63
5.2.2 確保運(yùn)行時數(shù)據(jù)的隱私 63
5.2.3 人道地對待實(shí)驗(yàn)參與者 63
5.2.4 人道地對待眾包工作者 63
5.3 數(shù)據(jù)預(yù)處理 64
5.3.1 刪除非文本數(shù)據(jù) 64
5.3.2 文本正則化 66
5.3.3 拼寫錯誤校正 72
5.4 針對具體應(yīng)用程序的數(shù)據(jù)預(yù)處理 74
5.4.1 用類 token 替換單詞和數(shù)字 74
5.4.2 修改數(shù)據(jù) 75
5.4.3 特定領(lǐng)域的停用詞 75
5.4.4 刪除 HTML 標(biāo)記 75
5.4.5 數(shù)據(jù)不平衡問題 75
5.4.6 文本預(yù)處理 pipeline 75
5.5 選擇合適的數(shù)據(jù)預(yù)處理方法 76
5.6 本章小結(jié) 77
第 6 章 數(shù)據(jù)探索與數(shù)據(jù)可視化 78
6.1 為什么要進(jìn)行數(shù)據(jù)可視化 78
6.2 數(shù)據(jù)探索 80
6.2.1 頻率分布 80
6.2.2 文檔相似性度量 93
6.3 數(shù)據(jù)可視化注意事項 99
6.4 基于數(shù)據(jù)可視化信息對后續(xù)數(shù)據(jù)處理做出決策 102
6.5 本章小結(jié) 102
第 7 章 自然語言處理方法選擇與數(shù)據(jù)表示 103
7.1 自然語言處理方法選擇 103
7.1.1 選擇適合任務(wù)的方法 104
7.1.2 從數(shù)據(jù)出發(fā) 104
7.1.3 計算效率 105
7.1.4 初步研究 105
7.2 自然語言處理應(yīng)用程序中的語言表示 106
7.3 使用數(shù)學(xué)向量表示語言 108
7.4 使用上下文無關(guān)向量表示單詞 114
7.5 使用上下文相關(guān)向量表示單詞 117
7.6 本章小結(jié) 117
第 8 章 基于規(guī)則的方法 118
8.1 基于規(guī)則的方法簡介 118
8.2 為什么要使用規(guī)則 119
8.3 正則表達(dá)式 119
8.3.1 使用正則表達(dá)式識別、分析和替換字符串 120
8.3.2 常用的正則表達(dá)式技巧 122
8.4 詞匯級分析 122
8.4.1 詞形還原 123
8.4.2 本體 123
8.5 句子級分析 125
8.5.1 句法分析 125
8.5.2 語義分析與槽填充 128
8.6 本章小結(jié) 133
第 9 章 機(jī)器學(xué)習(xí)第1部分—統(tǒng)計機(jī)器學(xué)習(xí) 134
9.1 模型評估方法簡介 135
9.2 基于詞頻逆文檔頻率的文檔表示與基于樸素貝葉斯算法的文檔分類 136
9.2.1 詞頻逆文檔頻率 136
9.2.2 樸素貝葉斯文檔分類 136
9.2.3 基于詞頻逆文檔頻率的文檔表示與基于樸素貝葉斯算法的文檔分類示例 137
9.3 基于支持向量機(jī)的文檔分類 139
9.4 基于條件隨機(jī)場模型的槽填充 141