目录
前言 . 1
第一部分 基础知识
第1 章 快速入门 . 9
1.1 简介 9
1.2 其他工具 11
1.3 建立你自己的开发环境 12
1.3.1 前置条件 12
1.3.2 启动Apache Spark 13
1.3.3 检查代码 13
1.4 熟悉Apache Spark .14
1.4.1 使用Spark NLP 启动Apache Spark 14
1.4.2 在Apache Spark 中加载和查看数据 15
1.5 Spark NLP 的Hello World 示例 18
第2 章 自然语言基础知识 27
2.1 什么是自然语言 27
2.1.1 语言的起源 28
2.1.2 口头语言和书面语言29
2.2 语言学 30
2.2.1 语音学和音系学 .30
2.2.2 词法学(形态学) 31
2.2.3 语法 32
2.2.4 语义学 .33
2.3 社会语言学:方言、语域和其他变体 34
2.3.1 礼节 34
2.3.2 语境 35
2.4 语用学 35
2.4.1 罗曼·雅各布森 .35
2.4.2 如何运用语用学 .37
2.5 书写系统 37
2.5.1 起源 37
2.5.2 字母 38
2.5.3 辅音音素文字 .39
2.5.4 元音附标文字 .40
2.5.5 音节表 41
2.5.6 标识象形符 .41
2.6 编码 42
2.6.1 ASCII 42
2.6.2 Unicode 42
2.6.3 UTF-8 43
2.7 练习:分词 .44
2.7.1 英语分词 44
2.7.2 希腊语分词 45
2.7.3 Ge'ez(阿姆哈拉语)分词 45
2.8 资源 46
第3 章 Apache Spark 上的NLP 49
3.1 并行性、并发性、分布式计算 .50
3.1.1 Apache Hadoop 之前的并行化 53
3.1.2 MapReduce 和 Apache Hadoop 53
3.1.3 Apache Spark 55
3.2 Apache Spark 架构 55
3.2.1 物理架构 55
3.2.2 逻辑架构 56
3.3 Spark SQL 和Spark MLlib 62
3.3.1 Transformer(转换器) .66
3.3.2 评估器和模型 69
3.3.3 预测结果评估 73
3.4 NLP 库 .76
3.4.1 功能库 .76
3.4.2 注释库 .77
3.4.3 其他库中的自然语言处理功能 78
3.5 Spark NLP 78
3.5.1 注释库 .78
3.5.2 阶段 79
3.5.3 预训练管道 87
3.5.4 Finisher 89
3.6 练习:构建主题模型 .91
3.7 资源 93
第4 章 深度学习基础知识 95
4.1 梯度下降 100
4.2 反向传播 101
4.3 卷积神经网络CNN . 113
4.3.1 滤波器 114
4.3.2 池化 114
4.4 循环神经网络RNN . 114
4.4.1 通过时间的反向传播. 115
4.4.2 Elman 网络 . 115
4.4.3 LSTM 116
4.5 练习1 . 116
4.6 练习2 . 116
4.7 资源 . 117
第二部分 构建模块
第5 章 文字处理 121
5.1 分词 .122
5.2 词表缩减 126
5.2.1 词干提取 .126
5.2.2 词形还原 .126
5.2.3 词干提取对比词形还原 127
5.2.4 拼写校对 .129
5.2.5 标准化 130
5.3 bag-of-words 模型.132
5.4 CountVectorizer .133
5.5 N-Gram 135
5.6 可视化:Word 和文档分发 137
5.7 练习 .142
5.8 资源 .142
第6 章 信息检索 143
6.1 倒排索引 144
6.2 向量空间模型 .151
6.2.1 删除停用词 154
6.2.2 逆向文件频率 156
6.2.3 使用Spark 159
6.3 练习 .159
6.4 资源 .160
第7 章 分类和回归 163
7.1 bag-of-word 模型特征 .166
7.2 正则表达式特征 167
7.3 特征选择 169
7.4 模型 .173
7.4.1 朴素贝叶斯算法 174
7.4.2 线性模型 .174
7.4.3 决策/ 回归树.174
7.4.4 深度学习算法 175
7.5 迭代 .175
7.6 练习 .178
第8 章 使用Keras 的序列模型 181
8.1 语句划分 182
8.2 段落划分 190
8.3 词性标注 191
8.4 条件随机场 196
8.5 分块和语法分析 196
8.6 语言模型 197
8.7 循环神经网络 .198
8.8 练习:字符 N-Grams 模型 205
8.9 练习:词义语言模型 206
8.10 资源 206
第9 章 信息提取 207
9.1 命名实体识别 .207
9.2 共指消解 217
9.3 断言状态检测 .218
9.4 关系提取 221
9.5 小结 .226
9.6 练习 .226
第10 章 主题建模 . 229
10.1 K-Means .230
10.2 潜在语义索引 234
10.3 非负矩阵分解 238
10.4 隐含狄利克雷分布模型 242
10.5 练习 245
第11 章 词嵌入 . 249
11.1 Word2vec 249
11.2 GloVe 261
11.3 fastText 262
11.4 Transformer 263
11.5 ELMo、BERT 和XLNet .263
11.6 Doc2vec 265
11.7 练习 266
第三部分 应用
第12 章 情感分析与情绪检测 269
12.1 问题陈述与约束 269
12.2 规划项目 .271
12.3 设计解决方案 274
12.4 实施解决方案 275
12.5 测试并衡量解决方案 281
12.5.1 业务指标 281
12.5.2 以模型为中心的指标 281
12.5.3 基础设施指标 .282
12.5.4 过程指标 283
12.5.5 离线与在线模型测量 284
12.6 审查 284
12.6.1 初始部署 285
12.6.2 回退计划 286
12.6.3 下一步 286
12.7 结论 286
第13 章 建立知识库 287
13.1 问题陈述与约束 288
13.2 规划项目 .289
13.3 设计解决方案 290
13.4 实施解决方案 291
13.5 测试并衡量解决方案 300
13.5.1 业务指标 300
13.5.2 以模型为中心的指标 300
13.5.3 基础设施指标 .301
13.5.4 过程指标 301
13.6 审查 302
13.7 结论 302
第14 章 搜索引擎 . 303
14.1 问题陈述与约束 304
14.2 规划项目 .304
14.3 设计解决方案 305
14.4 实施解决方案 305
14.5 测试并衡量解决方案 313
14.5.1 业务指标 313
14.5.2 以模型为中心的指标 314
14.6 审查 315
14.7 结论 316
第15 章 聊天机器人 317
15.1 问题陈述与约束 318
15.2 规划项目 .319
15.3 设计解决方案 319
15.4 实施解决方案 321
15.5 测试并衡量解决方案 331
15.5.1 业务指标 331
15.5.2 以模型为中心的指标 332
15.6 审查 332
15.7 结论 332
第16 章 目标字符识别 333
16.1 OCR 任务的种类 333
16.1.1 印刷文本的图像和PDF 识别成文本 333
16.1.2 手写文本图像识别成文本 334
16.1.3 日常环境中的文本图像识别成文本 334
16.1.4 文本图像识别成目标 335
16.1.5 关于不同书写系统的说明 336
16.2 问题陈述与约束 336
16.3 规划项目 .337
16.4 实施解决方案 337
16.5 测试并衡量解决方案 343
16.6 以模型为中心的指标 343
16.7 审查 343
16.8 结论 343
第四部分 构建NLP 系统
第17 章 支持多种语言 347
17.1 语言类型学 347
17.2 场景:学术论文分类 347
17.3 不同语言中的文本处理 348
17.3.1 合成词 348
17.3.2 形态复杂性349
17.4 迁移学习与多语言深度学习 .350
17.5 跨语种搜索 351
17.6 检查清单 .352
17.7 结论 353
第18 章 人工标注 . 355
18.1 指南 356
18.2 场景:学术论文分类 356
18.3 标注员内部一致性 .358
18.4 标注迭代 .359
18.5 标注文本 .360
18.5.1 分类 .360
18.5.2 标注 .360
18.6 检查清单 .361
18.7 结论 362
第19 章 NLP 应用程序的产品化 . 363
19.1 Spark NLP 模型缓存 .364
19.2 Spark NLP 与TensorFlow 集成 365
19.2.1 Spark 优化基础 .366
19.2.2 设计级优化367
19.2.3 分析工具 368
19.2.4 监视 .369
19.2.5 管理数据资源 .369
19.2.6 测试基于NLP 的应用程序 369
19.2.7 单元测试 370
19.2.8 集成测试 370
19.2.9 冒烟测试与健全测试 370
19.2.10 性能测试 371
19.2.11 可用性测试 371
19.2.12 演示基于NLP 的应用程序 371
19.3 检查清单 372
19.3.1 模型部署清单 .372
19.3.2 扩展和性能检查表 373
19.3.3 测试检查清单 .373
19.4 结论 374
术语表 377