内容简介
自然语言理解是人工智能的一个重要分支,主要研究如何利用计算机来理解和生成自然语言。本书重点介绍了自然语言理解所涉及的各个方面,包括语法分析、语义分析、概念分析、语料库语言学、词汇语义驱动、中间语言、WordNet、词汇树邻接文法、链接文法、基于语段的机器翻译方法、内识别与文本过滤、机器翻译的评测等,既有对基础知识的介绍,又有对新研究进展的综述,同时还结合了作者(JamesPustejovsky,生成词库理论的创始人)多年的研究成果。本书内容全面、详略得当,结合实例讲解,使读者更易理解。
作者简介
James Pustejovsky教授是美国布兰代斯(Brandeis University)大学计算机科学系和Volen国家综合系统中心教授。先后在美国麻省理工学院和马萨诸塞大学获得学士学位和博士学位。Pustejovsky教授主要从事自然语言的理论和计算研究。研究领域包括:计算语言学、词汇语义学、知识表征、话语语义学、时间推理和抽取等。已经出版多部专著。
目录
前言1
第1章 基础知识7
1.1 语言标注的重要性 7
1.1.1 语言学描述的层次8
1.1.2 什么是自然语言处理9
1.2 语料库语言学简史10
1.2.1 什么是语料库13
1.2.2 语料库的早期应用15
1.2.3 当今的语料库17
1.2.4 标注类型18
1.3 语言数据和机器学习24
1.3.1 分类25
1.3.2 聚类25
1.3.3 结构化模式归纳26
1.4 标注开发循环26
1.4.1 现象建模27
1.4.2 按照规格说明进行标注30
1.4.3 在语料库上训练和测试算法31
1.4.4 对结果进行评价32
1.4.5 修改模型和算法33
总结34
第2章 确定目标与选择数据36
2.1 定义目标36
2.1.1 目标陈述37
2.1.2 提炼目标:信息量与正确性38
2.2 背景研究43
2.2.1 语言资源44
2.2.2 机构与会议44
2.2.3 自然语言处理竞赛45
2.3 整合数据集46
2.3.1 理想的语料库:代表性与平衡性47
2.3.2 从因特网上收集数据47
2.3.3 从人群中获取数据48
2.4 语料库的规模49
2.4.1 现有语料库50
2.4.2 语料库内部的分布51
总结53
第3章 语料库分析54
3.1 语料库分析中的基本概率知识55
3.1.1 联合概率分布56
3.1.2 贝叶斯定理58
3.2 计算出现次数58
3.2.1 齐普夫定律(Zip's Law)61
3.2.2 n元语法62
3.3 语言模型63
总结65
第4章 建立模型与规格说明66
4.1 模型和规格说明示例66
4.1.1 电影题材分类69
4.1.2 添加命名实体70
4.1.3 语义角色71
4.2 采用(或不采用)现有模型73
4.2.1 创建模型和规格说明:一般性与特殊性74
4.2.2 使用现有模型和规格说明76
4.2.3 使用没有规格说明的模型78
4.3 各种标准78
4.3.1 ISO标准78
4.3.2 社区驱动型标准81
4.3.3 影响标注的其他标准81
总结82
第5章 选择并应用标注标准84
5.1 元数据标注:文档分类85
5.1.1 单标签标注:电影评论85
5.1.2 多标签标注:电影题材87
5.2 文本范围标注:命名实体90
5.2.1 内嵌式标注90
5.2.2 基于词例的分离式标注92
5.2.3 基于字符位置的分离式标注95
5.3 链接范围标注:语义角色96
5.4 ISO标准和你97
总结97
第6章 标注与审核99
6.1 标注项目的基本结构99
6.2 标注规格说明与标注指南101
6.3 准备修改102
6.4 准备用于标注的数据103
6.4.1 元数据103
6.4.2 数据预处理104
6.4.3 为标注工作分割文件104
6.5 撰写标注指南105
6.5.1 例1:单标签标注——电影评论106
6.5.2 例2:多标签标注——电影题材108
6.5.3 例3:范围标注——命名实体111
6.5.4 例4:链接范围标注——语义角色112
6.6 标注人员114
6.7 选择标注环境116
6.8 评价标注结果117
6.8.1 Cohen的Kappa(κ)算法118
6.8.2 Fleiss的Kappa(κ)算法119
6.8.3 解释Kappa系数122
6.8.4 在其他上下文中计算κ值123
6.9 创建黄金标准(审核)125
总结126
第7章 训练:机器学习129
7.1 何谓学习130
7.2 定义学习任务132
7.3 分类算法133
7.3.1 决策树学习135
7.3.2 朴素贝叶斯学习140
7.3.3 最大熵分类器145
7.3.4 其他需要了解的分类器147
7.4 序列归纳算法148
7.5 聚类和无监督学习150
7.6 半监督学习150
7.7 匹配标注与算法153
总结154
第8章 测试与评价156
8.1 测试算法157
8.2 评价算法157
8.2.1 混淆矩阵157
8.2.2 计算评价得分159
8.2.3 解释评价得分163
8.3 可能影响算法评价的问题164
8.3.1 数据集太小164
8.3.2 算法过于适合开发数据166
8.3.3 标注中的信息过多166
8.4 最后测试得分167
总结167
第9章 修改与报告169
9.1 修改项目170
9.1.1 语料库分布和内容170
9.1.2 模型和规格说明170
9.1.3 标注171
9.1.4 训练和测试172
9.2 报告工作173
9.2.1 关于语料库174
9.2.2 关于模型和规格说明175
9.2.3 关于标注任务和标注人员175
9.2.4 关于ML算法176
9.2.5 关于修改177
总结177
第10章 标注:TimeML179
10.1 TimeML的设计目标180
10.2 相关研究181
10.3 建设语料库182
10.4 模型:初步的标注规格说明183
10.4.1 时间183
10.4.2 信号184
10.4.3 事件184
10.4.4 链接184
10.5 标注:最初的尝试185
10.6 模型:TimeBank中的TimeML标注规格说明185
10.6.1 时间表达式185
10.6.2 事件186
10.6.3 信号187
10.6.4 链接187
10.6.5 可信度189
10.7 标注:TimeBank的产生189
10.8 TimeML成为ISO-TimeML192
10.9 对未来建模:TimeML的发展方向193
10.9.1 叙事容器194
10.9.2 将TimeML扩展到其他领域195
10.9.3 事件结构196
总结197
第11章 自动标注:生成TimeML199
11.1 TARSQI组件200
11.1.1 GUTime:时间标志识别201
11.1.2 EVITA:事件识别及分类201
11.1.3 GUTenLINK202
11.1.4 Slinket204
11.1.5 SputLink204
11.1.6 TARSQI组件中的机器学习205
11.2 TTK的改进206
11.2.1 结构变化206
11.2.2 时间实体识别改进:BTime207
11.2.3 时间关系识别207
11.2.4 时间关系验证208
11.2.5时间关系可视化209
11.3 TimeML竞赛:TempEval-2209
11.3.1 TempEval-2:系统概述210
11.3.2 成果综述213
11.4 TTK的未来213
11.4.1 新的输入格式213
11.4.2 叙事容器/叙事时间214
11.4.3 医学文档215
11
前言/序言
前言 本书的读者是那些使用计算机来处理自然语言的人。自然语言是指人类所说的任何一种语言,可以是当代语言(如英语、汉语、西班牙语),也可以指过去曾经使用过的语言(如拉丁语、古希腊语、梵语)。标注(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公司出版的书中的例子制成光盘来销售或发行则需要获得许可。在回答问题时,引用本书和列举书中的例子代码并不需要许可。把本书中的代码作为你的产品文档的重要部分时需要获得许可。
《面向机器学习的自然语言标注》 探索语言的结构与意义:构建高效自然语言处理系统的基石 在信息爆炸的时代,我们每天都在与海量的文本和语音数据打交道。从社交媒体上的交流、新闻报道的分析,到智能助手的对话、法律文档的检索,自然语言无处不在,蕴藏着巨大的价值。然而,机器理解人类语言的复杂性和多义性,一直是一个巨大的挑战。要让计算机能够真正“读懂”并“运用”语言,对其进行精确的标注和理解至关重要。 《面向机器学习的自然语言标注》正是聚焦于这一核心环节,深入探讨了如何为机器学习模型提供高质量的语言数据,从而驱动自然语言处理(NLP)技术的飞跃。本书并非一本单纯的标注工具手册,而是从更宏观的视角出发,系统地阐述了自然语言标注的理论基础、实践方法、质量控制以及在不同NLP任务中的应用。它旨在为读者构建起一个清晰的知识体系,帮助大家理解标注在整个NLP流程中的关键作用,并掌握设计、执行和优化标注流程的有效策略。 第一部分:自然语言标注的理论基石 本书的开篇,我们将一起踏上理解自然语言标注的理论土壤。这一部分将详细剖析自然语言本身的特性,例如词汇的丰富性、句法的多样性、语义的模糊性以及语用学的微妙之处。理解这些语言学上的挑战,是设计合理标注方案的前提。我们将探讨词性、词义、实体、关系、情感、意图等不同层面的语言信息,并分析它们如何影响我们对文本的理解。 随后,我们将深入介绍自然语言标注的几种核心类型,包括但不限于: 词性标注 (Part-of-Speech Tagging, POS Tagging): 识别单词在句子中的语法功能,如名词、动词、形容词等。这不仅是许多后续任务的基础,也是理解句子结构的第一步。我们将讨论不同标注集(如Penn Treebank, Universal Dependencies)的特点和适用场景,以及如何根据任务需求进行定制。 命名实体识别 (Named Entity Recognition, NER): 识别文本中具有特定意义的实体,如人名、地名、组织机构名、日期、时间、货币等。NER是信息抽取、问答系统、知识图谱构建等任务的关键前置步骤。本书将详细介绍如何定义实体类别,如何处理歧义和嵌套实体,以及不同NER任务(如通用NER、领域特定NER)的挑战。 关系抽取 (Relation Extraction, RE): 识别文本中实体之间的语义关系,例如“工作于”、“位于”、“发明了”等。关系抽取能够揭示实体间的关联,对于构建知识图谱、理解事件和进行推理至关重要。我们将探讨如何界定关系类型,如何处理单语句内和跨语句的关系抽取,以及面向复杂关系的标注设计。 情感分析 (Sentiment Analysis, SA): 分析文本所表达的情感极性(正面、负面、中性)或具体情感(喜悦、愤怒、悲伤等)。情感分析在用户评论分析、舆情监控、品牌管理等方面有着广泛应用。本书将深入讨论情感粒度的选择(文档级、句子级、方面级),以及如何标注否定、转折、讽刺等影响情感判断的复杂现象。 意图识别与槽位填充 (Intent Recognition & Slot Filling): 在对话系统中,识别用户的意图(如“预订机票”、“查询天气”)以及从用户语句中提取关键信息(槽位,如“目的地”、“日期”)。这是构建智能对话助手的核心技术,本书将探讨如何设计用于意图和槽位标注的Schema,以及如何处理多轮对话中的上下文信息。 语义角色标注 (Semantic Role Labeling, SRL): 识别句子中谓词(通常是动词)的论元,即谁做了什么,对什么做了什么,在哪里,何时等。SRL能够揭示句子的深层语义结构,对于机器翻译、文本摘要等任务有重要意义。 指代消解 (Coreference Resolution): 识别文本中指向同一现实世界实体的所有表述(代词、名词短语等)。例如,在“小明去了商店,他买了一个苹果。”这句话中,“他”和“小明”指向同一人,“一个苹果”和“苹果”也可能指向同一实体。指代消解对于理解文本连贯性和信息传递至关重要。 其他新兴标注任务: 随着NLP技术的发展,本书还将简要介绍一些新兴的标注任务,如事件抽取、文本蕴含、可疑性检测等,以拓展读者的视野。 第二部分:高效自然的语言标注实践 理论的基石之上,本书将带领读者进入实践的殿堂。这一部分将详细讲解如何设计、执行和管理一个成功的自然语言标注项目。 标注指南的设计与规范化: 这是标注项目成功的关键。本书将提供一套系统的方法论,指导读者如何: 明确标注目标: 准确理解NLP任务的需求,确定标注的具体内容和粒度。 制定清晰的标注规则: 针对每种标注类型,编写详尽、无歧义的标注指南,包含定义、示例、边界情况处理等。 建立一致性: 确保不同标注员在理解和应用规则时的一致性,减少主观偏差。 迭代与优化: 标注指南并非一成不变,应根据标注过程中的反馈和发现的问题进行持续优化。 标注员的选择与培训: 高质量的标注依赖于优秀的标注员。本书将探讨: 标注员的画像: 不同任务适合哪些类型的标注员(语言学背景、领域专家、普通用户等)。 有效的培训方法: 如何通过讲解、示例、实操练习等方式,使标注员快速掌握标注技能和规则。 沟通与协作: 建立顺畅的沟通渠道,解答标注员的疑问,收集反馈。 标注工具的选择与应用: 合适的标注工具能够极大地提高效率和质量。本书将介绍: 各类主流标注工具的特点: 如Doccano, Prodigy, Label Studio, Amazon SageMaker Ground Truth等,分析它们的优缺点、适用场景和定价模式。 自定义工具的考量: 在某些特殊需求下,如何考虑开发或集成自定义标注工具。 工具的功能与工作流: 如何利用工具的自动化功能(如主动学习、预标注)来提升效率。 标注质量控制与评估: 确保标注数据的可靠性是重中之重。本书将深入探讨: 一致性度量: 如Kappa系数、F1分数等,用于量化不同标注员之间的一致性。 冲突解决机制: 如何处理标注员之间的意见不合,建立有效的仲裁流程。 专家评审与抽样检查: 定期对标注数据进行质量抽查,发现并纠正错误。 主动学习 (Active Learning) 在质量提升中的应用: 如何通过智能选择未标注样本,让标注员更专注于最具价值的数据。 处理标注数据中的挑战: 长文本标注: 如何有效处理篇幅较长的文档,如法律合同、学术论文。 多模态数据标注: 结合文本、图像、音频等多种信息进行标注。 低资源语言标注: 如何在数据稀疏的情况下进行有效的标注。 领域迁移与冷启动: 如何将已有的标注知识应用于新领域。 众包与专业标注团队的比较: 分析在不同项目规模和预算下,选择众包平台还是组建自有专业团队的利弊。 第三部分:标注在自然语言处理任务中的应用 了解了理论和实践,本书将进一步展示自然语言标注在各种实际NLP任务中扮演的“幕后英雄”角色。我们将通过具体的案例分析,说明高质量的标注数据如何直接影响模型的性能。 文本分类: 情感分析、主题分类、垃圾邮件检测、新闻分类等。 信息抽取: 命名实体识别、关系抽取、事件抽取,用于构建知识图谱、填充数据库。 问答系统: 识别问题意图、提取答案片段、理解上下文。 机器翻译: 词对齐、短语对齐、句子结构标注。 文本摘要: 识别关键句子、实体、关系,用于生成概括性摘要。 对话系统: 意图识别、槽位填充、对话状态跟踪。 语法解析与句法分析: 依存句法分析、成分句法分析。 词义消歧: 确定词语在特定语境下的具体含义。 自然语言生成 (NLG): 以标注数据为基础,训练模型生成符合语法和语义要求的文本。 本书的目标读者 《面向机器学习的自然语言标注》的目标读者广泛,包括但不限于: NLP工程师与研究人员: 希望深入理解如何为模型准备高质量数据,并掌握标注的最佳实践。 数据科学家与标注项目经理: 负责设计、执行和管理自然语言标注项目,需要全面的理论指导和实操技巧。 语言学专业的学生与从业者: 希望将语言学知识与计算机科学相结合,投身于NLP领域。 产品经理与业务决策者: 需要了解数据标注在NLP产品开发中的重要性,以及如何有效地投入资源。 对自然语言处理技术感兴趣的任何人: 希望了解机器如何理解人类语言的底层机制。 结语 在深度学习时代,数据的重要性不言而喻,而对于自然语言处理而言,高质量的标注数据更是驱动模型智能化的“燃料”。《面向机器学习的自然语言标注》将为你打开一扇通往这一关键领域的大门,帮助你构建起坚实的知识体系,掌握实用的技能,从而在瞬息万变的NLP浪潮中,打造出更智能、更强大的语言应用。本书力求做到理论与实践并重,深度与广度兼顾,希望能成为你在这个充满挑战与机遇的领域中的得力助手。