描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121252303
编辑推荐
内容简介
文本处理是目前互联网内容应用(如搜索引擎、推荐引擎)的关键技术。本书涵盖了文本处理概念和技术的多个方面,包括文本预处理、搜索、字符串匹配、信息抽取、命名实体识别、分类、聚类、标签生成、摘要、问答等。本书的特点在于通过实例来理解文本处理的这些概念和技术,读者利用现有的开源工具就可以自己实现这些实例。
目 录
第1章 开始驾驭文本
1.1 驾驭文本重要的原因
1.2 预览:一个基于事实的问答系统
1.2.1 嗨,弗兰肯斯坦医生
1.3 理解文本很困难
1.4 驾驭的文本
1.5 文本及智能应用:搜索及其他
1.5.1 搜索和匹配
1.5.2 抽取信息
1.5.3 对信息分组
1.5.4 一个智能应用
1.6 小结
1.7 相关资源
第2章 驾驭文本的基础
2.1 语言基础知识
2.1.1 词语及其类别
2.1.2 短语及子句
2.1.3 词法
2.2 文本处理常见工具
2.2.1 字符串处理工具
2.2.2 词条及切词
2.2.3 词性标注
2.2.4 词干还原
2.2.5 句子检测
2.2.6 句法分析和文法
2.2.7 序列建模
2.3 从常见格式文件中抽取内容并做预处理
2.3.1 预处理的重要性
2.3.2 利用Apache Tika抽取内容
2.4 小结
2.5 相关资源
第3章 搜索
3.1 搜索和多面示例:Amazon.com
3.2 搜索概念入门
3.2.1 索引内容
3.2.2 用户输入
3.2.3 利用向量空间模型对文档排名
3.2.4 结果展示
……
第4章 模糊字符串匹配
第5章 命名实体识别
第6章 文本聚类
第7章 分类及标注
第8章 构建示例问答系统
第9章 未驾驭的文本:探索未来前沿
前 言
译者序
不知不觉,我进入信息内容处理这个领域已经有近20年了。这些年中,我的研究涉及机器翻译、Web搜索、跨语言检索、垃圾邮件过滤、问答、推荐、文本分类、聚类、情感分析等诸多技术或应用,也开发了多个原型以及实用系统。我十分高兴能够在这个有趣的领域不断地学习新技术,了解并开发新应用。与此同时,我也亲眼目睹很多优秀的技术书籍不断涌现。完全出于个人兴趣爱好以及与大家分享的个人追求,我先后翻译了《信息检索导论》、《大数据:互联网大规模数据挖掘与分布式处理》、《机器学习实战》、《Mahout实战》等教材或技术书籍。现在,我又推荐大家手边的这本《驾驭文本》。
文本处理是很多应用的基本技术,包括上面提到的搜索、推荐、问答应用都离不开文本处理。“驾驭”文本对于这些系统至关重要。然而,文本特别是自然语言文本本身的情况十分复杂,处理起来十分繁琐,难度很大。如何利用已有开源工具高效地“驾驭”文本是本书的目标。很显然,对于文本处理开发人员来说,这本书能够提供支撑。当然,由于自然语言文本固有的歧义性,文本处理技术特别是深层“理解”技术还远未成熟,研究人员还在不断努力,全方面真正“驾驭”文本是所有文本处理工作人员的终极梦想。
本书介绍了文本搜索、模糊字符串匹配、命名实体识别、文本聚类分类标注等多种文本处理关键技术,并通过融合上述技术构建了一个简单的事实型问答系统。所有的单项技术都有可供下载使用的数据集和相应的运行代码,读者可以下载这些代码和数据进行尝试,以便能够更加深入地理解这些技术。
本书作者都是开源社区的重要贡献者,他们在文本处理领域具有重要的开发经验。这些经验也都体现在本书的内容写作中。
感谢出版社和编辑部的辛勤工作,感谢实验室领导、同事以及译者家人对翻译本书的支持。
因本人各方面水平有限,现有译文中肯定存在许多不足。希望读者能够和我进行联系,以便能够不断改进。
王 斌
2015年3月15日于中关村
序
在高质量文本处理需求持续指数级增长的年代,很难想象某个部门或业务不依赖某种类型的文本信息。迅速发展的Web经济也明显迅速加大了这种依赖性。与此同时,对高水平技术专家的需求也迅速增加。《驾驭文本》这本书就是应这种环境而出版的一本优秀的实用性书籍,它能够提供大量来自真实世界的经过实际验证的指导案例。
Grant Ingersoll和Drew Farris是两位优秀的高水平软件工程师,和我一起工作过多年。而Tom Morton是在自然语言处理领域备受尊重的贡献者。他们仨联袂为我们奉献了一本实际课程的教材,该课程可以指导其他有志加入文本处理高级人才行列的技术人员,这些文本处理人才称为自然语言处理工程师。
本书采用学而致用的方法,为一个实际上十分复杂的过程褪去神秘的外衣。通过集中关注已有工具、可实现样例和已验证的代码,几位作者带领读者快速学习本来需要一学期的NLP课程。
作为软件工程师,你已经具备基本能力能够跟进这些样例、代码和书中提到的开源工具,从而能够比预期更快地成为真正的专家,同时也能更快准备好面对来自实际世界的机会。
美国雪城大学信息研究学院院长 LIZ LIDDY
前.言
生活中充满偶然瞬间,它们当中只有极少数会脱颖而出,就像那个确定我(Grant)职业生涯的瞬间一样。那是上世纪90年代末,当时我是一个年轻的软件开发人员,主要从事分布式电磁仿真的工作。有一天我看到一则广告,在纽约雪城(Syracuse)的一家小公司TextWise招聘一个开发职位。看完职位描述之后,我都没想过能获得这份工作,但是当时决定试试运气,就提交了一份简历。莫名其妙地,我获得了这份工作,于是开始了我的搜索和自然语言处理生涯。没想到这么多年以后,我仍然还在做搜索和自然语言处理,更没想到还会写一本这方面的书。
我那时候的个任务是开发一个跨语言信息检索(CLIR)系统,要求输入英语查询能够找到法语、西班牙语和日语文档,并将它们自动翻译成英语。回想起来,那个系统触及了我开始喜欢文本处理工作的所有难题:搜索、分类、信息抽取、机器翻译和所有那些奇怪的让每个学习文法的学生都疯狂的语言规则等等。个项目之后,我后来又参与了多个搜索和NLP系统的开发工作,范围从基于规则的分类器到问答系统等等。后来在2004年,NLP中心的一份新工作让我开始接触Apache Lucene,这个时代的开源搜索库(无论如何,至少目前还是)。后来我又参与开发一个CLIR系统,不过这次处理的是英语和阿拉伯语。因为需要一些Lucene功能来完成这项任务,我开始提交一些功能和错误的修正补丁。过了一段时间之后,我成为该社区的贡献者。从那之后,开源的“闸门”被轰然打开。我在开源领域涉入更深,并与Isabel Drost和Karl Wettin开始了Apache Mahout机器学习项目,并共同创立了一家利用Apache Lucene和Solr进行搜索和文本分析的公司Lucid Imagination。
转了一圈之后,我认为搜索和NLP属于计算机科学的定义范围,不论是数据结构还是算法都需要复杂的方法来解决问题。除此之外,还有处理用户生成的大规模Web和社交内容的扩展性需求,这构成你的开发者之梦。这本书由工程师撰写给工程师,特别关注于使用现有、久经考验的开源库来解决文本处理中的艰难问题。个人认为目前这方面的市场还处于空白。我希望本书能够帮助解决当前工作中每天遇到的问题,也能激发你看到带来大量学习机会的文本世界。
GRANT INGERSOLL
我(Tom)在高二时就开始对人工智能感兴趣,本科毕业时选择去读自然语言处理方向的研究生。在宾夕法尼亚大学,我学习了大量文本处理、机器学习、算法和数据结构知识。我也有机会和自然语言处理领域杰出的一些人共事并从他们身上学到很多东西。
在研究生阶段的课程中,我参加了多个NLP系统的开发工作,并参加了大量DARPA资助的有关共指、摘要和问答的评测。在这些工作中,我熟悉了Lucene和更大的开源运动。我也注意到能够提供高效端对端处理的开源文本处理软件还有较大欠缺。于是在我硕士论文的基础上,我为OpenNLP项目提供了大量贡献代码,并在后面美国教育测试服务中心(Educational Testing Services)开发自动作文和短答案评分系统时继续学习NLP系统的一些知识。
在开源社区工作教会我很多与其他人一起工作的方法,也使我成为一名更优秀的软件工程师。现在,我在Comcast Cororation工作,与多个软件工程师团队一起使用本书中介绍的工具和技术。我希望本书能够在研究人员的艰难工作(这些工作就像我在研究生阶段学到的那样)与以使用文本处理来解决实际问题为目标的软件工程师之间架起桥梁。
THOMAS MORTON
和Grant一样,我是上世纪90年代中期由Elizabeth Liddy博士、Woojin Paik以及其他一些在TextWise进行研究的人员引入信息检索和自然语言处理领域的。我在完成雪城大学信息研究学院的硕士工作时和这个团队一起工作。那时,TextWise正处于从研究组转型为创业公司的阶段,主要基于文本处理研究的成果开发商业应用。我在那个公司待了很多年,其间不断地学习和发现新的东西,并与一些优秀的同事一起共事,他们从各个角度来应对“教机器理解语言”这个挑战。
个人而言,我一开始是从软件开发人员的角度切入到文本分析这个主题的。我有机会同优秀的研究人员一起工作,将他们的思想从实验转化为功能原型及大规模可扩展的系统。在此过程中,我有机会从事大量现在被称为“数据科学”的工作,发掘出对探索和理解大规模数据以及对它们进行学习的工具和技术的深深热爱。
怎样夸大开源软件对我职业的巨大影响都毫不为过。作为研究的伴随品,可用的开源代码为学习文本分析的新技术和方法以及软件开发提供了一条十分高效的途径。在这里我对所有尽力将知识和经验共享给那些有热情参加学习者的人表示敬意。我特别要感谢Apache软件基金会的那些好伙计们,他们为开源软件、人、处理过程和支持的社区贡献出一个不断成长的生机勃勃的生态系统。
本书中的工具和技术深深扎根于开源软件社区。Lucene、Solr、Mahout和OpenNLP都处于Apache这顶大伞之下。本书只介绍这些工具能实现的一些表面功能。我们的目标是提供对文本处理核心概念的理解,并为本领域的未来探索打下坚实的基础。
祝大家编程愉快!
DREW FARRIS
致.谢
本书经历很长时间完成,代表了很多人的心血,这里要对他们表示诚挚谢意。
感谢Apache Solr、Lucene、Mahout、OpenNLP和其他本书中工具的用户和开发者
感谢Manning出版社,特别是和我们一直密切合作的Douglas Pundick、Karen Tegtmeyer和MarjanBace
感谢本书的开发编辑Jeff Bleiel,感谢他在我们疯狂时间表的情况下仍然推进写作过程,感谢他一直以来的优秀反馈,也感谢他将我们这些开发人员转变为作者
感谢本书的评阅人,他们提出的问题、评论及批评提高了本书的质量。他们是:Adam Tacy、Amos Bannister、Clint Howarth、CostantinoCerbo、Dawid Weiss、Denis Kurilenko、Doug Warren、Frank Jania、Gann Bierner、James Hatheway、James Warren、Jason Rennie、Jeffrey Copeland、Josh Reed、Julien Nioche、Keith Kim、Manish Katyal、MargrietBruggeman、Massimo Perga、NikanderBruggeman、Philipp K. Janert、Rick Wagner、Robi Sen、SanchetDigh
不知不觉,我进入信息内容处理这个领域已经有近20年了。这些年中,我的研究涉及机器翻译、Web搜索、跨语言检索、垃圾邮件过滤、问答、推荐、文本分类、聚类、情感分析等诸多技术或应用,也开发了多个原型以及实用系统。我十分高兴能够在这个有趣的领域不断地学习新技术,了解并开发新应用。与此同时,我也亲眼目睹很多优秀的技术书籍不断涌现。完全出于个人兴趣爱好以及与大家分享的个人追求,我先后翻译了《信息检索导论》、《大数据:互联网大规模数据挖掘与分布式处理》、《机器学习实战》、《Mahout实战》等教材或技术书籍。现在,我又推荐大家手边的这本《驾驭文本》。
文本处理是很多应用的基本技术,包括上面提到的搜索、推荐、问答应用都离不开文本处理。“驾驭”文本对于这些系统至关重要。然而,文本特别是自然语言文本本身的情况十分复杂,处理起来十分繁琐,难度很大。如何利用已有开源工具高效地“驾驭”文本是本书的目标。很显然,对于文本处理开发人员来说,这本书能够提供支撑。当然,由于自然语言文本固有的歧义性,文本处理技术特别是深层“理解”技术还远未成熟,研究人员还在不断努力,全方面真正“驾驭”文本是所有文本处理工作人员的终极梦想。
本书介绍了文本搜索、模糊字符串匹配、命名实体识别、文本聚类分类标注等多种文本处理关键技术,并通过融合上述技术构建了一个简单的事实型问答系统。所有的单项技术都有可供下载使用的数据集和相应的运行代码,读者可以下载这些代码和数据进行尝试,以便能够更加深入地理解这些技术。
本书作者都是开源社区的重要贡献者,他们在文本处理领域具有重要的开发经验。这些经验也都体现在本书的内容写作中。
感谢出版社和编辑部的辛勤工作,感谢实验室领导、同事以及译者家人对翻译本书的支持。
因本人各方面水平有限,现有译文中肯定存在许多不足。希望读者能够和我进行联系,以便能够不断改进。
王 斌
2015年3月15日于中关村
序
在高质量文本处理需求持续指数级增长的年代,很难想象某个部门或业务不依赖某种类型的文本信息。迅速发展的Web经济也明显迅速加大了这种依赖性。与此同时,对高水平技术专家的需求也迅速增加。《驾驭文本》这本书就是应这种环境而出版的一本优秀的实用性书籍,它能够提供大量来自真实世界的经过实际验证的指导案例。
Grant Ingersoll和Drew Farris是两位优秀的高水平软件工程师,和我一起工作过多年。而Tom Morton是在自然语言处理领域备受尊重的贡献者。他们仨联袂为我们奉献了一本实际课程的教材,该课程可以指导其他有志加入文本处理高级人才行列的技术人员,这些文本处理人才称为自然语言处理工程师。
本书采用学而致用的方法,为一个实际上十分复杂的过程褪去神秘的外衣。通过集中关注已有工具、可实现样例和已验证的代码,几位作者带领读者快速学习本来需要一学期的NLP课程。
作为软件工程师,你已经具备基本能力能够跟进这些样例、代码和书中提到的开源工具,从而能够比预期更快地成为真正的专家,同时也能更快准备好面对来自实际世界的机会。
美国雪城大学信息研究学院院长 LIZ LIDDY
前.言
生活中充满偶然瞬间,它们当中只有极少数会脱颖而出,就像那个确定我(Grant)职业生涯的瞬间一样。那是上世纪90年代末,当时我是一个年轻的软件开发人员,主要从事分布式电磁仿真的工作。有一天我看到一则广告,在纽约雪城(Syracuse)的一家小公司TextWise招聘一个开发职位。看完职位描述之后,我都没想过能获得这份工作,但是当时决定试试运气,就提交了一份简历。莫名其妙地,我获得了这份工作,于是开始了我的搜索和自然语言处理生涯。没想到这么多年以后,我仍然还在做搜索和自然语言处理,更没想到还会写一本这方面的书。
我那时候的个任务是开发一个跨语言信息检索(CLIR)系统,要求输入英语查询能够找到法语、西班牙语和日语文档,并将它们自动翻译成英语。回想起来,那个系统触及了我开始喜欢文本处理工作的所有难题:搜索、分类、信息抽取、机器翻译和所有那些奇怪的让每个学习文法的学生都疯狂的语言规则等等。个项目之后,我后来又参与了多个搜索和NLP系统的开发工作,范围从基于规则的分类器到问答系统等等。后来在2004年,NLP中心的一份新工作让我开始接触Apache Lucene,这个时代的开源搜索库(无论如何,至少目前还是)。后来我又参与开发一个CLIR系统,不过这次处理的是英语和阿拉伯语。因为需要一些Lucene功能来完成这项任务,我开始提交一些功能和错误的修正补丁。过了一段时间之后,我成为该社区的贡献者。从那之后,开源的“闸门”被轰然打开。我在开源领域涉入更深,并与Isabel Drost和Karl Wettin开始了Apache Mahout机器学习项目,并共同创立了一家利用Apache Lucene和Solr进行搜索和文本分析的公司Lucid Imagination。
转了一圈之后,我认为搜索和NLP属于计算机科学的定义范围,不论是数据结构还是算法都需要复杂的方法来解决问题。除此之外,还有处理用户生成的大规模Web和社交内容的扩展性需求,这构成你的开发者之梦。这本书由工程师撰写给工程师,特别关注于使用现有、久经考验的开源库来解决文本处理中的艰难问题。个人认为目前这方面的市场还处于空白。我希望本书能够帮助解决当前工作中每天遇到的问题,也能激发你看到带来大量学习机会的文本世界。
GRANT INGERSOLL
我(Tom)在高二时就开始对人工智能感兴趣,本科毕业时选择去读自然语言处理方向的研究生。在宾夕法尼亚大学,我学习了大量文本处理、机器学习、算法和数据结构知识。我也有机会和自然语言处理领域杰出的一些人共事并从他们身上学到很多东西。
在研究生阶段的课程中,我参加了多个NLP系统的开发工作,并参加了大量DARPA资助的有关共指、摘要和问答的评测。在这些工作中,我熟悉了Lucene和更大的开源运动。我也注意到能够提供高效端对端处理的开源文本处理软件还有较大欠缺。于是在我硕士论文的基础上,我为OpenNLP项目提供了大量贡献代码,并在后面美国教育测试服务中心(Educational Testing Services)开发自动作文和短答案评分系统时继续学习NLP系统的一些知识。
在开源社区工作教会我很多与其他人一起工作的方法,也使我成为一名更优秀的软件工程师。现在,我在Comcast Cororation工作,与多个软件工程师团队一起使用本书中介绍的工具和技术。我希望本书能够在研究人员的艰难工作(这些工作就像我在研究生阶段学到的那样)与以使用文本处理来解决实际问题为目标的软件工程师之间架起桥梁。
THOMAS MORTON
和Grant一样,我是上世纪90年代中期由Elizabeth Liddy博士、Woojin Paik以及其他一些在TextWise进行研究的人员引入信息检索和自然语言处理领域的。我在完成雪城大学信息研究学院的硕士工作时和这个团队一起工作。那时,TextWise正处于从研究组转型为创业公司的阶段,主要基于文本处理研究的成果开发商业应用。我在那个公司待了很多年,其间不断地学习和发现新的东西,并与一些优秀的同事一起共事,他们从各个角度来应对“教机器理解语言”这个挑战。
个人而言,我一开始是从软件开发人员的角度切入到文本分析这个主题的。我有机会同优秀的研究人员一起工作,将他们的思想从实验转化为功能原型及大规模可扩展的系统。在此过程中,我有机会从事大量现在被称为“数据科学”的工作,发掘出对探索和理解大规模数据以及对它们进行学习的工具和技术的深深热爱。
怎样夸大开源软件对我职业的巨大影响都毫不为过。作为研究的伴随品,可用的开源代码为学习文本分析的新技术和方法以及软件开发提供了一条十分高效的途径。在这里我对所有尽力将知识和经验共享给那些有热情参加学习者的人表示敬意。我特别要感谢Apache软件基金会的那些好伙计们,他们为开源软件、人、处理过程和支持的社区贡献出一个不断成长的生机勃勃的生态系统。
本书中的工具和技术深深扎根于开源软件社区。Lucene、Solr、Mahout和OpenNLP都处于Apache这顶大伞之下。本书只介绍这些工具能实现的一些表面功能。我们的目标是提供对文本处理核心概念的理解,并为本领域的未来探索打下坚实的基础。
祝大家编程愉快!
DREW FARRIS
致.谢
本书经历很长时间完成,代表了很多人的心血,这里要对他们表示诚挚谢意。
感谢Apache Solr、Lucene、Mahout、OpenNLP和其他本书中工具的用户和开发者
感谢Manning出版社,特别是和我们一直密切合作的Douglas Pundick、Karen Tegtmeyer和MarjanBace
感谢本书的开发编辑Jeff Bleiel,感谢他在我们疯狂时间表的情况下仍然推进写作过程,感谢他一直以来的优秀反馈,也感谢他将我们这些开发人员转变为作者
感谢本书的评阅人,他们提出的问题、评论及批评提高了本书的质量。他们是:Adam Tacy、Amos Bannister、Clint Howarth、CostantinoCerbo、Dawid Weiss、Denis Kurilenko、Doug Warren、Frank Jania、Gann Bierner、James Hatheway、James Warren、Jason Rennie、Jeffrey Copeland、Josh Reed、Julien Nioche、Keith Kim、Manish Katyal、MargrietBruggeman、Massimo Perga、NikanderBruggeman、Philipp K. Janert、Rick Wagner、Robi Sen、SanchetDigh
评论
还没有评论。