第1章 自然语言处理简介 1
1.1 为什么要学习NLP 2
1.2 先从Python开始吧 5
1.2.1 列表 5
1.2.2 自助功能 6
1.2.3 正则表达式 8
1.2.4 字典 9
1.2.5 编写函数 10
1.3 向NLTK迈进 11
1.4 练习 16
1.5 小结 17
第2章 文本的歧义及其清理 18
2.1 何谓文本歧义 18
2.2 文本清理 20
2.3 语句分离器 21
2.4 标识化处理 22
2.5 词干提取 23
2.6 词形还原 24
2.7 停用词移除 25
2.8 罕见词移除 26
2.9 拼写纠错 26
2.10 练习 27
2.11 小结 28
第3章 词性标注 29
3.1 何谓词性标注 29
3.1.1 Stanford标注器 32
3.1.2 深入了解标注器 33
3.1.3 顺序性标注器 35
3.1.4 Brill标注器 37
3.1.5 基于机器学习的标注器 37
3.2 命名实体识别(NER) 38
3.3 练习 40
3.4 小结 41
第4章 文本结构解析 43
4.1 浅解析与深解析 43
4.2 两种解析方法 44
4.3 为什么需要进行解析 44
4.4 不同的解析器类型 46
4.4.1 递归下降解析器 46
4.4.2 移位-归约解析器 46
4.4.3 图表解析器 46
4.4.4 正则表达式解析器 47
4.5 依存性文本解析 48
4.6 语块分解 50
4.7 信息提取 53
4.7.1 命名实体识别(NER) 53
4.7.2 关系提取 54
4.8 小结 55
第5章 NLP应用 56
5.1 构建第一个NLP应用 57
5.2 其他NLP应用 60
5.2.1 机器翻译 60
5.2.2 统计型机器翻译 61
5.2.3 信息检索 62
5.2.4 语音识别 64
5.2.5 文本分类 65
5.2.6 信息提取 66
5.2.7 问答系统 67
5.2.8 对话系统 67
5.2.9 词义消歧 67
5.2.10 主题建模 68
5.2.11 语言检测 68
5.2.12 光符识别 68
5.3 小结 68
第6章 文本分类 70
6.1 机器学习 71
6.2 文本分类 72
6.3 取样操作 74
6.3.1 朴素贝叶斯法 76
6.3.2 决策树 79
6.3.3 随机梯度下降法 80
6.3.4 逻辑回归 81
6.3.5 支持向量机 81
6.4 随机森林算法 83
6.5 文本聚类 83
6.6 文本中的主题建模 84
6.7 参考资料 87
6.8 小结 87
第7章 Web爬虫 88
7.1 Web爬虫 88
7.2 编写第一个爬虫程序 89
7.3 Scrapy库中的数据流 92
7.3.1 Scrapy库的shell 93
7.3.2 目标项 98
7.4 生成网站地图的蜘蛛程序 99
7.5 目标项管道 100
7.6 参考资料 102
7.7 小结 102
第8章 NLTK与其他Python库的搭配运用 104
8.1 NumPy 104
8.1.1 多维数组 105
8.1.2 基本运算 106
8.1.3 从数组中提取数据 107
8.1.4 复杂矩阵运算 108
8.2 SciPy 112
8.2.1 线性代数 113
8.2.2 特征值与特征向量 113
8.2.3 稀疏矩阵 114
8.2.4 优化措施 115
8.3 pandas 117
8.3.1 读取数据 117
8.3.2 数列 119
8.3.3 列转换 121
8.3.4 噪声数据 121
8.4 matplotlib 123
8.4.1 子图绘制 123
8.4.2 添加坐标轴 124
8.4.3 散点图绘制 125
8.4.4 条形图绘制 126
8.4.5 3D绘图 126
8.5 参考资料 126
8.6 小结 127
第9章 Python中的社交媒体挖掘 128
9.1 数据收集 128
9.2 数据提取 132
9.3 地理可视化 134
9.3.1 影响力检测 135
9.3.2 Facebook 135
9.3.3 有影响力的朋友 139
9.4 小结 141
第10章 大规模文本挖掘 142
10.1 在Hadoop上使用Python的不同方式 142
10.1.1 Python的流操作 143
10.1.2 Hive/Pig下的UDF 143
10.1.3 流封装器 143
10.2 Hadoop上的NLTK 144
10.2.1 用户定义函数(UDF) 144
10.2.2 Python的流操作 146
10.3 Hadoop上的Scikit-learn 147
10.4 PySpark 150
10.5 小结 153