内容简介
文本处理是目前互联网内容应用(如搜索引擎、推荐引擎)的关键技术。本书涵盖了文本处理概念和技术的多个方面,包括文本预处理、搜索、字符串匹配、信息抽取、命名实体识别、分类、聚类、标签生成、摘要、问答等。本书的特点在于通过实例来理解文本处理的这些概念和技术,读者利用现有的开源工具就可以自己实现这些实例。
作者简介
王斌,博士,中国科学院信息工程研究所研究员,博士生导师,研究方向为信息检索与自然语言处理。主持科研项目20余项,发表学术论文120余篇,译有《信息检索导论》、《大数据:互联网大规模数据挖掘与分布式处理》、《机器学习实战》、《Mahout实战》等书籍。现为中国中文信息学会理事、信息检索专委会、社会媒体处理专委会及语言与知识计算专业委员会委员,《中文信息学报》编委,中国计算机学会高级会员及中文信息处理专委会委员。
目录
第1章 开始驾驭文本 1
11 驾驭文本重要的原因 2
12 预览:一个基于事实的问答系统 4
121 嗨,弗兰肯斯坦医生 5
13 理解文本很困难 8
14 驾驭的文本 11
15 文本及智能应用:搜索及其他 13
151 搜索和匹配 13
152 抽取信息 14
153 对信息分组 15
154 一个智能应用 15
16 小结 15
17 相关资源 16
第2章 驾驭文本的基础 17
21 语言基础知识 18
211 词语及其类别 19
212 短语及子句 20
213 词法 21
22 文本处理常见工具 23
221 字符串处理工具 23
222 词条及切词 23
223 词性标注 25
224 词干还原 27
225 句子检测 29
226 句法分析和文法 31
227 序列建模 33
23 从常见格式文件中抽取内容并做预处理 34
231 预处理的重要性 35
232 利用Apache Tika抽取内容 37
24 小结 39
25 相关资源 40
第3章 搜索 41
31 搜索和多面示例:Amazoncom 42
32 搜索概念入门 44
321 索引内容 45
322 用户输入 47
323 利用向量空间模型对文档排名 51
324 结果展示 54
33 Apache Solr搜索服务器介绍 57
331 首次运行Solr 58
332 理解Solr中的概念 59
34 利用Apache Solr对内容构建索引 63
341 使用XML构建索引 64
342 利用Solr和Apache Tika对内容进行抽取和索引 66
35 利用Apache Solr来搜索内容 69
351 Solr查询输入参数 71
352 抽取内容的多面展示 74
36 理解搜索性能因素 77
361 数量判定 77
362 判断数量 81
37 提高搜索性能 82
371 硬件改进 82
372 分析的改进 83
373 提高查询性能 85
374 其他评分模型 88
375 提升Solr性能的技术 89
38 其他搜索工具 91
39 小结 93
310 相关资源 93
第4章 模糊字符串匹配 94
41 模糊字符串匹配方法 96
411 字符重合度度量方法 96
412 编辑距离 99
413 n元组编辑距离 102
42 寻找模糊匹配串 105
421 在Solr中使用前缀来匹配 105
422 利用trie树进行前缀匹配 106
423 使用n元组进行匹配 111
43 构建模糊串匹配应用 112
431 在搜索中加入提前输入功能 113
432 搜索中的查询拼写校正 117
433 记录匹配 122
44 小结 127
45 相关资源 128
第5章 命名实体识别 129
51 命名实体的识别方法 131
511 基于规则的实体识别 131
512 基于统计分类器的实体识别 132
52 基于OpenNLP的基本实体识别 133
521 利用OpenNLP寻找人名 134
522 OpenNLP识别的实体解读 136
523 基于概率过滤实体 137
53 利用OpenNLP进行深度命名实体识别 137
531 利用OpenNLP识别多种实体类型 138
532 OpenNLP识别实体的背后机理 141
54 OpenNLP的性能 143
541 结果的质量 144
542 运行性能 145
543 OpenNLP的内存使用 146
55 对新领域定制OpenNLP实体识别 147
551 训练模型的原因和方法 147
552 训练OpenNLP模型 148
553 改变建模输入 150
554 对实体建模的新方法 152
56 小结 154
57 进一步阅读材料 155
第6章 文本聚类 156
61 Google News中的文档聚类 157
62 聚类基础 158
621 三种聚类的文本类型 158
622 选择聚类算法 160
623 确定相似度 161
624 给聚类结果打标签 162
625 聚类结果的评估 163
63 搭建一个简单的聚类应用 165
64 利用Carrot2对搜索结果聚类 166
641 使用Carrot2API 166
642 使用Carrot2对Solr的搜索结果聚类 168
65 利用Apache Mahout对文档集聚类 171
651 对聚类的数据进行预处理 172
652 K-means聚类 175
66 利用Apache Mahout进行主题建模 180
67 考察聚类性能 183
671 特征选择与特征约简 183
672 Carrot2的性能和质量 186
673 Mahout基准聚类算法 187
68 致谢 192
69 小结 192
610 参考文献 193
第7章 分类及标注 195
71 分类及归类概述 197
72 分类过程 200
721 选择分类机制 201
722 识别文本分类中的特征 202
723 训练数据的重要性 203
724 评估分类器性能 206
725 将分类器部署到生产环境 208
73 利用Apache Lucene构建文档分类器 209
731 利用Lucene对文本进行分类 210
732 为MoreLikeThis分类器准备训练数据 212
733 训练MoreLikeThis分类器 214
734 利用MoreLikeThis分类器对文档进行分类 217
735 测试MoreLikeThis分类器 220
736 将MoreLikeThis投入生产环境 223
74 利用Apache Mahout训练朴素贝叶斯分类器 223
741 利用朴素贝叶斯算法进行文本分类 224
742 准备训练数据 225
743 留存测试数据 229
744 训练分类器 229
745 测试分类器 231
746 改进自举过程 232
747 将Mahout贝叶斯分类器集成到Solr 234
75 利用OpenNLP进行文档分类 238
751 回归模型及最大熵文档分类 239
752 为最大熵文档分类器准备训练数据 241
753 训练最大熵文档分类器 242
754 测试最大熵文档分类器 248
755 生产环境下的最大熵文档分类器 249
76 利用Apache Solr构建标签推荐系统 250
761 为标签推荐收集训练数据 253
762 准备训练数据 255
763 训练Solr标签推荐系统 256
764 构建推荐标签 258
765 对标签推荐系统进行评估 261
77 小结 263
78 参考文献 265
第8章 构建示例问答系统 266
81 问答系统基础知识 268
82 安装并运行QA代码 270
83 一个示例问答系统的架构 271
84 理解问题并产生答案 274
841 训练答案类型分类器 275
842 对查询进行组块分析 279
843 计算答案类型 280
844 生成查询 283
845 对候选段落排序 285
85 改进系统的步骤 287
86 本章小结 287
87 相关资源 288
第9章 未驾驭的文本:探索未来前沿 289
91 语义、篇章和语用:探索高级NLP 290
911 语义 291
912 篇章 292
913 语用 294
92 文档及文档集自动摘要 295
93 关系抽取 298
931 关系抽取方法综述 299
932 评估 302
933 关系抽取工具 303
94 识别重要内容和人物 303
941 全局重要性及权威度 304
942 个人重要性 305
943 与重要性相关的资源及位置 306
95 通过情感分析来探测情感 306
951 历史及综述 307
952 工具及数据需求 308
953 一个基本的极性算法 309
954 高级话题 311
955 用于情感分析的开源库 312
96 跨语言检索 313
97 本章小结 315
98 相关资源 315
精彩书摘
这显著地提高了web搜索引擎及更小型搜索引擎的门槛。尽管大的互联网引擎能够访问Google一样的资源,但是小系统往往没法访问大量查询日志或像HTML链接一样的文档结构,也没法使用其他用户相关反馈机制来提供对用户而言很有价值的信息。花时间构建复杂方案之前,我们给出有助于改进结果的两个关键事项。
1.用户训练:有时需要给用户展示出,通过学习一些关键语法技巧(如短语等)可以将检索结果提高到何种程度。
2.外部知识:是否存在某个指示信息使得一篇或多篇文档比其他文档更重要?例如,也许该文档是CEO写的,或者100个人中有99人将其标为有用,或者该文档的边缘收益是对比文档的五倍。不管是什么,都要想办法将这个知识编码到系统当中并作为搜索的一个因素。如果搜索系统不容许这么做,那么可能是时候构建一个新系统了!
除了用户训练和使用索引的先验知识之外,还有很多办法可以提高查询速度和精度。首先,在大部分情况下,查询词项之间应该是AND而非0R的关系。例如,用户输人的是Jumping Jack Flash,那么假设不是搜索短语的话,该查询应该转换成的等价形式为Jumping AND Jack AND Flash而不是。通过使用JAND,所有的查询词项都应该匹配。当然这种做法几乎可以肯定会提高正确率,但是可能会降低召回率。由于采用这种做法只需要对更少的文档进行评分,因此其速度肯定会更快。使用AND可能会导致零结果查询,但是如果想要结果的话之后可以回退到一个0R查询。对于简单查询AND可能不会产生足够的结果的一个唯一可能是文档集非常小(大概来讲,少于200000篇文档)。
注意 这里的AND使用并不意味着所有的搜索引擎都支持这种语法,但是Solr使用这种语法,因此为简单解释起见我们就保留这样的描述。
……
前言/序言
驾驭文本:文本的发现 组织和处理 电子书 下载 mobi epub pdf txt