Press "Enter" to skip to content

乘风破浪的Seq2Seq模型:在事件抽取上的应用

 

©PaperWeekly 原创 · 作者 | 王增志

 

单位 | 南京理工大学硕士生

 

研究方向 | 情感分析与观点挖掘

 

 

引言

 

2020 年自然语言处理方向出现了很多令人印象深刻的工作, 其中就包括了这一系列 Seq2Seq 大规模预训练语言模型,比如 BART [1] ,T5 [2] 和 GPT-3 [3] ,直觉上这些生成模型一般会用于摘要和翻译这种典型的生成任务,2021年的很多工作开始尝试利用这些强大的生成模型来建模一些复杂的自然语言理解任务,比如命名实体识别,属性级情感分析和事件抽取任务等等。本文将会按照时间线简要对基于生成式方法的事件抽取相关的工作进行梳理。

 

事件抽取(Event Extraction, EE)是指从自然语言文本中抽取事件并识别事件类型和事件元素的技术。其任务目标是根据触发词识别句子中所有目标事件类型的事件,并根据论元角色集合抽取事件所对应的论元,这里的事件类型和论元都是预定义好的。举个例子,给定一个句子,事件抽取旨在识别出句子中包含的结构化事件。

 

Input: The man returned to Los Angeles from Mexico following his capture Tuesday by bounty hunters.

 

Output:

 

 

该任务分为如下几个子任务:

 

Trigger Identification:检测(抽取)句子中的事件的触发词,可以是一个词也可以是一个span;

 

Trigger Classification:判断抽取到的触发词对应的事件类型;

 

Argument Identification:检测(抽取)句子中的论元比如某种事件发生的时间,地点等;

 

Argument Classification:判断抽取到的论元对应的论元角色;

 

 

TANL

 

这是一篇来自 AWS 团队 ICLR 2021 的工作 [4] ,作者致力于研究结构预测任务(比如命名实体识别,实体关系抽取,语义角色标注,共指消解,事件抽取,对话状态追踪等)的多任务学习,之前的大多数方法都是针对具体的特定的任务进行建模,训练一个任务特定的判别器,但是这样的方法一方面结构不能被适配到其他类似的任务上,给迁移学习带来了困难,另一方面这种判别式的结构很难利用标签的语义知识。

 

基于此,作者提出了 TANL 模型(Translation between Augmented Natural Language),即给定输入,输出原有文本和对应的文本标注。如下图所示,输入文本,输出的文本在原文本的上做了 augmented,即加上了标注,图中的实体关系联合抽取任务,会在头实体上加上对应的实体类别,在尾实体上除了加上实体类型,还会加上关系,以及对应的头实体 span;语义角色标注任务,模型会标注出主语,谓语,时间地点等;共指消解任务,模型会标注出所有的第一个 mention,然后在后续出现的 mention 上标注对应的本体,最后对输出的文本进行解析,得到预测的结构。

 

 

下图是模型对事件抽取任务的建模示例,首先进行触发词的抽取,输出的句子会在触发词后面加上对应的事件类型,然后针对事件论元的抽取,输入会标注出触发词和对应的事件类型,然后输出时会在相关的 span 标注实体的类型,比如个人,时间等,还会标注出论元的类型,用“=”来对应触发词。

 

 

作者在 single-model-single-dataset,multi-dataset 和 multi-task 三种 setting 上进行了实验,实验结果显示模型在实体关系联合抽取,关系分类和语义角色标注达到了新的 SOTA,在其他的任务上取得了跟 SOTA 相比还可以的(comparable)实验结果。在事件抽取任务上的实验结果如下图所示:

 

 

整体来说该工作就是一个 unified 的框架可以建模多种常见的结构预测任务(这里可能会有一个问题,既然是结构预测问题,为什幺没有做依存句法解析这种经典的结构预测任务,作者在 OpenReview 上的回答是主要考虑对于标签语义知识进行建模,因此并没有在依存句法任务上进行实验),而且有助于迁移学习。其实早在的 EMNLP2020 上的一篇工作已经有了这样的做法来做序列标注和分类任务 [5] ,作者同样来自 AWS,而这篇 ICLR 可以看作一个扩展/进一步推广。后续这种方法也被在其他下游任务上,比如属性级情感分析 [6] 。

 

 

BART-Gen

 

这是一篇发表在 NAACL 2021 [7] 的工作,针对常见的句子级的任务存在信息不完整的问题,作者研究文档级的事件论元抽取任务,并将其建模为按照事件模板进行生成的形式。同时作者还提出了一个文档级的事件抽取 Benchmark: WIKIEVENTS,并且包含了完整的事件和共指标注。

 

模型如下图所示,整体的思路是用标记好触发词的文档和触发词对应的事件类型的预定义模板(用 < arg> 做为论元的占位符)拼到一起,送入 BART,然后按照模板生成对占位符进行填充,生成完整的模板句子。作者还对生成策略加上了约束,比如生成时的词表限制在输入的文本中。该模型不需要提前进行共指消极的预处理,而且能够轻易处理不完整的论元和相同的 role 存在多个论元的情况,不再需要像之前的 BERT-QA [8] 那种方法一样需要设置阈值,仅需一步就可以抽取出所有的论元。

 

 

上述只是提到了事件的论元抽取,但是模型的输入需要含有对触发词的标注,故此作者提出了一个基于关键词的触发词抽取方法(抽取触发词和对应的类型),不用于常见的全监督的 setting,这里只提供关键词级别的监督,即针对每个类别,提供几个描述该类别的词汇,作为监督信号,然后通过 BERT 获得关键词的平均词向量作为类别的表示,然后使用 BERT-CRF 模型和 IO 的标注方案,对 CRF 中的特征/发射分数和转移分数进行了一定的改动(毕竟没有完整的标注信息)。

 

此外作者还提出了一个新的更有挑战性的任务:文档级信息化的论元抽取任务,动机是考虑到文档的特殊性,希望模型能够捕捉到更加长距离的信息,具体来说作者定义名词比代词含有更多的信息,在 mention 的类型相同的条件下,选择最长的 mention(具备更多的信息)。在这个任务设定下,希望模型能够抽取具备更多信息的论元。(简而言之,希望能够对共指问题有一个很好的处理)。实验结果如下表所示:无论是在跨句的 RAMS 数据集上还是该论文提出的新的 WIKIEVENTS 数据集上,都是大幅超过了之前方法。

 

 

 

Text2Event

 

这是一篇发表在 ACL 2021 [9] 上的一个工作,之前的事件抽取的工作主要是将任务拆解成几个子任务分开来解决,在这个工作中作者提出模型 Text2Event,将事件抽取建模成 Seq2Seq 的形式,输入句子,输出结构化的事件。下面是一个输入输出的例子,输出的结构格式为 ((事件类型 触发词 (角色 论元)) …),然后对输出的文本进行解析就可以得到结构化的事件。

 

Input: The man returned to Los Angeles from Mexico following his capture Tuesday by bounty hunters.

 

Output: ((Transport returned, (Artifact The man), (Destination Los Angeles), (Origin Mexico)), (Arrest-Jail capture (Person The man), (Time Tuesday) (Agent bounty hunters))

 

为了避免模型的生成式自由随便地生成,作者还用 event schema 对解码做一个约束,使用基于字典树的解码算法。不同于常规的生成策略(每次生成 token 都是在全词表上做选择),基于字典树的解码算法会根据当前的状态对词表做剪枝,这里简单理解就是对生成的词表做约束,词表中的词除了来自于输入的 text,还来自于事件类型中的词,当然还有用于格式控制的'(‘ , ‘)’。

 

为了避免使用生成模型(T5)直接生成这种非自然的句子过于困难,作者使用课程学习的思路,先去训练做简单的子任务比如生成(type, trigger words)和(role, argument words)这种相对简单的格式,最后再去训练学习直接生成完整的事件抽取任务的句子格式。

 

整体实验结果如下图所示,相比之前的方法需要 token-level 的标注信息,Text2Event 只需要粗粒度的标注信息,即不需要定位到 token,只需给出完整的事件即可。可以发现,相比其他的方法,Text2Event 取得了相对有竞争力的性能。

 

 

消融实验的实验结果如下图所示,课程学习(CL)和约束解码策略(CD)尤其在低资源的情况下提升显着,生成的格式中将其中的事件类型和角色名字换成没有真实意义的符号(w/o ES)之后,性能有大幅下降,这也证明了生成含有真实意义的词更具备丰富的语义,可以更好的利用预训练模型。

 

 

 

TempGen

 

这是一篇发表在 EMNLP 2021 [10] 上的工作,虽然做的任务不是事件抽取,但是任务形式上跟事件抽取很像。该工作通过将文档级的角色填充的实体抽取(role-filler entity extraction (REE))和关系抽取任务转换成 seq2seq 的形式来解决在对文档级建模存在的实体间长程依赖问题。

 

任务形式如下图所示:针对 REE 任务,使用预先定义的模板,<SOT> 和 <EOT> 表示模板的开始和结束,<SOSN> 和 <EOSN> 表示 slot name 的开始和结束,<SOE> 和 <EOE> 表示实体的开始和结束;针对关系抽取任务,同样使用以上类似的模板。

 

 

实验结果如下图所示,可以发现 TempGen 在角色填充的实体抽取和二元,四元关系抽取任务上,均取得了最好的性能。

 

 

 

DEGREE

 

该工作 [11] 也是类似的做法,是采用生成式的方法利用 Prompt 去生成预定义的模板。这样做可以融入标签的知识,而且还是一种端到端的设计,模型能够捕捉到触发词与论元之间的依赖。模型如下图所示:整体的思路是给定模型 passage 和事件类型,然后将 passage 和对应的 prompt 拼接到一起,然后模型按照模板生成,最后从生成的模板中解析事件。

 

首先考虑事件检测任务(Event Detection),我们将给定的事件类型对应的描述和事件关键词,还有生成的事件检测的模板 ‘Event trigger is <Trigger>’ 以上内容作为 Prompt 跟 passage 拼接到一起,模型将会把 trigger 词填充后的模板输出出来。针对事件论元抽取任务,对应的 Prompt 是事件类型的描述,和第一步检测出来的触发词,还有针对论元抽取设计的模板,模型将会输出用 passage 中的词填充过的模板。以上是一种 Pipeline 的方法,Joint 的方法的就是将事件类型的描述,事件的关键词,还有针对端到端设计的生成模板(如下图最下方),最终按照模板生成。

 

在最开始的时候提到事件类型是给定的,实际上的做法是对所有的事件类型进行采样 m 个,然后枚举这 m 个事件类型,然后进行训练。其中 m 是超参。

 

 

实验结果如下表所示,在端到端的事件抽取任务上,DEGREE 虽然没有取得 SOTA 的性能,但是也是相对比较有竞争力。

 

 

在低资源的端到端事件抽取任务上的实验结果如下表所示,可以发现 DEGREE 在这种低资源的设定下更加有效,基本上超过了所有的 baseline,正如模型的名字那样:A Data-Efficient Generative Event Extraction Model.

 

 

 

PoKE

 

该工作 [12] 同样也是利用 Prompt 做事件抽取任务,之前的 Prompt 相关的工作大多基于简单的文本分类任务,对于事件抽取这样复杂的任务还很少被被探究过,作者使用 Prompt 来探测语言模型中的知识。

 

PoKE 模型用于事件检测任务的模型结构如下图所示,Prompt 分为两部分一部分是 external 的,一部分是 internal 的,这个主要是看 mask 的地方是在 passage 内部还是在添加的 prompt 上。具体来说针对 External 的 Prompt,在 passage 后面拼接上桥接词 ‘In the passgae above’,还有针对每个事件类型的 Prompt (格式为:verb <X> indictates xxx Event)然后送进 T5 中预测 mask 处的词。为了帮助模型更好地理解,作者还使用了 internal 的 Prompt,内容上跟前者一样,只是在前者 mask 的地方填上正确的 trigger 词,反而将上下文中的 trigger 词 mask 掉,然后送入 T5 预测。

 

本质上这样做的动机还是靠近T5的预训练任务,更好地探测和利用模型。

 

 

下面介绍用于论元抽取的模型架构,如下图所示,整体思路也跟上面事件检测的一致,也是分为两种 Prompt 方式,这里称为 Single Argument Prompt 和 Joint Argument Prompt。针对前者,在送入的 passage 中标出 trigger 词,然后拼上桥接词 ‘In the passgae above’,每个 trigger 对应一个事件类型以及相关的论元,构造简单的 Prompt 来抽取对应的论元,然后在最后拼上后缀用来指明事件类型和 trigger 词,最后送入 T5 中得到相关的论元的预测。Joint 的 Prompt 也是类似,只是将 mask 的位置放在了 passage 的对应的论元上,将原本的 mask 的位置替换成了真实的论元,最后同样送入 T5 中辅助模型理解上下文。

 

 

事件抽取的实验结果如下表所示,PoKE 可以取得相对有竞争力的性能。

 

 

 

总结

 

本文梳理了六篇 2021 年的使用 seq2seq 的语言模型去建模事件抽取任务的相关工作,按照他们做的任务,使用的语言模型以及是否在解码时做了一定的约束这个三个信息将这六篇工作做一个简单的对比,如下表所示。可以发现 T5 和 BART 是选择比较多的 Seq2Seq 预训练模型,大部分工作都是做的端到端的事件抽取,也有很多工作对解码做了约束以便更好地生成。从以上的工作不难看出更加强有力的端到端的事件抽取模型,文档级的事件抽取建模依旧是个挑战。

 

 

 

参考文献

 

 

[1] BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. ACL 2020

 

[2] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. PMLR 2020

 

[3] Language Models are Few-Shot Learners.

 

[4] Structured Prediction as Translation between Augmented Natural Languages. ICLR 2021

 

[5] Augmented Natural Language for Generative Sequence Labeling. EMNLP 2020

 

[6] Towards Generative Aspect-Based Sentiment Analysis. ACL 2020

 

[7] Document-Level Event Argument Extraction by Conditional Generation. NAACL 2021

 

[8] Event Extraction by Answering (almost) Natural Questions. EMNLP 2020

 

[9] TEXT2EVENT: Controllable Sequence-to-Structure Generation for End-to-end Event Extraction. ACL 2021

 

[10] Document-level Entity-based Extraction as Template Generation. EMNLP 2021

 

[11] DEGREE: A Data-Efficient Generative Event Extraction Model. ArXiv 2021

 

[12] Eliciting Knowledge from Language Models for Event Extraction. ArXiv 2021

 

Be First to Comment

发表回复

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