第1章 引言 1
1.1自然语言处理 1
1.2基础应用 5
1.3高级应用 6
1.4 NLP和Python相结合的优势 7
1.5 nltk环境搭建 7
1.6读者提示 8
1.7总结 9
第2章 实践理解语料库和数据集 10
2.1语料库 10
2.2语料库的作用 11
2.3语料分析 13
2.4数据属性的类型 16
2.4.1分类或定性数据属性 16
2.4.2数值或定量数据属性 17
2.5不同文件格式的语料 18
2.6免费语料库资源 19
2.7为NLP应用准备数据集 20
2.7.1挑选数据 20
2.7.2预处理数据集 20
2.8网页爬取 21
2.9总结 23
第3章 理解句子的结构 24
3.1理解NLP的组成 24
3.1.1自然语言理解 24
3.1.2自然语言生成 25
3.1.3 NLU和NLG的区别 25
3.1.4 NLP的分支 26
3.2上下文无关文法 26
3.3形态分析 28
3.3.1形态学 28
3.3.2词素 28
3.3.3词干 28
3.3.4形态分析 28
3.3.5词 29
3.3.6词素的分类 29
3.3.7词干和词根的区别 32
3.4词法分析 32
3.4.1词条 33
3.4.2词性标注 33
3.4.3导出词条的过程 33
3.4.4词干提取和词形还原的区别 34
3.4.5应用 34
3.5句法分析 34
3.6语义分析 36
3.6.1语义分析概念 36
3.6.2词级别的语义 37
3.6.3上下位关系和多义词 37
3.6.4语义分析的应用 38
3.7消歧 38
3.7.1词法歧义 38
3.7.2句法歧义 39
3.7.3语义歧义 39
3.7.4语用歧义 39
3.8篇章整合 40
3.9语用分析 40
3.10总结 40
第4章 预处理 42
4.1处理原始语料库文本 42
4.1.1获取原始文本 42
4.1.2小写化转换 44
4.1.3分句 44
4.1.4原始文本词干提取 46
4.1.5原始文本词形还原 46
4.1.6停用词去除 48
4.2处理原始语料库句子 50
4.2.1词条化 50
4.2.2单词词形还原 51
4.3基础预处理 52
4.4实践和个性化预处理 57
4.4.1由你自己决定 57
4.4.2预处理流程 57
4.4.3预处理的类型 57
4.4.4理解预处理的案例 57
4.5总结 62
第5章 特征工程和NLP算法 63
5.1理解特征工程 64
5.1.1特征工程的定义 64
5.1.2特征工程的目的 64
5.1.3一些挑战 65
5.2 NLP中的基础特征 65
5.2.1句法分析和句法分析器 65
5.2.2词性标注和词性标注器 81
5.2.3命名实体识别 85
5.2.4 n元语法 88
5.2.5词袋 89
5.2.6语义工具及资源 91
5.3 NLP中的基础统计特征 91
5.3.1数学基础 92
5.3.2 TF-IDF 96
5.3.3向量化 99
5.3.4规范化 100
5.3.5概率模型 101
5.3.6索引 103
5.3.7排序 103
5.4特征工程的优点 104
5.5特征工程面临的挑战 104
5.6总结 104
第6章 高级特征工程和NLP算法 106
6.1词嵌入 106
6.2 word2vec基础 106
6.2.1分布语义 107
6.2.2定义word2vec 108
6.2.3无监督分布语义模型中的必需品 108
6.3 word2vec模型从黑盒到白盒 109
6.4基于表示的分布相似度 110
6.5 word2vec模型的组成部分 111
6.5.1 word2vec的输入 111
6.5.2 word2vec的输出 111
6.5.3 word2vec模型的构建模块 111
6.6 word2vec模型的逻辑 113
6.6.1词汇表构建器 114
6.6.2上下文环境构建器 114
6.6.3两层的神经网络 116
6.6.4算法的主要流程 119
6.7 word2vec模型背后的算法和数学理论 120
6.7.1 word2vec算法中的基本数学理论 120
6.7.2词汇表构建阶段用到的技术 121
6.7.3上下文环境构建过程中使用的技术 122
6.8神经网络算法 123
6.8.1基本神经元结构 123
6.8.2训练一个简单的神经元 124
6.8.3单个神经元的应用 126
6.8.4多层神经网络 127
6.8.5反向传播算法 127
6.8.6 word2vec背后的数学理论 128
6.9生成最终词向量和概率预测结果的技术 130
6.10 word2vec相关的一些事情 131
6.11 word2vec的应用 131
6.11.1实现一些简单例子 132
6.11.2 word2vec的优势 133
6.11.3 word2vec的挑战 133
6.11.4在实际应用中使用word2vec 134
6.11.5何时使用word2vec 135
6.11.6开发一些有意思的东西 135
6.11.7练习 138
6.12 word2vec概念的扩展 138
6.12.1 para2vec 139
6.12.2 doc2vec 139
6.12.3 doc2vec的应用 140
6.12.4 GloVe 140
6.12.5练习 141
6.13深度学习中向量化的重要性 141
6.14总结 142
第7章 规则式自然语言处理系统 143
7.1规则式系统 144
7.2规则式系统的目的 146
7.2.1为何需要规则式系统 146
7.2.2使用规则式系统的应用 147
7.2.3练习 147
7.2.4开发规则式系统需要的资源 147
7.3规则式系统的架构 148
7.3.1从专家系统的角度来看规则式系统的通用架构 149
7.3.2 NLP应用中的规则式系统的实用架构 150
7.3.3 NLP应用中的规则式系统的定制架构 152
7.3.4练习 155
7.3.5 Apache UIMA架构 155
7.4规则式系统的开发周期 156
7.5规则式系统的应用 156
7.5.1使用规则式系统的NLP应用 156
7.5.2使用规则式系统的通用AI应用 157
7.6使用规则式系统来开发NLP应用 157
7.6.1编写规则的思维过程 158
7.6.2基于模板的聊天机器人应用 165
7.7规则式系统与其他方法的对比 168
7.8规则式系统的优点 169
7.9规则式系统的缺点 169
7.10规则式系统面临的挑战 170
7.11词义消歧的基础 170
7.12规则式系统近期发展的趋势 171
7.13总结 171
第8章 自然语言处理中的机器学习方法 172
8.1机器学习的基本概念 172
8.2自然语言处理应用的开发步骤 176
8.2.1第一次迭代时的开发步骤 177
8.2.2从第二次到第N次迭代的开发步骤 177
8.3机器学习算法和其他概念 179
8.3.1有监督机器学习方法 179
8.3.2无监督机器学习方法 206
8.3.3半监督机器学习算法 210
8.3.4一些重要概念 211
8.3.5特征选择 215
8.3.6维度约减 219
8.4自然语言处理中的混合方法 221
8.5总结 221
第9章 NLU和NLG问题中的深度学习 223
9.1人工智能概览 223
9.1.1人工智能的基础 223
9.1.2人工智能的阶段 225
9.1.3人工智能的种类 227
9.1.4人工智能的目标和应用 227
9.2 NLU和NLG之间的区别 232
9.2.1自然语言理解 232
9.2.2自然语言生成 232
9.3深度学习概览 233
9.4神经网络基础 234
9.4.1神经元的第一个计算模型 235
9.4.2感知机 236
9.4.3理解人工神经网络中的数学概念 236
9.5实现神经网络 249
9.5.1单层反向传播神经网络 249
9.5.2练习 251
9.6深度学习和深度神经网络 251
9.6.1回顾深度学习 251
9.6.2深度神经网络的基本架构 251
9.6.3 NLP中的深度学习 252
9.6.4传统NLP和深度学习NLP技术的区别 253
9.7深度学习技术和NLU 255
9.8深度学习技术和NLG 262
9.8.1练习 262
9.8.2菜谱摘要和标题生成 262
9.9基于梯度下降的优化 265
9.10人工智能与人类智能 269
9.11总结 269
第10章 高级工具 270
10.1使用Apache Hadoop作为存储框架 270
10.2使用Apache Spark作为数据处理框架 272
10.3使用Apache Flink作为数据实时处理框架 274
10.4 Python中的可视化类库 274
10.5总结 275
第11章 如何提高你的NLP技能 276
11.1开始新的NLP职业生涯 276
11.2备忘列表 277
11.3确定你的领域 277
11.4通过敏捷的工作来实现成功 278
11.5 NLP和数据科学方面一些有用的博客 278
11.6使用公开的数据集 278
11.7数据科学领域需要的数学知识 278
11.8总结 279
第12章 安装指导 280
12.1安装Python、pip和NLTK 280
12.2安装PyCharm开发环境 280
12.3安装依赖库 280
12.4框架安装指导 281
12.5解决你的疑问 281
12.6总结 281