自然语言处理-事件抽取

论文笔记 | 用于事件抽取与生成的预训练语言模型

2019-11-21  本文已影响0人  鲜芋牛奶西米爱solo

本文主要复述论文["Exploring Pre-trained Language Models for Event Extraction and Generation"] 的内容,以便自我回顾,也希望可以给大噶带来帮助~

摘要

这篇文章研究事件抽取的角度是从有标签的训练数据描述的,以往的EE任务依赖于人工标注数据,而不充分的训练数据会影响模型的效果。文章采用了一个预训练语言模型来提取事件触发词,通过角色预测分离方法来处理角色抽取任务中的角色重叠问题,并利用Bert模型的Masked LM来自动生成标签数据。该模型在ACE05数据集上的表现,事件抽取任务上达到了81.1%的F1值,角色抽取任务上达到了58.9%的F1值。

介绍

角色重叠问题

ACE05数据集上10%的事件有角色重叠问题,例句The explosion killed the bomber and three shopperskilled触发事件Attack,元素the bomber既可以触发角色Attacker,又有角色Victim。之前的工作中会将该元素第一次被预测到的角色类型判定为分类好的角色标签,而没有考虑该角色在多个角色类型中的概率。

标签数据不足问题

监督学习下的事件抽取依赖于大量人工标注的数据集,而ACE数据集当中给出的事件标签数量有限。为了解决这一问题,之前也有工作通过远程监督的方法来生成事件类型标签扩充训练集,但这一方法也是依赖于源数据集的数量与质量。

解决方法

论文提出了预训练语言模型,利用从语料库中获得的知识来进行事件生成。预训练语言模型包括事件抽取模型与角色抽取模型,角色重叠问题通过计算角色类型与事件类型之间的关系,来重置角色分类的概率值。事件类型标签也是通过这个预训练语言模型实践,将原训练集作为样本,通过参数替换和辅助token重置这两步生成新的事件类型。

预训练语言模型

预训练语言模型(PLMEE)由触发词提取、角色提取两个阶段组成,二者的特征表示学习均在BERT模型上进行。整体模型框架由Figure3描述:
触发词提取

事件抽取部分是直接用Bert模型得到词向量表示,最后加个分类器完成触发词的提取。值得说明的是,这里每个token的输入由三部分组成:word embedding + segment + position,整个模型基于句子级别,这里的segments设为0。其他设定则与Bert保持一致。

元素提取

对于第一阶段提取到的触发词,这里会提取与其相关的成分的所有可能角色。作者总结的元素提取有三个难点:1.元素对触发词的依赖性;2.元素大多由长名词短语构成;3.角色重叠。模型框架设定与前一阶段相似,也是需要注意的一点:特征表示输入的segment将触发词所在的span设为1。
分类器则是设为所有角色标签的集合,即为对每个元素判断所有角色类型的概率,并在其分类器上设置一个二元组,用来判定该角色下的token的span,该跨度由(start, end)组成。通过对每种可能的角色标签进行计算,改善角色重叠问题。

角色span的判定

判定角色的span,也就是如何更准确得到每个token的(start, end)域值。首先,对于每一个tokent,经softmax分别计算在角色r下的起始点的概率P^rs(t)与结束点的概率P^re(t)

是经Bert得到的词表示,W则为各自的权重。依据两个得到每个token的起止状态,构成由二进制组成的序列。经过算法1计算出所有的span。
损失权重重置

论文中处理一个元素有多种角色时应该被分类的角色标签,依据了同一事件中每种角色出现的可能性会大不相同这一事实。因此文中给出了当前角色在一个事件中的重要性判定条件:RF-IEF(这一定义与词频的TF-IDF类似),。由这一指标可以得到角色r在事件类型v中的重要程度I(r, v)

作者也对这一论点进行了验证,由table1可知每种事件类型对应的角色标签数量只有少数。
将这一重要性程度的指标加入损失函数的计算当中,可以起到损失权重重置的作用,提高角色提取的准确率。
生成标签数据

生成新的标签是将原有数据集作为样本,通过模型学习到新的之前没有标签的词并加入到训练集中,以起到扩充语料的作用。这里是采用了Bert的Mask预训练方法,通过两个步骤:1.句中的元素替换为有相同角色标签的其他元素;2.利用Bert的fine-tune替换触发词的辅助token。这里需要注意的几点:
1.辅助token是原有样本数据集里未被识别成触发词或角色的token,除了词、数字,还可以包括标点。
2.元素替换是将具有相同角色标签的元素进行代换。因此需要预先统计所有的实体以及对应标签构成{arg : role}字典集,并且这个字典集不包括有角色重叠的元素。
3.这里的数据集扩充并非给没有标签的数据加上标签,而是保持触发词与角色的个数不变,通过辅助元素的替换将触发词与角色所在句子的成分做更改,获得同样有标签的句子,以达到数据集的扩充。

该图示范了对一个句子输入所进行的替换。

实验

PLMEE模型的结果:

写在最后

这篇论文比较有趣的一点是他统计了所有角色与事件类型之间的关系RF-IEF,虽然相较于以前的工作,这里会需要把多种不同标签都给计算一遍,但通过人为处理也是一个不错的选择。我认为理解这篇文章的难度在于需要掌握Bert的原理,由于我之前也没好好研究过这个,所以看起来也特别费劲,事实证明Bert是真的很优秀,这里的触发词识别与分类模块就将F1值提高了10个百分点。句子生成这块我觉得也是和Bert的Masked预训练原理结合的很巧妙,大多与Bert有关的我就没有描述了,这里贴一个Bert模型讲解,可以迅速上手~
还是新手,水平有限,若有错误还望不吝赐教~

上一篇下一篇

猜你喜欢

热点阅读