【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

论文题目:Exploring Pre-trained Language Models for Event Extraction and Generation

论文来源:ACL 2019 国防科技大学

论文链接:https://www.aclweb.org/anthology/P19-1522/

关键词:事件抽取,预训练语言模型,事件生成,角色重叠,训练数据不足



1 摘要

传统的事件抽取(EE)方法通常依赖于人为标注的数据,耗时耗力,而且标注的数据量不会很大。不充足的数据阻碍了模型的学习。

本文首先提出了一个EE模型——PLMEE,通过将元素(argument)预测按照角色进行分离来克服角色重叠问题

为了解决训练数据不足的问题,提出了一种通过edit prototypes的方法来自动生成标注数据,并按照数据的质量进行排序,对生成的样本进行筛选。

ACE 2005数据集上进行了实验,结果显示本文的EE模型超越了绝大多数现有的方法,并且使用本文的生成模型可以进一步提升效果。最终实现了EE任务的state-of-the-art。


2 引言

EE任务的目的是识别出事件触发器和元素。如图1所示。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

EE任务的两个挑战

(1)同一类型的事件,不同角色的概率分布差异很大,如图2所示。

还有角色重叠问题(the roles overlap problem),例如,在句子 “The explosion killed the bomber and three shoppers” 中,"killed"是Attack类型事件的触发词,元素 “the bomber” 既扮演了 “Attacker” 的角色,也是 “Vitctim”。

ACE 2005数据集中大约有10%的事件有角色重叠问题。尽管如此,角色重叠问题并没有引起学者们的重视。绝大多数现有的模型,在进行分类时如果成功预测出了元素对应的多个角色中的一个,就人为分类正确。

因此,作者提出了有效的机制来解决这个问题,并在实验中采取了更严格的评估准则。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

2绝大多数现有的方法都是有监督学习,需要大量的标注数据用于训练。但是标注数据非常耗费人力,所以现有的数据集都不是很大,这也就限制了模型的能力。

为了解决这一问题,已经有一些相关研究:采用事件生成方法来为训练生成事件数据;使用远程监督,利用外部语料库进行标注。但是使用远程监督生成事件的质量和数量过度依赖于源数据。

实际上,也可以使用预训练语言模型生成句子,实现对外部语料库的利用。作者使用了预训练语言模型,利用大规模语料库的知识,实现事件生成。


本文提出的基于预训练语言模型的方法包括2个模块:(1)事件抽取模型;(2)有标签的事件生成方法。

(1)EE模型

EE模型由触发器抽取器元素抽取器组成,其中元素抽取器利用的是触发器抽取器的结果进行推理。并且,作者使用基于角色重要性的损失函数,来提升元素抽取器的性能。

pipeline的方法,即先抽取出触发器,再抽取出元素。
JMEE是联合学习的方法,同时抽取出触发器和元素。
pipeline方法有可能导致误差传播(缺点)

(2)预训练语言模型

预训练语言模型(PLM)用于生成标注数据,有两个关键步骤:1)argument replacement ;2)adjunct token rewriting。

并对生成的样本进行评分选择出高质量的数据。将这些数据和现有的数据合并,可以增强事件抽取器的性能。


3 相关工作

(1)事件抽取 EE

分为两类:

  • 文档级别的EE
  • 句子级别的EE

本文研究的是句子级别的EE,又可分为两类:

  • 基于特征的方法
  • 基于神经网络的方法

(2)事件生成

使用外部数据库,例如Freebase, Frame-Net, WordNet,来生成事件,丰富训练数据。

许多事件生成的方法都基于远程监督的强假设:若两个实体在外部知识库中存在某种关系,则认为所有提及这两个实体的句子,句子中的这两个实体也存在这种关系。基于这种强假设,在无监督的语料上进行事件的标注。但实际上共现的实体不一定就会有这种关系。

此外,有学者使用抽象语义表示和语义分布来抽取事件。

还有学者对FramNet中的框架进行挖掘,得到额外的事件。

(3)预训练语言模型 PLM

ELMO, GPT, BERT


4 事件抽取模型

EE看成两个子任务:1)触发器抽取;2)元素抽取,并提出PLMEE模型,模型架构如图3所示。模型由触发器抽取器和元素抽取器两部分组成,两者均依赖于BERT学习到的特征表示。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

4.1 触发器的抽取

触发器抽取器的目的是预测出触发了事件的token,形式化为token级别的多类别分类任务,分类标签是事件类型。在BERT上添加一个多类分类器就构成了触发器抽取器。

触发器抽取器的输入和BERT的一样,是WordPiece嵌入位置嵌入segment嵌入的和。因为输入只有一个句子,所以所有的segment ids设为0。句子首尾的token分别是[CLS]和[SEP]。

触发词有时不是一个单词而是一个词组。因此,作者令连续的tokens共享同一个预测标签,作为一个完整的触发词。

采用交叉熵损失函数用于微调(fine-tune)。


4.2 元素的抽取

给定触发器的条件下,元素抽取器的目的是抽取出和触发器所对应事件相关的元素,以及这些元素扮演的角色。

和触发器抽取相比较,元素的抽取更加复杂,主要有3个原因:

  • 元素对触发器的依赖
  • 大多数元素是较长的名词短语
  • 角色重叠问题。

和触发器抽取器一样,元素抽取器也需要3种嵌入相加作为输入,但还需要知道哪些tokens组成了触发器,因此特征表示输入的segment将触发词所在的span设为1。

为了克服元素抽取面临的后2个问题,作者在BERT上添加了多组二类分类器(多组分类器设为所有角色标签的集合,对每个元素判断所有类型角色的概率)。每组分类器服务于一个角色,以确定所有属于它的元素的范围(span:每个span都包括start和end)。

这种方法类似于在SQuAD上的问答任务,只有一个答案是正确的,然而扮演同一角色的多个元素可能在一个事件中同时出现。

由于预测和角色是分离的,所以一个元素可以扮演多个角色(对一个元素使用一组二类分类器,一组二类分类器中有多个分类器,对应多个角色),一个token可以属于不同的元素。这就缓解了角色重叠问题


4.3 元素范围的界定 (Argument Span Determination)

在PLMEE模型中,一个token tt被预测为角色rr的元素的start的概率为:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

被预测为end的概率为:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

其中,下标"s"表示"start",下标"e"表示"end"。WsrW^r_s是二类分类器的权重,目的是检测出扮演角色rr的元素的starts,WerW^r_e是另一个二类分类器的权重,目的是检测出ends。B\mathcal{B}是BERT嵌入。

对于每个角色rr,我们可以根据PsrP^r_sPerP^r_e得到两个元素值为0或1的列表:Bsr,BerB^r_s, B^r_e。它们分别表示句子中的token是否是扮演角色rr的元素的start或end。如下所示的算法1用于检测每个token,来决定扮演角色rr的所有元素的spans:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

算法1包含了一个有限状态机,根据Bsr,BerB^r_s, B^r_e从一个状态转移到另一个状态。

一共有3种状态:(1)既没有检测出start,也没有检测出end;(2)只检测出了start;(3)既检测到了start,也检测到了end。

状态转换的规则如下:(1)当前token为start时,状态1转移到状态2;(2)当前token为end时,状态2转移到状态3;(3)当前token是一个new start时,状态3转移到状态2。

注意,当出现多个start/end时,选择概率更大的那一个。


4.4 损失权重重置(Loss Re-weighting)

将所有二分类器检测元素start的损失函数记为Ls\mathcal{L}_s,检测end的损失函数记为Le\mathcal{L}_e。CE表示交叉熵,R\mathcal{R}是角色集合,S\mathcal{S}是输入的句子。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation
【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

Ls\mathcal{L}_sLe\mathcal{L}_e取均值作为元素抽取器最终的损失L\mathcal{L}

但是,如图2所示,不同角色的出现频率有着很大的不同,这就意味着不同的角色在事件中的“重要性”不同。(这里的“重要性”指的是根据该角色判断出特定类型事件的能力)。例如,"Victim"比起"Time"更能推断出Die类型的事件。

因此,我们不采用直接对Ls\mathcal{L}_sLe\mathcal{L}_e求平均的方法来确定损失函数,而是根据角色的“重要性”对Ls\mathcal{L}_sLe\mathcal{L}_e的权重进行重置。并使用RF、IEF两个度量(类似于TF-IDF),计算角色的“重要性”

(1)Role Frequency (RF)

RF定义为角色rr在类型为vv的事件中出现的频率:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

(2)Inverse Event Frequency (IEF)

log内的分母表示有多少类型的事件有角色rr

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

RF(r,v)RF(r, v)IEF(r)IEF(r)相乘得到RFIEF(r,v)RF-IEF(r, v),使用RF-IEF度量角色rr对于vv类型事件的重要性:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

给定输入的事件类型vv,根据每个角色对于vv类型事件的重要性,计算损失Ls\mathcal{L}_sLe\mathcal{L}_e将两者取平均就得到最终的损失

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

5 训练数据的生成

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

作者提出基于预训练语言模型的的事件生成方法,如图4所示,由3步组成:预处理、事件生成、对事件打分

定义adjunct tokens为句子中除去触发词和元素之外的tokens,不仅包括单词和数字,还包括标点符号。以图1中的句子为例,"is"和"going"就是adjunct tokens。

adjunct tokens可以调整表达的流畅性和多样性。因此,作者尝试重写它们以扩展生成结果的多样性,同时保持触发器和元素不变。


5.1 预处理

收集ACE2005数据集中的元素和它们对应的角色,但是不考虑有角色重叠问题的元素,因为这些元素通常是较长的短语且包括大量的无关信息,将它们纳入考虑可能会带来不必要的错误。

在接下来的步骤中,采用BERT作为目标模型来重写adjunct tokens,并使用BERT的masked语言模型任务在ACE2005数据集上进行微调。


5.2 事件生成

由两步组成:首先,将原型(prototype)中的元素替换为扮演相同角色的相似元素;然后,使用微调后的BERT重写adjunct tokens

(1)元素替换

将具有相同角色标签的元素进行替换。替换后标签没有发生变化,仍可以使用原始的标签进行样本生成。

使用余弦相似性作为选择新元素的度量,有以下两点考虑:1)两个有相同角色标签的元素在语义上可能很不同;2)元素对应的角色在很大程度上取决于它的上下文。因此,选取语义相似并且上下文连贯的新元素替换原有元素。

使用可以解决OOV(out of vocabulary)问题的ELMO模型,生成元素的嵌入。其中aa表示元素,E\mathcal{E}表示ELMO生成的嵌入。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

选取top 10个最相似的参数作为候选,然后使用softmax计算出概率,取概率最高的作为替换元素。

(2)重写adjunct tokens

参数替换的结果已经可以看成是数据生成了,但是固定的上下文可能会增加过拟合的风险。因此,为了平滑数据并扩展其多样性,作者使用微调后的BERT进行adjunct tokens的重写。

重写意味着使用更适合当前上下文的tokens,替换原型中的一些adjunct tokens。可看成是完形填空任务(Cloze task),一些adjunct tokens被mask了,需要使用BERT基于上下文预测出来被mask的部分。

需要重写的adjunct tokens的比率为mm图4mm设为了1.0,也就是mask了所有的adjunct tokens。可以看出尽管mm为1.0,还是有一些adjunct tokens保留了下来。


5.3 对事件打分

使用打分函数衡量生成事件的价值,选择出更有价值的生成事件。主要考虑两个因素:1)困惑度(perplexity ,反映了生成数据的合理性);2)距离(评估生成数据和原有数据集间的距离)。

(1)困惑度(Perplexity, PPL)

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

AA表示在句子S\mathcal{S}^{'}中已被重写的adjunct tokens。

(2)距离(Distance, DIS)

使用余弦相似性:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

句子S\mathcal{S}^{'}的嵌入由BERT生成,使用第一个token [CLS]的嵌入作为整个句子的嵌入。


高质量的生成数据应该有较低的PPL和较高的DIS,打分函数定义如下。选取出高质量的生成样本用于实验。

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

6 实验

数据集:ACE2005

评估标准

  • 触发器预测正确:span和type和真实值一致;
  • 元素预测正确:span和所有角色标签都预测正确。

实验结果

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

事件生成例子:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

使用生成的事件和ACE2005用于训练,在测试集上的结果如下:

【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

7 总结

本文解决的是EE问题,提出PLMEE模型,模型由事件抽取模型生成模型两部分组成,这两个模块都使用到了预训练语言模型来引入更丰富的知识。

针对角色重叠问题,本文的抽取方法根据角色分离了元素预测,针对每个元素使用一组二分类器,预测元素的角色标签。并根据不同角色对该类型事件的重要性,对损失函数的权重进行了重分配。

针对训练数据有限、人工标注耗时耗力的问题,本文提出了一个事件生成方法,通过元素替换和重写adjunct tokens生成新的事件样本,并使用一个打分函数对样本进行评分,选取高质量的样本作为训练数据的补充。

实验证明了该事件生成模型的有效性,将事件生成模型和事件抽取模型相结合可以增强事件抽取模型的性能。

PLMEE模型的局限性

(1)同一类型的事件通常具有相似性,并且共现的角色通常有很强的关联,但是PLMEE模型忽略了这些特征。

(2)尽管生成模型中使用了评分函数对生成的样本进行筛选,但仍面临着和远程监督方法一样的角色偏离问题。(因为adjunct tokens重写之后语义可能会发生很大的变化)

未来工作

事件间的关联元素间的关联纳入考虑,并合并到预训练语言模型中;使用更有效的度量方法,克服生成模型的角色偏离问题。


本文的亮点在于引入了预训练语言模型BERT作为输入的词嵌入(触发器抽取模块和元素抽取模块)。在事件生成模块中有两处使用到了预训练语言模型:1)元素替换使用到了ELMO生成的嵌入;2)adjunct tokens重写使用了BERT中的masked语言模型任务。

附“BERT模型理解”的博客,方便回顾:https://www.jianshu.com/p/4cb1f255cd7c

另外,在元素抽取器模块中预测参数的角色标签时,对多个角色标签都进行了计算,解决了角色重叠问题。以往的方法只要预测出元素对应多个角色中的一个就认为预测正确,而本文的评估标准是需要正确预测出元素对应的所有角色标签才算预测正确。

损失函数在元素抽取器模块之后,作者提出了基于RF-IEF的度量方法,根据不同角色对某一类型的事件的重要程度,对损失的权重进行重分配。

需要注意的是本文的EE模型,是先对触发器进行抽取,然后对元素进行抽取,得到元素对应的角色标签。这是一个pipeline的学习过程,损失函数在元素抽取器之后,没有直接对触发器抽取进行优化,可能会出现误差传播问题。

另外,正如作者所说,触发器抽取模块和元素抽取模块,直接利用BERT生成的嵌入表示,没有考虑不同触发器间的关联以及不同元素间的关联。生成模块由于重写adjunct tokens可能会改变原句的语义,因此面临着角色偏离问题。

相关文章: