新書推薦:
《
唐宋绘画史 全彩插图版
》
售價:HK$
98.6
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:HK$
106.4
《
铝合金先进成型技术
》
售價:HK$
266.6
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:HK$
98.6
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:HK$
98.6
《
金托邦:江湖中的沉重正义
》
售價:HK$
60.5
《
易经今解:释疑·解惑·见微
》
售價:HK$
88.5
《
东欧史(全二册)-“中间地带”的困境
》
售價:HK$
221.8
|
編輯推薦: |
本书是一本全面介绍自然语言理解技术的实用指南,涵盖自然语言理解的常用技术和众多资源。书中不仅通过实际示例逐步解释自然语言理解方面的基本概念、常用技术及其应用方法,还详细讲解了每种技术的适用场景。此外,本书还介绍了实用的自然语言理解Python库,以及常见问题的解决方案,如数据收集、系统评估以及自然语言理解应用程序的部署等。通过阅读本书,你将熟悉自然语言理解、深度学习和大语言模型方面的基础知识,并掌握足够的技能,可以将所学知识应用于自然语言理解学术研究和实际的应用项目中。
|
內容簡介: |
本书的目标是为Python开发人员提供坚实的NLU基础知识。本书将深入探索自然语言理解相关实用技术,并帮助读者创建各种新颖实用的自然语言理解应用程序。本书共分为三部分:第1部分介绍了NLU的背景以及如何开始一个NLU项目;第二部分探讨了完成NLU任务所需要使用的Python工具和相关技术;第三部分讨论了在管理和部署NLU应用程序时应该考虑的因素,以及对NLU未来的展望。
|
關於作者: |
黛博拉·达尔(Deborah A.Dahl)是 Conversational Technologies 公司的负责人,在自
然语言理解技术领域拥有超过 30 年的经验。她为科研机构、商业机构和政府部门开发了多个自然语言处理系统,其中包括为 NASA 开发的自然语言理解系统以及为安卓系统开发的语音和自然语言组件。多年来,黛博拉为众多客户提供了自然语言处理方面的咨询服务,积极参与了 20 多个自然语言处理方面的研讨会,并撰写了 70 多篇技术论文。本书是黛博拉在自然语言理解方面撰写的第四本著作。黛博拉在明尼苏达大学获得了语言学博士学位,并曾在宾夕法尼亚大学从事博士后研究,研究方向为认知科学。
|
目錄:
|
前言
作者简介
审校者简介
第一部分 自然语言理解技术入门
第 1 章 自然语言理解方法与应用程序 2
1.1 自然语言基础知识 3
1.2 自然语言与字符编码 3
1.3 对话式人工智能与自然语言理解 4
1.4 交互式应用程序—聊天机器人与语音助手 5
1.4.1 通用语音助手 6
1.4.2 企业助手 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 训练数据 24
2.1.4 应用数据 25
2.2 开发成本 25
2.3 维护成本 26
2.4 决定是否使用自然语言理解的流程 27
2.5 本章小结 28
第二部分 自然语言理解系统开发与测试
第 3 章 自然语言理解方法 30
3.1 基于规则的方法 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 传统的机器学习算法 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 章 数据收集与数据预处理 57
5.1 数据收集与数据标注 57
5.1.1 收集应用程序所需数据 58
5.1.2 收集科研项目所需数据 59
5.1.3 元数据 60
5.1.4 常用语料库 61
5.2 确保数据的隐私性并遵守道德准则 62
5.2.1 确保训练数据的隐私 63
5.2.2 确保运行时数据的隐私 63
5.2.3 人道地对待实验参与者 63
5.2.4 人道地对待众包工作者 63
5.3 数据预处理 64
5.3.1 删除非文本数据 64
5.3.2 文本正则化 66
5.3.3 拼写错误校正 72
5.4 针对具体应用程序的数据预处理 74
5.4.1 用类 token 替换单词和数字 74
5.4.2 修改数据 75
5.4.3 特定领域的停用词 75
5.4.4 删除 HTML 标记 75
5.4.5 数据不平衡问题 75
5.4.6 文本预处理 pipeline 75
5.5 选择合适的数据预处理方法 76
5.6 本章小结 77
第 6 章 数据探索与数据可视化 78
6.1 为什么要进行数据可视化 78
6.2 数据探索 80
6.2.1 频率分布 80
6.2.2 文档相似性度量 93
6.3 数据可视化注意事项 99
6.4 基于数据可视化信息对后续数据处理做出决策 102
6.5 本章小结 102
第 7 章 自然语言处理方法选择与数据表示 103
7.1 自然语言处理方法选择 103
7.1.1 选择适合任务的方法 104
7.1.2 从数据出发 104
7.1.3 计算效率 105
7.1.4 初步研究 105
7.2 自然语言处理应用程序中的语言表示 106
7.3 使用数学向量表示语言 108
7.4 使用上下文无关向量表示单词 114
7.5 使用上下文相关向量表示单词 117
7.6 本章小结 117
第 8 章 基于规则的方法 118
8.1 基于规则的方法简介 118
8.2 为什么要使用规则 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部分—统计机器学习 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
|
內容試閱:
|
PREFACE
前 言
自然语言理解(Natural Language Understanding,NLU)是一种建模语言的方法,使
得计算机系统能够处理语言文本,从而支持多种应用程序的开发。
本书是一本关于 NLU 的实用指南。阅读完本书,开发人员将学会如何将 NLU 技术应用于各个领域,同时管理人员也将学会如何明确 NLU 在解决企业实际问题时的应用范围。
本书通过基本概念和实际示例的逐步阐释,首先带你了解什么是 NLU 以及如何应用NLU 技术。然后,本书将探讨当下流行的 NLU 方法,并提供应用每种方法的最佳实践,包括最新的大语言模型(Large Language Model,LLM)。在此过程中,本书还会介绍最实用的 Python NLU 库。通过阅读本书,你将不仅掌握 NLU 的基础知识,还将学会众多实际问题的解决方案,如数据收集、系统评估、系统改进,以及 NLU 部署与应用。其中最重要的是,本书不仅介绍一系列 NLU 方法,还会介绍在未来的工作中会用到的互联网上丰富的 NLU 资源。
本书的目标读者
对于那些对学习 NLU 感兴趣或对应用自然语言处理(Natural Language Processing,
NLP)方法来解决实际问题感兴趣的 Python 开发人员(包括计算语言学家、语言学家、数据科学家、NLP 开发人员、AI 会话开发者以及相关领域的学生)来说,阅读本书将获益颇多。对于那些不具备技术背景的项目经理来说,本书的前几章也颇有趣味性。
为了深入地理解本书,读者需要具备一定的 Python 基础知识,但不需要掌握与 NLU相关的专业知识。
本书内容
本书共 15 章,将带领读者全面而深入地理解 NLU,首先介绍 NLU 的基本概念,然后逐步讲解 NLU 应用领域和 NLU 系统开发,最后探讨如何改进已经开发的系统。
第 1 章将阐释 NLU 的基本概念,以及 NLU 与语音识别等相关技术之间的区别。
第 2 章将系统地介绍 NLU 的应用领域,并简述每种应用程序的具体需求。此外,还将列举一些以当前技术水平难以实现的应用案例。
第 3 章将概述 NLU 的主要方法及其优缺点,包括基于规则的方法、基于统计的方法和基于深度学习的方法。此外,本章还将讨论当今流行的预训练模型,如 BERT 及其衍生模型。最后,本章将讨论如何组合不同的方法形成一个解决方案。
第 4 章关注自然语言处理前的准备工作。本章首先讨论 JupyterLab 和 GitHub 等通用工具,以及它们的安装和使用方法。然后介绍如何安装 Python 和众多用于 NLU 领域的Python 库,包括 NLTK、spaCy 以及 TensorFlow/Keras。
第 5 章将介绍如何辨别和收集用于 NLU 的数据。本章将讨论来自数据库、网络和文档的数据,以及数据的隐私性和伦理问题,还将简要介绍绿野仙踪技术(The Wizard of Oz technique)和其他通过模拟生成数据的方法。对于那些无法获得数据,或希望将自己的结果与其他研究人员的结果进行比较的读者,本章还将讨论易获得且广泛使用的语料库。此外,本章将进一步讨论文本数据预处理的基本操作,如词干提取和词形还原。
第 6 章将讨论用于获取数据整体情况的数据分析方法,包括获取词频、类别频率等数据汇总统计信息。本章还将讨论 matplotlib 等可视化工具,以及基于可视化和统计结果做出的各种类型的决策。
第 7 章将讨论在选择算法时需要考虑的各种因素,包括数据规模、训练资源以及计划的应用场合。本章还将讨论使用嵌入向量来表示语言,为定量处理自然语言做好准备。本章最后将介绍如何使用 pipeline 方法组合多种算法。
第 8 章将讨论如何将基于规则的方法用于具体的应用。本章将给出正则表达式、词形还原、句法分析、语义角色分配和本体知识等例子。本章主要使用 NLTK 库。
第 9 章将讨论如何将统计机器学习方法,如朴素贝叶斯、词频逆文档频率(Term
Freguency-Inverse Document Freguency,TF-IDF)、支持向量机(Support Vector Machine,SVM)和条件随机场等,应用于文本分类、意图识别和实体提取等任务。本章将重点关
注较新的方法,以及这些方法相比于传统方法的性能改进。
第 10 章将讨论基于神经网络[全连接神经网络,循环神经网络(Recurrent Neural Python Networle,RNN)和卷积神经网络(Convolutional Neural Network,CNN)]的机器学习方法在文本分类、信息提取等问题上的应用。本章将对这些方法的结果与第 9 章的方法进行比较。本章还将讨论神经网络中的超参数、学习率,以及迭代训练等相关概念。本章
使用 TensorFlow/Keras 库。
第 11 章将介绍当前自然语言处理领域表现最出色的方法,即 Transformer 和预训练模型。本章将深入探讨 Transformer 背后的原理,并提供一个使用 Transformer 进行文本分类的例子。本章所有代码都基于 TensorFlow/Keras Python 库。
第 12 章将讨论无监督学习方法的应用,包括主题建模等内容,强调了无监督学习在探数据和充分利用稀缺数据方面的价值。此外,本章还将讨论部分监督学习,如弱监督学习和远程监督学习。
第 13 章将讨论模型评价的相关问题,包括数据切分(将数据切分为训练数据集、验证数据集和测试数据集)、交叉验证、评估指标(如精度、召回率、曲线下面积、消融实验、统计显著性检测和用户测试等)。
第 14 章将讨论系统维护问题。如果原始模型性能不理想,或者现实情况发生了变化,那么应该如何调整模型?本章将讨论在确保新数据不会降低现有系统的性能的前提下,如何添加新数据以及如何改变应用程序的结构。
第 15 章将提供本书的概述和对未来发展方向的展望。本章将讨论系统可能存在改进的地方,从而使系统训练得更快、适用于更具挑战性的应用程序。此外,本章还会介绍NLU领域的研究方向和未来技术的发展趋势。
使用本书的先决条件
本书提供了 Jupyter Notebook 格式的代码示例。要运行这些 Notebook,读者需要具备一定的 Python 编程基础,并熟悉一些基本的 Python 库。此外,还需要安装必要的软件包。
安装软件包的最简单方法是使用 pip 工具。pip 是一个优秀的 Python 包管理工具。如
果你尚未在计算机上安装 pip,那么可以按照链接 https://pypi.org/project/pip/
提供的安装说明进行安装。
熟练掌握 Python 编程语言将有助于更好地理解本书中的关键概念。本书中的示例可
以在 CPU 上运行,不需要使用 GPU,尽管一些复杂的机器学习示例在 GPU 上运行的速
度会更快。
本书的所有代码示例均在 Windows 11(64 位)操作系统上通过测试,确保其可行
性。
下载示例代码文件
你可以从 GitHub 网站(https://github.com/PacktPublishing/Natural-Language?Understanding-with-Python)下载本书的示例代码文件。如果本书的代码有更新,那么 GitHub 库中的代码也会有相应的更新。
下载彩色图片
我们还提供了一个 PDF 文件,包含本书使用的屏幕截图和图表的彩色图像。你可以从以下链接下载:https://packt.link/HrkNr。
排版约定
本书使用了多种文本约定,以区分不同类型的信息。
文本代码:用于表示代码示例、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入以及 Twitter 句柄,例如“我们将使用 ENCOAdjacency
DistributionModule 对象建模邻接矩阵”。
以下是一段代码示例:
命令行输入或输出的写法如下:
加粗字体:用于表示新术语、重要词汇或屏幕上显示的词汇。例如,菜单或对话框中的词。以粗体显示。例如,从管理面板中选择系统信息。
致谢
在我的职业生涯中,大部分时间都专注于顾问工作。作为独立顾问,我享受到的一大好处是有机会与不同机构的各路精英一同合作。这种合作使我能够接触到多种多样的技术,这是我在一家或几家公司工作时难以获得的。
在此,我由衷感谢所有与我一同工作的同事。从我学生时代起,一直到我的整个职业生涯,我都与这些同事通力合作。感谢来自伊利诺伊大学、明尼苏达大学、宾夕法尼亚大学、Unisys 公司、MossRehab、心理语言技术公司、自闭症语言治疗机构、Openstream、万维网联盟、万维网基金会、应用语音输入输出协会、今日信息、新互动、大学太空研究协会、美国宇航局阿姆斯研究中心、开放语音网络的同事们,鉴于人数众多,我无法一一列举。从他们身上,我学习到了许多宝贵的经验和知识。
|
|