内容简介
文本处理是目前互联网内容应用(如搜索引擎、推荐引擎)的关键技术。《驾驭文本:文本的发现 组织和处理》涵盖了文本处理概念和技术的多个方面,包括文本预处理、搜索、字符串匹配、信息抽取、命名实体识别、分类、聚类、标签生成、摘要、问答等。《驾驭文本:文本的发现 组织和处理》的特点在于通过实例来理解文本处理的这些概念和技术,读者利用现有的开源工具就可以自己实现这些实例。作者简介
王斌,博士,中国科学院信息工程研究所研究员,博士生导师,研究方向为信息检索与自然语言处理。主持科研项目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 利用ApacheTika抽取内容37
24 小结39
25 相关资源40
第3章 搜索41
31 搜索和多面示例:Amazoncom42
32 搜索概念入门44
321 索引内容45
322 用户输入47
323 利用向量空间模型对文档排名51
324 结果展示54
33 ApacheSolr搜索服务器介绍57
331 首次运行Solr58
332 理解Solr中的概念59
34 利用ApacheSolr对内容构建索引63
341 使用XML构建索引64
342 利用Solr和ApacheTika对内容进行抽取和索引66
35 利用ApacheSolr来搜索内容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 GoogleNews中的文档聚类157
62 聚类基础158
621 三种聚类的文本类型158
622 选择聚类算法160
623 确定相似度161
624 给聚类结果打标签162
625 聚类结果的评估163
63 搭建一个简单的聚类应用165
64 利用Carrot2对搜索结果聚类166
641 使用Carrot2API166
642 使用Carrot2对Solr的搜索结果聚类168
65 利用ApacheMahout对文档集聚类171
651 对聚类的数据进行预处理172
652 K-means聚类175
66 利用ApacheMahout进行主题建模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 利用ApacheLucene构建文档分类器209
731 利用Lucene对文本进行分类210
732 为MoreLikeThis分类器准备训练数据212
733 训练MoreLikeThis分类器214
734 利用MoreLikeThis分类器对文档进行分类217
735 测试MoreLikeThis分类器220
736 将MoreLikeThis投入生产环境223
74 利用ApacheMahout训练朴素贝叶斯分类器223
741 利用朴素贝叶斯算法进行文本分类224
742 准备训练数据225
743 留存测试数据229
744 训练分类器229
745 测试分类器231
746 改进自举过程232
747 将Mahout贝叶斯分类器集成到Solr234
75 利用OpenNLP进行文档分类238
751 回归模型及最大熵文档分类239
752 为最大熵文档分类器准备训练数据241
753 训练最大熵文档分类器242
754 测试最大熵文档分类器248
755 生产环境下的最大熵文档分类器249
76 利用ApacheSolr构建标签推荐系统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 语义、篇章和语用:探索高级NLP290
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的关系。例如,用户输人的是JumpingJackFlash,那么假设不是搜索短语的话,该查询应该转换成的等价形式为JumpingANDJackANDFlash而不是。通过使用JAND,所有的查询词项都应该匹配。当然这种做法几乎可以肯定会提高正确率,但是可能会降低召回率。由于采用这种做法只需要对更少的文档进行评分,因此其速度肯定会更快。使用AND可能会导致零结果查询,但是如果想要结果的话之后可以回退到一个0R查询。对于简单查询AND可能不会产生足够的结果的一个唯一可能是文档集非常小(大概来讲,少于200000篇文档)。
注意这里的AND使用并不意味着所有的搜索引擎都支持这种语法,但是Solr使用这种语法,因此为简单解释起见我们就保留这样的描述。
……