面向机器学习的自然语言标注1.4 标注开发循环

简介:

1.4 标注开发循环


对具体语言学现象进行编码的特征必须足够丰富,以便捕获训练算法中的预期行为。这些语言学描述通常来自对语言现象的理论建模。这些描述反过来形成了具体语言标注的基础,其自身可以作为特征用于训练和测试文本识别或标注算法的开发循环中。最后,基于对系统性能的分析和评价,语言现象的模型可能需要修改,进而可以重新训练和测试。

我们把这个开发循环称为MATTER方法,如图1-10所示(Pustejovsky 2006)。

 

图1-10: MATTER循环

建模

结构化描述提供了有理论依据的属性,这些属性来自对数据的经验观察值。

标注

标注方案采用对输入数据的具体结构描述和性质进行编码的特征集合。

训练

使用经过目标特征集标注的语料库对算法进行训练。

测试

在剩余数据上测试算法。

评价

对结果进行标准化的评价。

修改

修改模型和标注规格说明,使标注在算法中使用时具有更好的鲁棒性和可靠性。

假设某个具体问题或现象已经激发了你的兴趣,为此你需要为机器学习的训练标注一些自然语言数据。可以考虑两类问题。首先设想有一个直接的文档分类任务。你可能对根据其内容或某个具体爱好把电子邮件区分为垃圾邮件或非垃圾邮件感兴趣。或者你可能想根据所表达情感的程度对收到的邮件进行排序。

现在让我们思考一个更深入的任务,在这个电子邮件语料库上识别命名实体(Named Entity, NE)。这些与我们现实世界中的日常生活息息相关,包括各种专有名词,如人、国家、产品、节日、公司、体育和宗教等。

最后,设想一个更加复杂的任务,识别邮件中提到的所有不同事件(生日、聚会、音乐会、课程、机票预订和将要召开的会议等)。一旦完成上述工作,你需要为它们“盖时间戳”并进行排序,即标识它们发生的时间、它们实际上是否发生。这类问题称为时间识别问题,是该领域最难的问题之一。

这些不同的任务将贯穿本节以便帮助我们清晰地区分标注开发周期中的不同步骤所涉及的内容。

1.4.1 现象建模

在MATTER开发循环中,第一步是“现象建模”(model the phenomenon)。但是,建模过程所包含的步骤变化范围很大,取决于你自己任务的特性。本节将介绍建模所涉及的方方面面,以及你如何知道你已经形成针对你的任务的相对精确的近似模型。

与创建模型相关联的参数有许多种,很难让不同群体的人就什么是模型达成一致。本节将务实地讨论许多建模方法,展示它们如何为我们提供创建标注数据集的基础。简言之,一个模型是对某些特定现象的抽象描述,它比所要建模的领域中的元素更抽象。为了便于讨论,定义一个包含术语词汇表T、术语之间关系R及其解释I的模型。因此,一个模型M可以视为一个三元组,即M=<T,R,I>。为更好地理解这一概念,让我们回顾之前所介绍的场景。对于垃圾邮件检测,可将它看作一个二元文本分类任务,需要一个最简单的包含两个类别(术语)(即垃圾和非垃圾)的模型,这些类别与整个电子邮件文档相关联。所以,我们的模型很简单:

T={文档类型,垃圾,非垃圾}

R={文档类型::=垃圾|非垃圾}

I={垃圾=“我们不想要的!”,非垃圾=“我们想要的!”}

每个文档本身标注为这些类别中的一个。这就是文档标注(document annotation),而且可能是最简单(且最粗粒度的)的标注。现在,当我们说模型仅仅包含类别(如体育、金融、新闻、社论、时尚等)的标签名时,就意味着不再涉及其他标注。但是,这并不意味着我们不会进一步观察这些文件的内容。例如,将一篇文档标注为类别A,这个文档实际上被视为一个含有大量特征的向量,该向量至少包含该文档中的单词。对同一个任务而言,一个更细粒度的标注可能会标识出文档中的具体单词或短语,并把它们与类别直接关联。第4章将回过来考察这一策略。本质上,对某一现象(任务)设计出好模型的目的在于,这是你开始设计将要在学习算法中使用的特征的地方。特征越好,机器学习算法的性能就会越好!

如前所述,准备一个带有命名实体标注的语料库需要一个比刚才讨论的垃圾邮件过滤器更复杂的模型。前一节曾经介绍了一个带有4种类别的本体,这里我们将它作为从文本中识别命名实体的模型的基础。该模型如下所示:

T={命名实体,组织名,人名,地名,时间}

R={命名实体::=组织名|人名|地名|时间}

I={组织名=“数据库中的组织名列表”,人名=“数据库中的人名列表”,地名=“国家、地理位置名称等”,时间=“日历中所有可能的日期”}

该模型必须更详细,因为实际上我们正在标注一段自然语言文本而不只是简单地标识文档(如电子邮件)为垃圾还是非垃圾。即在一篇文档内我们要识别出被提及的公司、演员、国家和日期。

最后,更复杂的识别文档中所有时间信息(temporal information)的任务将包含哪些内容呢?如下所示的问题:

会议什么时候开始?

约翰休假多久?

Jill升职是在她休产假之前还是之后?

我们不会针对该领域进行完整建模,只是想了解一下为理解这些问题而创建的标注特征,其最低要求是什么。首先,需要区分时间表示(“昨天”、“1月27日”、“星期一”),事件(“升职”、“开会”、“休假”)和时间关系(“之前”、“之后”、“期间”)。由于该模型比较复杂,所以让我们按领域分别叙述:

时间表示::=时间|日期|时间段|集合

时间:上午10:15,3点钟等

日期:星期一,2011年4月

时间段:30分钟,2年,4天

集合:每1小时,每隔1个月

事件:开会,休假,升职,休产假等

时间关系::=之前|之后|期间|等于|重叠|…

在后续章节中,当我们讨论初始模型对你尝试在已标注数据上进行训练的算法的性能产生的影响时,我们将重新回到这个问题。

警告: 在后续章节中,我们将发现实际上可能有多个模型适合描述同一个现象,每个模型都为我们提供了不同的视角。我们称之为现象的多模型标注(multimodel annotation)。多模型标注的一个常见情形涉及拥有领域专家知识(如生物医学知识)的标注者。要求这些标注者根据他们的知识和对某个具体领域的理解,识别文档中的具体实体、事件、属性或事实。基于这种标注,可以让非专业人员标注这些现象的结构化(句法)信息,从而能够获得领域专家知识而又不必强迫领域专家学习语言学理论。

一旦你有了对正在尝试解决问题或与任务相关现象的初始模型,事实上你就拥有了第一个可用于标注工作的标签规格说明(tag specification)。根据规格说明,你可以就如何在语料库中对模型中所定义的特征进行标注制定详细计划。这个计划就是标注指南(annotation guideline),我们将在下文中予以介绍。

1.4.2 按照规格说明进行标注

你对语言现象的建模已编码为规格说明文档,接下来就需要训练标注人员,采用对你有价值的标签对数据集进行标注。但是知易行难,实际工作中经常需要对建模和标注做多次迭代,如图1-11所示。这个过程称为MAMA(建模-标注-建模-标注)循环,或者MATTER循环的“牙牙学语”阶段。标注指南有助于引导标注人1员识别元素,然后当元素识别后将它们与适当的特征相关联。

在标注自然语言数据时,可能涉及两类标签:消耗型(consuming)和非消耗型(nonconsuming)。消耗型标签(consuming tag)指数据集中有实际内容与之相关联(即它消耗某些文本)的元数据标签;相反,非消耗型标签(nonconsuming tag)虽然被插入文件中,但实际上并没有任何文本与之关联。举个例子来说明两者的不同。假设我们要标注文本中的时间信息,即我们想要标注3种标签:时间(称为Timex标签)、时间关系(TempRels)和事件(Event)。在下面例子的第一个句子中,每个标签均直接表示为实际的文本。即它们都是消耗型标签(“升职”标注为Event,“之前”标注为TempRel,“夏天”标注为Timex)。但请注意,在第二个句子中,文本中没有显式的时间关系,虽然我们知道有类似“在”这种关系存在于其中。所以,我们实际上在语料库中插入了一个“在”,并赋之以TempRel标签,但是该标签标识为“非消耗型”标签。

约翰[暑期]Timex[之前]TempRel被[提职]Event。

约翰[星期一]Timex被[提职]Event。

当然,在建立文本标注语料库时一个重要的因素是确保标注人员在使用不同标签进行标注时标注方式应保持一致。一个看起来微不足道的问题在对比标注结果时就会显现出来,即范围或标签跨度。请对比下面3个标注。在第一个标注中,Organization(组织)标签跨越“QBC制造”,漏掉公司标识 “公司”和地理位置“东英格兰”,而这些包含在接下来的两个标注的标注跨度中。

东英格兰[QBC制造]Organization公司

东英格兰[QBC制造公司] Organization

[东英格兰QBC制造公司] Organization

对标注人员而言,这3种标注好像都是对的,但事实上在标注指南中只有一个是正确的。应该如何比较和解决这一问题呢?

 

 

图1-11:MATTER循环中MAMA部分的内在工作流程

注意: 为了评价对一个标注任务的定义,我们使用标注人员间标注一致性(Inter-Annotator Agreement, IAA)得分来显示标注人员之间的标注差异。若IAA得分较高,说明任务定义得比较好,而且其他标注人员可以继续进行类似的标注工作。通常使用称为Kappa 统计(Kappa Statistic)的统计度量方法来定义这种标注差异。若在两个标注人员之间进行比较,则通常使用Cohen Kappa;当在多个标注人员间进行比较时,则一般使用Fleiss  Kappa。我们将在第8章给出其定义。

注意,IAA得分高并不必然意味着标注结果是正确的;它只能简单地表明标注人员以相同的方式解释了你的指令。即使IAA得分很高,标注任务也仍然可能需要修改。第9章将继续讨论这个问题。

一旦至少两个人(越多越好,但要求更多的人员通常不可行)对你的语料库进行了标注,就到了创建黄金标准语料库(gold standard corpus)的时候了。黄金标准是标注数据的最终版本。它使用你在标注过程中创建的最新规格说明,根据最新指南正确地完成每一项标注。它也是你将要用于机器学习的语料库,而且它应该已经经过了审核(adjudication)环节的处理。在审核环节中,你(或与你一样对所有任务都很熟悉的人)比对标注结果并决定哪个标签是正确的,然后将它放入黄金标准语料库中。

1.4.3 在语料库上训练和测试算法

既然已经完成了对语料库的审核,接下来可以使用刚刚创建的黄金标准语料库进行机器学习。最常见的做法是把语料库分为两部分:开发语料库(development corpus)和测试语料库(test corpus)。开发语料库又进一步分为两个部分:训练集(training set)和开发-测试集(development-test set)。尽管不同任务的划分比例不相同,但图1-12给出了一种标准的划分方式。文件通常随机地分配到这些集合中。

 

 

图1-12:机器学习的语料库划分

训练集用于训练任务中使用的算法,开发-测试集(dev-test)用于错误分析。一旦算法训练结束,它就可以在开发-测试集上运行。如果算法没有正确地对语料库进行标注,就会产生一系列错误。发现错误后,可以调整并重新训练算法,然后再在开发-测试集上测试。不停地重复上述过程直到获得满意的结果。

训练完成后,算法将在预留的测试语料上运行,这些语料库在训练和开发测试中从未使用过。通过使用预留的数据,我们可以知道算法在新数据上的表现,这也是我们对在其他人创建的数据上运行我们算法的期望。图1-13显示了MATTER循环中的“TTER”部分,使用不同的语料库划分和步骤。

 

图1-13:训练-评价循环

1.4.4 对结果进行评价

 最常用的性能评价方法是计算数据集上标签标注结果的准确率,可使用一个标准的“相关性判断”技术来计算标注正确的数据相对于所有标注数据的比例。该技术称为准确率(precision)和召回率(recall)度量。

接下来介绍它是如何工作的。任给一个用于标识数据元素的标签,可以将数据集合划分为两个子集:一个标注为“相关的”,而另一个标注为“不相关的”。准确率可以计算为算法标注为相关的子集中的正确样本的比例。召回率则可以计算为在实际相关的子集中正确标注的样本的比例。下面给出的混淆矩阵(confusion matrix)可有助于解释这一计算过程:                            

       预测结果    标注结果

                                    正例                     负例

黄金标准 正例(positive) 真正的正例(tp)       错误的负例(fn)

标注结果 负例(negative) 错误的正例(fp)        真正的负例(tn)

有了这个矩阵,我们就能定义准确率和召回率,以及传统定义上的准确率(accuracy),如图1-14所示。

 

图1-14:准确率和召回率公式

P和R的值经常被合并成一个单一标准,称为F-measure,它是P和R两者的调和平均。

 

F值在假定准确率和召回率同等重要的前提下给出了一个整体评价结果,但实际使用时取决于语料库和算法的目标。该评价方法的一个变化要点在于,在有些情况下可以认为准确率比召回率更重要,而另一些情况下则反之。第8章将会详细讨论这些公式。

1.4.5 修改模型和算法

在数据上对算法的训练和测试结果进行评价,你还需要对测试结果进行错误分析,判断算法在哪些地方效果良好、在哪些地方表现不佳。第8章将讨论完成这些工作的各种程序包或者公式,包括创建混淆矩阵。这些工作可以帮助你回溯到模型设计阶段,目的是建立更好的标签和特征以便改善之后的黄金标准数据,进而改善学习算法的性能。

在此给出一个简单的模型修改示例。回忆前一节中提到的命名实体抽取模型,我们区分了4种不同类型的实体:组织名、地名、时间和人名。根据你采集的语料库,你可能忽略了一个大的类别或者还应该在某个现有标签下添加一些子类标签。比如,你可能发现标注人员很难区分一些时间或事件,如复活节、9·11或感恩节。这些实体不是简单地表示时间,也许你应该在模型中增加一个新的类别:事件。此外,还有一种情况有必要区分地理地名和非地理地名。伴随“建模-标注”和“训练-测试”循环,一旦在模型上进行了这些增加和修改,MATTER循环将从头开始重来一遍,这种修正通常会带来性能的提升。

总结

本章对语料库和计算语言学的历史以及建立标注语料库的总体方法进行了概述。具体地,包括以下几点:

自然语言标注是训练计算机进行自动问答、机器翻译和自动摘要等人类语言理解任务过程中的重要一步。

从语音到语义再到篇章分析的语言学研究的所有层次,在不同的机器学习任务中以不同的方式组合起来。

为了使标注工作能够提供统计意义上有用的结果,必须对足够大的数据集进行标注,这个数据集称为语料库。使用语料库对语言进行的研究称为语料库语言学。

语料库语言学始于20世纪40年代,但直到数十年之后,当技术能够满足理论上的要求时,才真正成为研究语言的可行方法。

语料库是人类自然语言表示的机器可读文本的集合。好的语料库对它试图代表的语言或题材具有代表性和平衡性。

计算机语料库技术已经发展了许多年,从简单的上下文关键词索引(KWIC)和允许全文本文档检索的对齐到基于统计的机器学习技术。

标注是将更高层次信息充实到语料库的过程,这些信息包括词性标注、句法标注、指代消解和词义标注。通过在语料库中添加这些信息,使计算机可找到合适的特征,从而使已定义任务可以被更容易和更精确地处理。

一旦完成语料库标注,就可以使用机器学习算法进行分类、聚类和模式归纳等任务。

对于依赖于纯文本之外的标注数据的机器学习,好的标注方案和准确的标注非常关键。开发标注语料库常常是一个循环过程,随着对数据的深入分析可能需要对标签集和任务进行多次修改。

标注开发循环称为MATTER循环——建模、标注、训练、测试、评价和修改。

在进入测试循环之前,标注方案(annotation scheme)很可能已经经历了多次建模和标注阶段的修改。

本书将告诉你如何为已选择的任务创建一个正确而有效的标注方案,将该方案应用于你的语料库,然后使用机器学习技术训练计算机来执行你设计的任务。

 

相关文章
|
24天前
|
机器学习/深度学习 数据采集 监控
大模型开发:描述一个典型的机器学习项目流程。
机器学习项目涉及问题定义、数据收集、预处理、特征工程、模型选择、训练、评估、优化、部署和监控。每个阶段都是确保模型有效可靠的关键,需要细致操作。
16 0
|
24天前
|
机器学习/深度学习
大模型开发:解释正则化及其在机器学习中的作用。
正则化是防止机器学习过拟合的技术,通过限制模型参数和控制复杂度避免过拟合。它包含L1和L2正则化,前者产生稀疏解,后者适度缩小参数。选择合适的正则化方法和强度对模型性能关键,常用交叉验证评估。
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
【机器学习】Transformer:自然语言处理的巅峰之作
【机器学习】Transformer:自然语言处理的巅峰之作
88 0
|
1月前
|
机器学习/深度学习 自然语言处理 算法
探索机器学习中的自然语言处理技术
【2月更文挑战第16天】 在数字化和智能化的浪潮中,自然语言处理(NLP)技术已成为连接人类与机器沟通的重要桥梁。本文深入探讨了机器学习在自然语言处理中的应用,包括最新的模型架构、算法优化技巧及实际场景中的挑战和解决方案。通过逻辑严密的分析,我们将揭示如何有效利用机器学习提升NLP系统的性能,同时对未来发展趋势进行预测。
23 0
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【2月更文挑战第31天】 随着人工智能的飞速发展,自然语言处理(NLP)技术在机器学习领域扮演着越来越重要的角色。本文旨在深入探讨NLP的关键技术,包括语言模型、词嵌入和深度学习方法,并分析这些技术如何相互协作,以实现更高效的文本分析和理解。通过案例研究和最新研究成果的介绍,我们展示了NLP在实际应用中的强大潜力,以及它如何推动人机交互和信息检索系统的革新。
18 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
【机器学习】“注目未来:自注意力机制的巧妙设计引领自然语言处理新潮流“
【机器学习】“注目未来:自注意力机制的巧妙设计引领自然语言处理新潮流“
36 0
|
1月前
|
机器学习/深度学习 自然语言处理 算法
在NLP中,什么是词性标注?
【2月更文挑战第13天】【2月更文挑战第37篇】在NLP中,什么是词性标注?
|
2月前
|
人工智能 自然语言处理 机器人
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
如今,大模型层出不穷,这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。 但不能不承认的是,普通人使用大模型还是有一定门槛的,首先大模型通常需要大量的计算资源才能进行训练和推理。这包括高性能的图形处理单元(GPU)或者专用的张量处理单元(TPU),以及大内存和高速存储器。说白了,本地没N卡,就断了玩大模型的念想吧。 其次,大模型的性能往往受到模型调优和微调的影响。这需要对模型的超参数进行调整和优化,以适应特定任务或数据集。对大模型的调优需要一定的经验和专业知识,包括对深度学
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
|
7月前
|
机器学习/深度学习 数据采集 存储
开发机器学习应用程序的步骤
开发机器学习应用程序的步骤
78 0
|
3月前
|
人工智能
全方位解析PAI:数据准备、模型开发、模型训练一网打尽
全方位解析PAI:数据准备、模型开发、模型训练一网打尽 随着人工智能技术的飞速发展,越来越多的企业开始关注并投入到AI的研发中。然而,AI的研发并非易事,从数据准备、模型开发、模型训练到模型服务,每一个环节都需要专业的工具和平台来支持。阿里云的PAI(Powered by AI)正是一个涵盖了数据准备、模型开发、模型训练、模型服务全流程的AI工作平台。本文将为您详细介绍PAI的各个子产品的产品线上规格及使用指引。
39 2

热门文章

最新文章