前言
前言
本书的读者是那些使用计算机来处理自然语言的人。自然语言是指人类所说的任何一种语言,可以是当代语言(如英语、汉语、西班牙语),也可以指过去曾经使用过的语言(如拉丁语、古希腊语、梵语)。标注(annotation)是一个过程,它通过向文本中加入元数据来增强计算机执行自然语言处理(Natural Language Processing, NLP)的能力。特别地,我们考察如何通过标注将信息加入自然语言文本中以便改善机器学习(Machine Learning,ML)算法(一组设计好的计算机程序,它从文本提供的信息中推出规则,目的是将这些规则用于将来未标注的文本中)的性能。
面向机器学习的自然语言标注本书详细介绍创建自己的自然语言标注数据集(称为语料库)所需的各个阶段和过程,以便为基于语言的数据和知识发现训练机器学习算法。本书的总体目标是为读者展示如何创建自己的语料库。从选择一个标注任务开始,然后创建标注规格说明(annotation specification)、设计标注指南(annotation guideline)、创建一个“黄金标准”语料库(corpus),最后采用这个标注过程开始创建实际的数据。
标注过程并不是线性的,因此需要多次迭代来定义任务、标注和评价,以便得到最佳结果。这一过程可以概括为MATTER标注开发过程:建模(Model)、标注(Annotate)、训练(Train)、测试(Test)、评价(Evaluate)、修改(Revise)。本书引导读者遍历整个循环,提供详细的例子并完整地讨论几种不同类型的标注任务。详细地研究这些任务,使读者清楚地了解其中的来龙去脉,并为他们自己的机器学习任务奠定基础。
此外,本书列出了用于标注文本和评审标注的常用软件的访问和使用指南。尽管有许多标注工具可用,但本书采用的多用途标注环境(Multipurpose Annotation Environment, MAE)特别易于安装和使用(读者可以免费下载),读者不会因为令人困惑的文档而分心。经常与MAE一起使用的是多文档审核接口(Multidocument Adjudication Interface, MAI),它用于在标注的文档之间进行比对。 读者本书写给所有对用计算机研究自然语言所传递的信息内容感兴趣的人。阅读本书,并不要求具有编程或语言学背景,但若对脚本语言(如Python)有基本的理解将更易于理解MATTER循环,因为书中的一些示例代码是用Python写的。如果你从未用过Python,强烈地向你推荐由Steven Bird、Ewan Klein和Edward Loper所著的《Natural Language Processing with Python》(Python自然语言处理)一书(O扲eilly)。该书是一本优秀的关于Python和自然语言处理的入门教材,本书并未涉及这些知识。
如果读者已具备XML(或者HTML)等标记语言的基础知识,将能够更好地理解和掌握本书。你不需要成为深入了解XML原理的专家,但是由于绝大多数标注项目都使用某种形式的XML对标签进行编码,因此我们在本书中将使用XML标准来提供标注样例。不是一定得成为网页设计师才能理解本书,但是具有关于标签和属性的知识对于理解标注项目是如何实现的将会有较大的帮助。
内容安排第1章简单回顾了语言标注和机器学习的历史,简要介绍了将标注任务用于不同层次语言学研究的多种方法。本书的其余部分带领读者遍历整个MATTER循环,从第2章介绍如何创建一个合理的标注目标开始,历经每个阶段,直到评价标注和机器学习阶段的结果,第9章讨论修改项目并汇报工作。最后两章完整地介绍了一个标注项目,以及如何用机器学习和基于规则的算法重新创建标注。读者可以在书后的附录中找到对自己的标注任务有用的资源列表。
软件需求虽然不运行书中给出的任何示例代码也可以学习本书,但我们强烈推荐至少安装自然语言工具包(Natural Language ToolKit, NLTK)以便理解涉及的机器学习技术。NLTK当前支持Python 2.4~2.7(Python 3.0直到本书完成时尚未被支持)。想了解更多信息,请参考http://www.nltk.org。 本书中的所有示例代码都在交互式Python shell编程环境中运行。关于如何使用这一环境,请参阅http://docs.python.org/tutorial/interpreter.html。如果没有特别说明,假设在所有的示例代码前使用命令import nltk。
本书约定在本书中使用以下排版方式: 斜体(Italic)此类字体表示新术语、网址(URL)、电子邮件地址,文件名和文件扩展名。
等宽字体(Constant width)此类字体表示程序清单,以及在文档段内的各种程序元素(如变量名或函数名、数据库名、数据类型、环境变量、语句和关键字)。 注意:表示一个提示、建议或一般性的注解。
警告:表示一个警告或注意事项。
使用代码示例本书在这里帮助你完成你的工作。总的来讲,你可以在你的程序和文档中使用本书中的代码。你不需要联系我们以征得许可,除非你正在复制代码中的重要部分。比如,使用书中的多段代码写一个程序并不需要获得许可。
若将O扲eilly公司出版的书中的例子制成光盘来销售或发行则需要获得许可。在回答问题时,引用本书和列举书中的例子代码并不需要许可。把本书中的代码作为你的产品文档的重要部分时需要获得许可。