第1章 基础入门 1
1.1 什么是自然语言处理 1
1.1.1 自然语言处理概述 1
1.1.2 自然语言处理的发展历史 3
1.1.3 自然语言处理的工作原理 6
1.1.4 自然语言处理的应用前景 7
1.2 开发工具与环境 7
1.2.1 Sublime Text和Anaconda介绍 7
1.2.2 开发环境的安装与配置 8
1.3 实战:第一个小程序的诞生 13
1.3.1 实例介绍 13
1.3.2 源码实现 13
第2章 快速上手Python 15
2.1 初识Python编程语言 15
2.1.1 Python概述 15
2.1.2 Python能做什么 17
2.1.3 Python的语法和特点 19
2.2 Python进阶 24
2.2.1 HelloWorld 24
2.2.2 语句和控制流 24
2.2.3 函数 27
2.2.4 List列表 29
2.2.5 元组 32
2.2.6 set集合 33
2.2.7 字典 33
2.2.8 面向对象编程:类 34
2.2.9 标准库 36
2.3 Python深入——第三方库 36
2.3.1 Web框架 36
2.3.2 科学计算 37
2.3.3 GUI 37
2.3.4 其他库 37
第3章 线性代数 39
3.1 线性代数介绍 39
3.2 向量 40
3.2.1 向量定义 40
3.2.2 向量表示 42
3.2.3 向量定理 42
3.2.4 向量运算 43
3.3 矩阵 47
3.3.1 矩阵定义 47
3.3.2 矩阵表示 48
3.3.3 矩阵运算 48
3.3.4 线性方程组 51
3.3.5 行列式 51
3.3.6 特征值和特征向量 55
3.4 距离计算 56
3.4.1 余弦距离 56
3.4.2 欧氏距离 57
3.4.3 曼哈顿距离 58
3.4.4 明可夫斯基距离 59
3.4.5 切比雪夫距离 61
3.4.6 杰卡德距离 62
3.4.7 汉明距离 63
3.4.8 标准化欧式距离 64
3.4.9 皮尔逊相关系数 65
第4章 概率论 67
4.1 概率论介绍 67
4.2 事件 68
4.2.1 随机试验 68
4.2.2 随机事件和样本空间 69
4.2.3 事件的计算 70
4.3 概率 71
4.4 概率公理 73
4.5 条件概率和全概率 76
4.5.1 条件概率 76
4.5.2 全概率 77
4.6 贝叶斯定理 78
4.7 信息论 79
4.7.1 信息论的基本概念 79
4.7.2 信息度量 80
第5章 统计学 85
5.1 图形可视化 85
5.1.1 饼图 85
5.1.2 条形图 88
5.1.3 热力图 91
5.1.4 折线图 93
5.1.5 箱线图 96
5.1.6 散点图 99
5.1.7 雷达图 102
5.1.8 仪表盘 104
5.1.9 可视化图表用法 106
5.2 数据度量标准 108
5.2.1 平均值 108
5.2.2 中位数 108
5.2.3 众数 110
5.2.4 期望 111
5.2.5 方差 112
5.2.6 标准差 113
5.2.7 标准分 114
5.3 概率分布 115
5.3.1 几何分布 115
5.3.2 二项分布 116
5.3.3 正态分布 118
5.3.4 泊松分布 121
5.4 统计假设检验 123
5.5 相关和回归 125
5.5.1 相关 125
5.5.2 回归 127
5.5.3 相关和回归的联系 130
第6章 语言学 132
6.1 语音 132
6.1.1 什么是语音 132
6.1.2 语音的三大属性 133
6.1.3 语音单位 134
6.1.4 记音符号 135
6.1.5 共时语流音变 136
6.2 词汇 137
6.2.1 什么是词汇 137
6.2.2 词汇单位 137
6.2.3 词的构造 138
6.2.4 词义及其分类 140
6.2.5 义项与义素 141
6.2.6 语义场 142
6.2.7 词汇的构成 143
6.3 语法 143
6.3.1 什么是语法 143
6.3.2 词类 144
6.3.3 短语 148
6.3.4 单句 150
6.3.5 复句 152
第7章 自然语言处理 155
7.1 自然语言处理的任务和限制 155
7.2 自然语言处理的主要技术范畴 156
7.2.1 语音合成 156
7.2.2 语音识别 156
7.2.3 中文自动分词 157
7.2.4 词性标注 158
7.2.5 句法分析 158
7.2.6 文本分类 159
7.2.7 文本挖掘 160
7.2.8 信息抽取 161
7.2.9 问答系统 161
7.2.10 机器翻译 162
7.2.11 文本情感分析 163
7.2.12 自动摘要 164
7.2.13 文字蕴涵 165
7.3 自然语言处理的难点 165
7.3.1 语言环境复杂 165
7.3.2 文本结构形式多样 166
7.3.3 边界识别限制 166
7.3.4 词义消歧 167
7.3.5 指代消解 168
7.4 自然语言处理展望 169
第8章 语料库 173
8.1 语料库浅谈 173
8.2 语料库深入 174
8.3 自然语言处理工具包:NLTK 176
8.3.1 NLTK简介 176
8.3.2 安装NLTK 177
8.3.3 使用NLTK 180
8.3.4 在Python NLTK下使用Stanford NLP 186
8.4 获取语料库 194
8.4.1 国内外著名语料库 195
8.4.2 网络数据获取 197
8.4.3 NLTK获取语料库 200
8.5 综合案例:走进大秦帝国 208
8.5.1 数据采集和预处理 208
8.5.2 构建本地语料库 208
8.5.3 大秦帝国语料操作 209
第9章 中文自动分词 216
9.1 中文分词简介 216
9.2 中文分词的特点和难点 218
9.3 常见中文分词方法 219
9.4 典型中文分词工具 220
9.4.1 HanLP中文分词 220
9.4.2 其他中文分词工具 223
9.5 结巴中文分词 224
9.5.1 基于Python的结巴中文分词 224
9.5.2 结巴分词工具详解 227
9.5.3 结巴分词核心内容 230
9.5.4 结巴分词基本用法 233
第10章 数据预处理 241
10.1 数据清洗 241
10.2 分词处理 242
10.3 特征构造 242
10.4 特征降维与选择 243
10.4.1 特征降维 243
10.4.2 特征选择 243
10.5 简单实例 244
10.6 本章小结 249
第11章 马尔可夫模型 250
11.1 马尔可夫链 250
11.1.1 马尔可夫简介 250
11.1.2 马尔可夫链的基本概念 251
11.2 隐马尔可夫模型 253
11.2.1 形式化描述 253
11.2.2 数学形式描述 255
11.3 向前算法解决HMM似然度 256
11.3.1 向前算法定义 256
11.3.2 向前算法原理 256
11.3.3 现实应用:预测成都天气的冷热 258
11.4 文本序列标注案例:Viterbi算法 259
第12章 条件随机场 263
12.1 条件随机场介绍 263
12.2 简单易懂的条件随机场 265
12.2.1 CRF的形式化表示 265
12.2.2 CRF的公式化表示 266
12.2.3 深度理解条件随机场 268
第13章 模型评估 269
13.1 从统计角度介绍模型概念 269
13.1.1 算法模型 269
13.1.2 模型评估和模型选择 270
13.1.3 过拟合与欠拟合的模型选择 272
13.2 模型评估与选择 275
13.2.1 模型评估的概念 275
13.2.2 模型评估的评测指标 275
13.2.3 以词性标注为例分析模型评估 276
13.2.4 模型评估的几种方法 278
13.3 ROC曲线比较学习器模型 279
第14章 命名实体识别 281
14.1 命名实体识别概述 281
14.2 命名实体识别的特点与难点 284
14.3 命名实体识别方法 284
14.4 中文命名实体识别的核心技术 286
14.5 展望 295
第15章 自然语言处理实战 296
15.1 GitHub数据提取与可视化分析 296
15.1.1 了解GitHub的API 296
15.1.2 使用NetworkX作图 299
15.1.3 使用NetworkX构建兴趣图 301
15.1.4 NetWorkX部分统计指标 304
15.1.5 构建GitHub的兴趣图 305
15.1.6 可视化 318
15.2 微博话题爬取与存储分析 320
15.2.1 数据采集 320
15.2.2 数据提取 329
15.2.3 数据存储 332
15.2.4 项目运行与分析 333
附录A Python与其他语言调用 337
附录B Git项目上传简易教程 339
参考文献 341