【论文笔记】用于事件抽取与生成的预训练语言模型
本文通过构建按照角色进行分类的事件抽取模型来解决事件抽取中的角色重叠问题,模型中考虑了角色的重要性。此外,提出了一种对自动生成的样本数据进行评分,进而生成标注数据的方法。
论文原文的地址:https://www.aclweb.org/anthology/P19-1522.pdf
1.介绍
事件抽取的目标是识别事件触发词和事件论元。下图给出了包含一个“Meet”类型事件的句子,该事件的事件触发词为“meeting”,两个论元分别为“President Bush”以及“several Arab leaders”。
事件抽取举例.png
事件抽取中主要有两个需要解决:
- 角色重叠问题:某些角色在事件中出现地非常频繁,以至于它们与某些词相互重叠,甚至是共享相同的论元。比如“The explosion killed the bomber and three shoppers”这句话中,“killed”这个词出发了一个“袭击”事件,“the bomber”在扮演袭击者的同时,也扮演了受害者。
- 缺少数据。多数的事件抽取模型都是依赖于标注数据的监督模型,而人工标注数据的代价又是很大的。尽管很多研究人员采用诸如事件生成、远监督的方法来解决这一问题,但是生成的数据在质量上和数量上都严重依赖于数据源。
本文提出了一个基于预训练语言模型的框架,该框架包含了一个作为基线系统的事件抽取模型和一个有标注的事件生成方法。本文提出的模型由触发词抽取器和论元抽取器组成,其中论元抽取器利用触发词抽取器的结果进行推断。另外,本文提出了根据论元的重要性来对损失函数重新赋权的方法来提升论元抽取器的效果。
预训练语言模型也被应用于生成标注数据。本文利用现有的事件生成模型进行时间生成,通过对生成样本进行打分来提升生成样本的质量。将生成的样本与现有数据进行合并进一步提升了事件抽取器的表现。
2.模型
本文提出的模型结构如下图所示:
模型结构图.png
2.1 触发词抽取器
触发词抽取器的目标是预测一个单词能否出发一个事件。因而本文将触发词的抽取作为一个单词级的分类任务,只是利用BERT构建一个做分类器来作为触发词抽取器。模型的输入只有一句话,而且[CLS]
和[SEP]
分别被加到了句子的开头和结尾。
在很多例子中,事件的触发词是短语,因而,本文将具有相同预测标签的连续的多个单词看作一个触发词。本文利用交叉熵作为损失函数来进行模型的微调。
2.2 论元抽取器
论元抽取器的目标是根据事件触发词,抽取相关的论元以及论元所扮演的全部的角色。相对于触发词的抽取来说,论元的抽取更加复杂,主要有三个原因
- 论元依赖于触发词;
- 多数的论元都是比较长的名词短语;
- 角色重叠的问题。
为了解决后两个问题,本文添加了多组基于BERT的二分类器。每个分类器都用来判断一个角色的范围,也就是有哪些论元属于这一角色。
2.3 论元跨度的判定
本文用二分类器来判断一个词是否是一个论元的开头或者结尾,其中所判定的单词采用BERT embedding来表示。
2.4 损失函数重新赋权
本文首先计算识别论元开头的二分类器的交叉熵损失函数Ls的初始值和用于识别论元结尾的二分类器的交叉熵损失函数Le的初始值,然后将它们的平均值作为论元抽取器的损失的初始值。
考虑到不同类型的论元角色出现的频率不同,因而计算出角色频率RF和逆事件的发生频率IEF,并根据这两个值计算出某一角色在一个事件中的重要性。并将这个重要性运用到Ls和Le的计算中。
3.训练数据的生成
数据生成的流程图如下图所示。
数据生成的流程图.png
4.实验
本文采用ACE2005数据集作为实验数据,实验结果如下图所示:
实验结果.png
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://ywsun.site/articles/11.html