本书遵循结构化和综合性的方法,介绍了文本和语言语法、结构和语义的基础概念和高级概念。从自然语言和Python的基础开始,进而学习先进的分析理念和机器学习概念。全面提供了自然语言处理(NLP)和文本分析的主要概念和技术。包含了丰富的真实案例实现技术,例如构建分类新闻文章的文本分类系统,使用主题建模和文本摘要分析app或游戏评论,进行热门电影概要的聚类分析和电影评论的情感分析。介绍了基于Python和流行NLP开源库和文本分析实用工具,如自然语言工具包(nltk)、gensim、scikit-learn、spaCy和Pattern。
译者序
推荐序
前言
致谢
作者简介
技术审校者简介
第1章 自然语言处理基础1
1.1 自然语言2
1.1.1 什么是自然语言2
1.1.2 语言哲学2
1.1.3 语言习得和用法4
1.2 语言学6
1.3 语言句法和结构7
1.3.1 单词9
1.3.2 短语10
1.3.3 从句12
1.3.4 语法13
1.3.5 语序类型学20
1.4 语言语义21
1.4.1 词汇语义关系22
1.4.2 语义网络和模型24
1.4.3 语义表示25
1.5 文本语料库31
1.5.1 文本语料库标注及使用31
1.5.2 流行的语料库32
1.5.3 访问文本语料库33
1.6 自然语言处理38
1.6.1 机器翻译38
1.6.2 语音识别系统39
1.6.3 问答系统39
1.6.4 上下文识别与消解39
1.6.5 文本摘要40
1.6.6 文本分类40
1.7 文本分析40
1.8 机器学习41
1.9 深度学习41
1.10 本章小结42
第2章 Python自然语言处理43
2.1 了解Python43
2.2 Python之禅44
2.3 应用:何时使用Python45
2.4 缺点:何时不用Python47
2.5 Python的实现和版本47
2.6 建立强大的Python环境48
2.6.1 用哪个Python版本48
2.6.2 用哪个操作系统49
2.6.3 集成开发环境49
2.6.4 环境设置50
2.6.5 软件包管理52
2.6.6 虚拟环境53
2.7 Python语法和结构55
2.8 使用文本数据55
2.8.1 字符串文字56
2.8.2 表示字符串57
2.8.3 字符串操作和方法58
2.9 基本的文本处理和分析:综合案例67
2.10 自然语言处理框架70
2.11 本章小结71
第3章 处理和理解文本73
3.1 文本预处理和整理74
3.1.1 删除HTML标签74
3.1.2 文本标记解析76
3.1.3 删除重音字符87
3.1.4 扩展缩写词87
3.1.5 删除特殊字符89
3.1.6 大小写转换89
3.1.7 文本校正89
3.1.8 词干提取96
3.1.9 词形还原99
3.1.10 删除停用词100
3.1.11 将以上整合在一起—构建文本规范器101
3.2 理解文本句法和结构102
3.2.1 安装必要的依赖项103
3.2.2 机器学习的重要概念105
3.2.3 词性标注105
3.2.4 浅层解析或分块112
3.2.5 依存关系解析120
3.2.6 成分结构解析123
3.3 本章小结129
第4章 用于文本表示的特征工程131
4.1 理解文本数据132
4.2 构建文本语料库132
4.3 预处理文本语料库133
4.4 传统特征工程模型135
4.4.1 词袋模型135
4.4.2 n-gram词袋模型137
4.4.3 TF-IDF模型137
4.4.4 提取新文档的特征143
4.4.5 文档相似度143
4.4.6 主题模型146
4.5 高级特征工程模型149
4.5.1 加载圣经语料库150
4.5.2 Word2Vec模型150
4.5.3 基于Gensim的强大Word2Vec模型163
4.5.4 Word2Vec特征用于机器学习任务165
4.5.5 GloVe模型169
4.5.6 GloVe特征用于机器学习任务170
4.5.7 FastText模型173
4.5.8 FastText特征用于机器学习任务174
4.6 本章小结175
第5章 文本分类176
5.1 什么是文本分类177
5.1.1 正式定义177
5.1.2 主要的文本分类类型178
5.2 自动文本分类178
5.2.1 正式定义179
5.2.2 文本分类任务类型180
5.3 文本分类蓝图180
5.4 数据检索182
5.5 数据预处理和规范化183
5.6 构建训练和测试数据集186
5.7 特征工程技术187
5.7.1 传统特征工程模型188
5.7.2 高级特征工程模型188
5.8 分类模型189
5.8.1 多项式朴素贝叶斯190
5.8.2 逻辑回归191
5.8.3 支持向量机193
5.8.4 集成模型194
5.8.5 随机森林195
5.8.6 梯度提升机195
5.9 评估分类模型196
5.10 构建和评估文本分类器199
5.10.1 分类模型的词袋特征200
5.10.2 分类模型的TF-IDF特征202
5.10.3 比较模型性能评估205
5.10.4 分类模型的Word2Vec嵌入205
5.10.5 分类模型的GloVe嵌入207
5.10.6 分类模型的FastText嵌入208
5.10.7 模型调优209
5.10.8 模型性能评估212
5.11 应用217
5.12 本章小结217
第6章 文本摘要和主题模型219
6.1 文本摘要和信息提取220
6.1.1 关键短语提取220
6.1.2 主题建模221
6.1.3 自动文档摘要221
6.2 重要概念221
6.3 关键短语提取223
6.3.1 搭配223
6.3.2 基于权重标签的短语提取228
6.4 主题建模231
6.5 研究论文的主题建模232
6.5.1 主要目标232
6.5.2 数据检索233
6.5.3 加载和查看数据集233
6.5.4 基本文本整理234
6.6 Gensim的主题模型235
6.6.1 特征工程的文本表示236
6.6.2 潜在语义索引238
6.6.3 从头开始实现LSI主题模型245
6.6.4 LDA250
6.6.5 MALLET的LDA模型257
6.6.6 LDA调优:查找最佳主题数259
6.6.7 解释主题模型结果263
6.6.8 预测新研究论文的主题266
6.7 Scikit-Learn的主题模型269
6.7.1 特征工程的文本表示270
6.7.2 潜在语义索引270
6.7.3 LDA274
6.7.4 非负矩阵分解276
6.7.5 预测新研究论文的主题279
6.7.6 可视化主题模型280
6.8 自动文档摘要282
6.8.1 文本整理284
6.8.2 特征工程的文本表示285
6.8.3 潜在语义分析285
6.8.4 TextRank288
6.9 本章小结291
第7章 文本相似度和聚类293
7.1 基本概念294
7.1.1 信息检索294
7.1.2 特征工程294
7.1.3 相似度度量295
7.1.4 无监督的机器学习算法295
7.2 文本相似度295
7.3 分析词项相似度296
7.3.1 汉明距离297
7.3.2 曼哈顿距离298
7.3.3 欧几里得距离300
7.3.4 莱文斯坦编辑距离300
7.3.5 余弦距离和相似度304
7.4 分析文档相似度307
7.5 构建电影推荐系统308
7.5.1 加载和查看数据集308
7.5.2 文本预处理310
7.5.3 提取TF-IDF特征311
7.5.4 成对文档相似度的余弦相似度311
7.5.5 查找与示例电影最相似的电影312
7.5.6 构建电影推荐系统313
7.5.7 获取流行的电影列表313
7.5.8 成对文档相似度的Okapi BM25排名315
7.6 文档聚类322
7.7 电影聚类323
7.7.1 特征工程324
7.7.2 k-均值聚类324
7.7.3 近邻传播算法329
7.7.4 Ward凝聚层次聚类332
7.8 本章小结335
第8章 语义分析336
8.1 语义分析简介337
8.2 探索WordNet337
8.2.1 理解同义词集338
8.2.2 分析词汇的语义关系339
8.3 词义消歧345
8.4 命名实体识别347
8.5 从零开始构建NER标注器353
8.6 使用训练的NER模型构建端到端的NER标注器360
8.7 分析语义表示362
8.7.1 命题逻辑362
8.7.2 一阶逻辑364
8.8 本章小结368
第9章 情感分析369
9.1 问题描述370
9.2 安装依赖项370
9.3 获取数据370
9.4 文本预处理与规范化371
9.5 无监督的词典模型372
9.5.1 Bing Liu词典373
9.5.2 MPQA主观词典373
9.5.3 pattern词典374
9.5.4 TextBlob词典374
9.5.5 AFINN词典376
9.5.6 SentiWordNet词典377
9.5.7 VADER词典380
9.6 使用有监督的学习进行情感分类382
9.7 传统的有监督机器学习模型384
9.8 新的有监督深度学习模型386
9.9 高级的有监督深度学习模型392
9.10 分析情感成因399
9.10.1 解释预测模型399
9.10.2 分析主题模型404
9.11 本章小结409
第10章 深度学习的前景410
10.1 为什么我们对嵌入痴迷411
10.2 词嵌入模型的趋势412
10.3 通用句子嵌入模型的趋势413
10.4 理解文本分类问题417
10.5 使用通用句子嵌入417
10.5.1 加载依赖417
10.5.2 加载和查看数据集418
10.5.3 构建训练、验证和测试数据集419
10.5.4 基本文本整理419
10.5.5 构建数据接入函数420
10.5.6 使用通用句子编码器构建深度学习模型421
10.5.7 模型训练421
10.5.8 模型评估423
10.6 红利:使用不同的通用句子嵌入进行迁移学习423
10.7 本章小结与展望429