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