Press "Enter" to skip to content

事件抽取新范式

今天刷到了一篇事件抽取的论文,方法比较新颖,将事件抽取任务描述为一个问答(QA)任务,以端到端的方式抽取事件,该论文目前发表在EMNLP2020的主会上。

 

论文:《Event Extraction by Answering (Almost) Natural Questions》

 

地址:https://github.com/xinyadu/eeqa/

 

1.研究背景与动机

 

事件抽取的问题 主要是发现句子或篇段中的触发词并抽取其相应的论元 。现有的事件论元抽取工作主要依赖预先识别出的实体,会出现错误传播问题。为了避免上述问题,本文引入了一种新的事件抽取范式,该范式将事件抽取转化为 问答任务 ,端到端的抽取事件论元。实验表明,该方法优于现有的方法。另外,该方法能够抽取在训练阶段未见到的事件论元。

 

事件抽取是信息抽取(IE)中一项具有挑战性的任务。目的是 从非结构化的文本中抽取结构化信息 –“正在发生的事情”以及涉及到的人/物。下图列举了ACE2005语料库中的一个示例。

 

 

它描述了所有权转移事件(事件类型),该事件在句子中由单词”sale”触发,并附带其抽取的论元-文本表示填充一组(语义)角色的实体与事件类型相关联。

 

文中指出以往事件抽取研究工作的缺陷:

 

 

过于依赖实体。以前的事件论元需要先识别出实体,然后在训练模型,根据语义将论元分配到不同的实体。

 

忽略了不同论元角色之间的语义相似性。例如,在ACE2005数据集中,conflict->attack和justice-execute事件中的论元角色均指某人被袭击了,有着相同的论元角色target和person。论文指出,如果不考虑论元之间的相似性会给模型的识别效果造成影响,尤其是对少样本数据而言。

 

 

针对上述问题,文章做了如下贡献:

 

 

提出了一种新的范式—-将其表述为 问答(QA)/机器阅读理解(MRC)任务 。通用框架图如下图所示。

设计了用于 触发词探测的问题模板 和用于 抽取论元角色的问题模板

 

将事件抽取当作QA任务处理克服了现有方法的不足之处,具有许多优势

 

 

该方法不需要标注实体,具体来说,采用端到端模型进行事件论元抽取,不需要实体识别的任何步骤。

 

问答范式能够学习不同模型中语义相似的论元角色进行抽取事件论元。

 

本文框架能够抽取未知角色的事件论元(zero-shot)。

 

 

 

2.方法论

 

如何设计问答模板

 

给定输入语句,我们使用触发词将问题模板进行实例化,获取用于触发词探测的QA模型的输入序列。在获得抽取的输入语句的触发词及其类型后,对预测的事件类型的每个论元角色进行实例化。然后,将实例化的输入序列送入到另一个QA模型中进行论元抽取。最后,将动态阈值应用于所抽取的候选论元。并且保留顶部论元。两个模型输入序列共享相似的格式:

 

【CLS】 question 【SEP】sentence 【SEP】

 

针对触发词抽取,本文设计四种固定模板:”what is the trigger””,”trigger” ,”action”和“verb”。举个例子,如果使用“action”模板,模型的输入如下:

 

【CLS】 action 【SEP】As part of the 11-billion-dollar sale … 【SEP】

 

对于论元抽取,本文设计了三种模板,分别具有论元角色名称,基于本论元的问题和基于标注准则的问题。

 

模板1(论元角色名称)此模板使用论元角色名称(如artifact,agent,place)

 

模板2(类型+角色)首先确定论元角色的类型,而不是直接使用论元角色名称作为问题。基于论元基本类型信息,提出与论元相关的问题,形式如下:

WH_word is the role name ?

这样,与模板1问题相比,模板2添加了更多的语义信息。

 

模板3(基于标注准则的问题),为了使问题更加自然,以及更具语义信息,我们利用ACE事件标注准则中每个论元角色的描述来设计自然问题。

 

最后,为了对触发词信息进行编码,我们在问题的末尾 添加”in [trigger]” 。例如,包含触发词信息的模板2问题如下:

WH_word is the argument in trigger?

 

 

为了更好地理解策略,上图表中以MOVEMENT.TRANSPORT事件为例,展示三种不同模板的提问方式。我们看到,与简单模板“类型+角色”相比,基于标注准则提问的策略更加自然,并且编码了更多关于给定论元角色的语义信息。

 

问答模型

 

我们使用BERT作为基础模型,从 BERT_QA_Trigger 和 BERT_QA_ARG 的输入序列中获取上下文表示,论元在训练过程中进行更新。在使用问题模板实例化之后,序列的格式为[CLS]问题[SEP]句子[SEP]。然后,我们分别使用 BERTTr 和 BERTArg 获得用于触发词检测和论元抽取的每个token的上下文表示。

 

输出层不同:BERT_QA_Trigger预测句子中每个token的类型,而BERT_QA_Arg预测论元范围的开始和结束偏移量。

 

从模型结构来讲,论文比较简单, 但该文的价值体现在端到端的思路以及针对触发词抽取和论元抽取设定的问题模板。 既然是端到端模型,总损失当然是两部分损失之和。

 

在测试时,为了进行触发词检测,要获得每个token $e1,e2,…,e_N$的类型,我们只需要将argmax应用于Ptr。

 

使用动态阈值推测论元跨度,在测试期间,预测论元span更为负责:因为对于每个论元角色,可能要抽取多个span,也可能没有span。在输出层之后,我们具有每个token$ai\in(a_1,a_2,…a_M)$成为论元范围的开始$Ps(i)$和$Pe(i)$的概率。

 

我们通过以下算法,获取每个论元角色在句子中所有有效候选论元范围。过程如下:

 

 

枚举论元范围的所有可能的起始偏移量(start)和结束偏移量(end)组合;

 

消除不满足约束条件的跨度》:开始和结束标记必须在句子内,span的长度应短于长度约束,Ps(start)应大于[CLS]为起始标记的概率,Pe(end)应大于[CLS]为终止的概率;

 

计算候选论元span的相对无答案分数na_score,并将候选论元添加到列表中。

 

 

然后,我们利用算法在开发集上获得最佳评估结果的阈值。最后,我们将最佳阈值应用于测试集中的所有候选论元范围,并且保留na_score大于阈值的顶部论元。通过动态阈值确定每个角色要抽取的论元数量。

 

3.实验结果

 

 

上表中,我们比较了模型在触发词探测方面的性能。还实现了BERT微调基线,它的性能几乎与DYGIE++中的性能相同。另外具有触发词提问策略的BERT_QA_Trigger模型达到了与基线模型相当甚至更好的性能。

 

 

上表中显示了我们模型与基准系统在论元抽取方面的对比。论元抽取的性能直接受到触发词检测的影响。因为论元抽取的正确性是在保证触发词识别和分类正确的情况下进行的。发现我们论元抽取模型在基于标注准则的提问策略下,没有使用任何实体信息,要优于先前的研究。论元识别的F1值(正确偏移量)到论元识别+分类的下降仅为1%左右,而对于依赖识别和论元抽取多步骤过程的先前模型差距约为3%。这再次证明了阅读理解作为新范式的优点。

 

为了证明本文提出的模型对未见角色的提取能力,我们进行了另外一个实验,保留了训练集中80%的论元角色(16个),20%(6个角色)仅在测试时才知道。具体地,未知角色是”Vehicle, Artifact, Target, Victim, Recipient,Buyer”。下表给出了测试结果。

 

 

Random NE 是我们在句子中随机选择实体作为论元的基线,它的性能接近25%。像GAIL这样的早期模型不能处理未知论元角色。使用本文提出的框架,随着我们在问题中利用更多的语义信息和符合自然语言的特点,精确率和召回率都大大提高了。

 

另外,本文还证明对于触发词使用不同的问题模板,性能之间没有实质性的差距。发现使用”Verb”作为问题,(可能是由于大部分触发词都是动词造成的),BERT_QA_Trigger模型获得了最佳性能, F1值为72.39%。

 

针对论元抽取的模板设置,发现在问题后面添加 “in [Trigger] “可以持续改善性能,实验结果也表明使用模板3的提问策略能够得到最佳的实验性能,这是由于模板3为模型提供了准确的先验知识。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注