本书以实际业务场景为例,介绍自然语言处理(NLP)系统开发项目的整个生命周期——从收集数据到部署和监控模型。读者将深入理解NLP系统的开发流程,知道如何消除开发痛点,从算法、数据等方面提高NLP系统的质量。全书分为四大部分,共有11章。第一部分概述NLP技术,为全书奠定知识基础。第二部分从实战角度讲解NLP系统的开发要点,内容涉及文本分类、信息提取等。第三部分专注于NLP重点应用的垂直领域:社交媒体、电子商务、医疗行业、金融业等,并辅以Python示例。第四部分将所有知识点融会贯通,并讲解如何利用所学知识部署NLP系统。
许多介绍自然语言处理(NLP)的书通过精心设计的示例和定义良好的数据集来展示如何解决NLP问题。但是,构建生产级NLP系统不能仅靠纸上谈兵。如果你想跨越理论与实践的鸿沟,在真实的业务环境中构建、迭代和扩展NLP系统,那么这就是为你而写的指南。
本书凝集了作者在微软、谷歌等头部公司的实践经验,详细阐释了NLP在文本分类、信息提取、聊天机器人、搜索和信息检索、主题建模、文本摘要、文本推荐、机器翻译、问答系统等常见场景中的应用,内容覆盖电商、社交媒体、医疗、金融、法律等垂直应用领域。通过阅读本书,你将为从0到1开发切实可用的NLP系统奠定牢固的知识基础。
【作者简介】
索米亚·瓦贾拉(Sowmya Vajjala)拥有德国图宾根大学计算语言学博士学位,曾就职于微软研究院,拥有跨学术界和工业界的自然语言处理经验。
博迪萨特瓦·马祖达尔(Bodhisattwa Majumder)曾在谷歌和微软研究院构建自然语言处理系统,为数百万用户提供产品服务。
阿努杰·古普塔(Anuj Gupta)为《财富》100强公司和多家创业公司孵化和组建了机器学习团队。
哈尔希特·苏拉纳(Harshit Surana)是DeepFlux公司的联合创始人兼CTO,曾在卡内基–梅隆大学和麻省理工学院媒体实验室研究自然语言处理和机器学习。
【译者简介】
吴进操
近十年语言信息处理经验,曾深度参与企业级翻译系统的研发,熟练掌握Python,对自然语言与人工智能的结合有深刻认识。
黄若星
字节跳动AML团队早期成员,曾参与字节跳动机器学习平台及联邦学习框架Fedlearner的研发,热衷于人工智能在工业界的应用与实践。
第 1章 自然语言处理概要 3
1.1 真实世界中的自然语言处理 4
1.2 什么是语言 7
1.2.1 语言的基本模块 8
1.2.2 为什么自然语言处理很困难 10
1.3 机器学习、深度学习和自然语言处理:概述 12
1.4 自然语言处理方法 13
1.4.1 基于启发式的自然语言处理 13
1.4.2 用于自然语言处理的机器学习 16
1.4.3 用于自然语言处理的深度学习 18
1.4.4 为什么深度学习还不是自然语言处理的灵丹妙药 22
1.5 自然语言处理演练:对话智能体 25
1.6 小结 26
第 2章 自然语言处理流水线 27
2.1 数据获取 28
2.2 文本提取和清洗 31
2.2.1 HTML 解析和清洗 32
2.2.2 Unicode 规范化 33
2.2.3 拼写更正 34
2.2.4 特定于系统的错误更正 35
2.3 预处理 37
2.3.1 预备步骤 37
2.3.2 常用步骤 39
2.3.3 其他预处理步骤 42
2.3.4 高级处理 43
2.4 特征工程 45
2.4.1 经典自然语言处理/ 机器学习流水线 .47
2.4.2 深度学习流水线 47
2.5 建模 47
2.5.1 从简单的启发式开始 47
2.5.2 构建自己的模型 48
2.5.3 构建最终模型 49
2.6 评估 51
2.6.1 内在评估 51
2.6.2 外在评估 53
2.7 建模之后的阶段 54
2.7.1 部署 54
2.7.2 监控 54
2.7.3 模型更新 55
2.8 使用其他语言 55
2.9 案例研究 56
2.10 小结 57
第3 章 文本表示 58
3.1 向量空间模型 60
3.2 基本的向量化方法 61
3.2.1 独热编码 62
3.2.2 词袋 .63
3.2.3 n-gram袋 64
3.2.4 TF-IDF 65
3.3 分布式表示 67
3.3.1 词嵌入 68
3.3.2 词语之上 75
3.4 词和字符之上的分布式表示 77
3.5 通用文本表示 77
3.6 可视化嵌入 79
3.7 人工特征表示 82
3.8 小结 83
第4章 文本分类 87
4.1 应用程序 88
4.2 文本分类流水线 90
4.2.1 不使用文本分类流水线的简单分类器 91
4.2.2 使用现成的文本分类API 91
4.3 一个流水线,多个分类器 92
4.3.1 朴素贝叶斯分类器 92
4.3.2 逻辑回归 .96
4.3.3 SVM 97
4.4 在文本分类中使用神经嵌入 98
4.4.1 词嵌入 98
4.4.2 子词嵌入和fastText 100
4.4.3 文档嵌入 101
4.5 用于文本分类的深度学习 103
4.5.1 用于文本分类的CNN 104
4.5.2 用于文本分类的LSTM 106
4.5.3 使用大型预训练语言模型进行文本分类 106
4.6 解释文本分类模型 107
4.7 无数据或少数据学习和新领域适应 109
4.7.1 无训练数据 109
4.7.2 少训练数据:主动学习和领域适应 110
4.8 案例研究:企业工单系统 111
4.9 实用建议 114
4.10 小结 115
第5章 信息提取 116
5.1 信息提取应用程序 117
5.2 信息提取任务 117
5.3 信息提取的通用流水线 119
5.4 关键词提取 120
5.4.1 实现关键词提取 121
5.4.2 实用建议 121
5.5 命名实体识别 122
5.5.1 构建命名实体识别系统 123
5.5.2 命名实体识别:使用现有库 126
5.5.3 命名实体识别:使用主动学习 126
5.5.4 实用建议 127
5.6 命名实体消歧与链接 128
5.7 关系提取 129
5.7.1 关系提取的方法 130
5.7.2 关系提取:使用IBM 沃森API 132
5.8 其他高级信息提取任务 133
5.8.1 时间信息提取 133
5.8.2 事件提取 134
5.8.3 模板填充 135
5.9 案例研究 136
5.10 小结 139
第6章 聊天机器人 140
6.1 聊天机器人的应用 141
6.2 聊天机器人的分类 143
6.2.1 目标导向对话式 144
6.2.2 闲聊式144
6.3 构建对话系统的流水线 144
6.4 对话系统原理 146
6.5 深入对话系统的组件 155
6.5.1 对话行为分类 156
6.5.2 识别插槽 156
6.5.3 生成响应 157
6.5.4 带有代码演练的对话示例 158
6.6 其他对话流水线 162
6.6.1 端到端方法 162
6.6.2 用于对话生成的深度强化学习 163
6.6.3 人工监督 164
6.7 Rasa NLU 165
6.8 案例研究:食谱推荐 167
6.8.1 利用现有框架 168
6.8.2 开放式生成聊天机器人 169
6.9 小结 170
第7章 主题简介 172
7.1 搜索和信息检索 173
7.1.1 搜索引擎组件 175
7.1.2 常见企业搜索流水线 177
7.1.3 一个配置搜索引擎的例子 178
7.1.4 案例研究:书店搜索 179
7.2 主题建模 180
7.2.1 一个构建主题模型的例子 183
7.2.2 下一步是什么 184
7.3 文本摘要 185
7.3.1 摘要用例 185
7.3.2 一个设置摘要器的示例 186
7.3.3 实用建议 187
7.4 文本推荐系统 188
7.4.1 一个图书推荐系统示例 188
7.4.2 实用建议 189
7.5 机器翻译 189
7.5.1 一个使用机器翻译API 的示例 190
7.5.2 实用建议 191
7.6 问答系统 192
7.6.1 开发自定义问答系统 193
7.6.2 寻找更有深度的答案 193
7.7 小结 194
第8章 社交媒体 197
8.1 应用 198
8.2 独特的挑战 199
8.3 用于社交平台数据的自然语言处理 205
8.3.1 词云 205
8.3.2 用于SMTD 的分词器 206
8.3.3 热门话题 207
8.3.4 理解Twitter 的情绪 207
8.3.5 SMTD 的预处理 209
8.3.6 SMTD 的文本表示 212
8.3.7 社交媒体渠道的客户支持 215
8.4 模因与虚假新闻 216
8.4.1 识别模因 217
8.4.2 虚假新闻 218
8.5 小结 219
第9 章 电子商务与零售 220
9.1 电子商务目录 221
9.1.1 评论分析 221
9.1.2 产品搜索 221
9.1.3 产品推荐 222
9.2 电子商务中的搜索 222
9.3 构建电子商务目录 224
9.3.1 属性提取 224
9.3.2 产品分类与分类树 228
9.3.3 产品浓缩 231
9.3.4 产品去重和匹配 233
9.4 评论分析 234
9.4.1 情感分析 234
9.4.2 方面级情感分析 236
9.4.3 将总体评分与“方面”联系起来 238
9.4.4 理解“方面” 239
9.5 电子商务推荐 240
9.6 小结 243
第 10章 医疗、金融和法律 244
10.1 医疗 244
10.1.1 健康和医疗记录 245
10.1.2 患者优先级和计费 246
10.1.3 药物安全监视 246
10.1.4 临床决策支持系统 246
10.1.5 健康助理 247
10.1.6 电子健康记录 248
10.1.7 心理健康监测 255
10.1.8 医疗信息提取与分析 257
10.2 金融与法律 259
10.2.1 自然语言处理在金融领域中的应用 261
10.2.2 自然语言处理与法律行业 263
10.3 小结 266
第 11章 端到端自然语言处理系统 269
11.1 重温自然语言处理流水线:部署自然语言处理软件 270
11.2 构建和维护成熟的系统 272
11.2.1 寻找更好的特征 273
11.2.2 迭代现有模型 274
11.2.3 代码和模型再现性 274
11.2.4 故障排除和可解释性 275
11.2.5 监控 277
11.2.6 尽量减少技术债务 278
11.2.7 自动化机器学习 279
11.3 数据科学过程 282
11.3.1 KDD 过程 282
11.3.2 微软TDSP 283
11.4 让人工智能在组织中取得成功 284
11.4.1 团队 285
11.4.2 正确的问题和正确的期望 285
11.4.3 数据和时间 286
11.4.4 好的流程 287
11.4.5 其他方面 288
11.5 展望未来 290
11.6 结语 292