CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction


CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction

Background & Contributions

事件抽取这个话题算是老生常谈了,这篇论文着眼于解决以往事件抽取论文忽视的一个问题——重叠事件抽取

文章将overlapping event extraction分为3种情况:

  1. A word may serve as triggers with different event types across several events. 如上图所示,单词acquired既是事件Investment的触发词,也是事件Share Transfer的触发词;
  2. *A word may serve as arguments with different roles across several events.*如上图所示,词组Shengyue Network*既是事件Investmentobject论元,也是事件Share Transfersubject*论元;
  3. *A word may serve as arguments playing different roles in one event.*如上图所示,词组Fudan Industry*同时充当了事件Share Reductionsubjecttarget*论元;

为了解决上述的overlapping的问题,本文就提出了A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction。其实这个思想是来源于之前看过一篇实体关系联合抽取论文——Joint Extraction of Entities and Relations Based on a Novel Decomposition Strategy

Method

如上图,论文采用联合多任务(Joint Multi-tasks)的范式解决Overlapping Event Extraction,主要包含三个子任务

  1. Type Detection
  2. Trigger Extraction
  3. Argument Extraction

这三个子任务共享了同一个BERT Encoder,从而在Feature的层面上将3者联系起来。

Type Detection Decoder

在不考虑Overlapping Event Extraction的情况下,解决事件抽取问题时,是分为Event Detection和Argument Extraction两个子任务,其中Event Detection会同时解决Type Detection和Trigger Extraction(通常是序列标注框架)。但是,这种Event Detection的方式是无法解决Overlapped trigger的问题的(即一个触发词能够触发多个事件。

其实感觉也是可以解决的。。。感觉多定义几个CRF层就好了啊。。。这是一个有待实验尝试的地方,也是可以锻炼编码能力的地方)

本质上,Type Detection就是一个Text Classification的任务,对于文本分类任务,很容易的,可以想到使用BERT的[CLS]来做文本分类任务,而这个[CLS]的Embedding就作为了当前sentence的Embedding。这也是最trivial的一种方式,使用huggingface transformers中的BertForClassification类就可以实现了。

但是,这样的方式未免太简单了?于是论文提出了一种更加复杂的方式来得到Sentence Embedding。文章称之为sentence embedding adaptive to the type。具体的数学形式如下:

首先,定义一个Event Type Embedding Matrix $\mathbf{C}$,其大小为$\mathbb{R}^{|\mathcal{C}| \times d}$,$\mathbf{c}$就是其中一个事件类型的embedding。上述执行的操作就是一个attention的操作,得到event-type specific sentence embedding。因此,对于每个sentence,它会得到$|\mathcal{C}|$个sentence embedding,每个都特定于一个event type。

上述操作,对应于Model Architecture的上图部分。

在得到好的sentence embedding之后,就是对sentence embedding进行分类了,与其重新定义一个Classifier层,不如直接复用之前的Event Type Embedding Matrix用来做相似度计算,而且这个相似度计算的函数也可以复用上述的$\delta()$:

使用sigmoid而不是用softmax是因为这是一个multi-label的任务。

上述操作,对应于Model Architecture的上图部分。

Trigger Extraction Decoder

如上图,在Trigger Extraction Decoder部分包含三个层:

  1. Condition fusion layer
  2. Self-attention layer
  3. Binary taggers

其中,Condition fusion layer使用的就是之前毕设用到的conditional layer normalization

使用这个层的目的是为了将Event Type的Embedding融入到句子中每个token的Embedding之中。

上图中红框部分就是Condition fusion layer的操作部分。

接下来的操作就比较常规了,直接放到Self-Attention Layer和binary taggers中得到最终的结果就好。

Argument Extraction Decoder

为了解决Overlapping Argument的问题,文章同样不采用单层的CRF,而是使用多层的start-end指针网络。如上图所示,每个argument role都有其专属的start-end,这样就解决了overlapping的问题。

同样的,参考在Trigger Extraction Decoder的操作,这里也分为3个步骤:

  1. condition fusion layer
  2. self-attention layer
  3. binary taggers

condition fusion layer的输入是融入了event type embedding和trigger embedding的句子中每个token的Embedding。在具体是实现上,就是用conditional layer normalization融合trigger embedding和trigger extraction decoder中的condition fusion layer的output。如下图所示:

之后过一个self-attention layer,在此之后,值得注意的是,在过binary taggers之前,还加入了每个token距离当前trigger的距离的positional embedding。最后才过的binary tagger得到最终的结果。

Model Training

最终,模型的训练函数如下:

模型的目标就是极大似然估计。

Experiments

Dataset and Evaluation Metric

由于在ACE 2005数据集中,不存在overlapping trigger的问题(这个也是我之前并没有意识到的),并且只存在10%的overlapping argument的句子存在overlapping argument的问题,所以其并不是一个很好的用于验证本文方法的数据集。所以,本文使用了一个新的数据集——FewFC:

如上图所示,Overlap : Normal的比例在3 : 10。

在evaluation metric的方式选择上,采用的是常见的metric:

metric description
Trigger Identification(TI) A trigger is correctly identified if the predicted trigger span matches with a golden span
Trigger Classification(TC) A trigger is correctly classified if it is correctly identified and assigned to the correct type
Argument Identification(AI) An argument is correctly identified if its event type is correctly recognized and the predicted argument span matches with a golden span(不需要考虑看Trigger吗?看代码实现,不需要考虑)
Argument Classification(TC) An argument is correctly classified if it is correctly identified and the predicted role matches with a golden role.

采用Precision,Recall和F measure进行度量。

Comparison Methods

以下的方法用于对比实验:

Joint sequence labeling methods

将event extraction定义为一个联合序列标注任务;

还是需要完成event type detection,trigger extraction和argument extraction。根据我直观来看,event type detection和trigger extraction可以合并到一起。

  1. BERT-softmax:使用BERT作为textual encoder,然后接一个softmax classifier用于分类event trigger和arguments;
  2. BERT-CRF:仍然使用BERT作为textual encoder,然后接一个CRF Layer用于分类event trigger和arguments,使用CRF的优点在于CRF可以捕获label dependency;
  3. BERT-CRF-Joint:将type和role的label结合在一起,使用B/I/O-type-role作为label。

Pipelined event extraction methods

将event extraction定义为一个pipeline的任务。

Methods Description
PLMEE 这个方法能够解决overlapping argument role的问题,其解决办法也是为每个argument role生成一个start-end tagger pair。
MQAEE-1 采用MRC的方式。首先预测事件类型,然后同时预测overlapping triggers和overlapping arguments。包括两个模型:
1. A BERT classifier to detect event types;
2. A MRC BERT to extract triggers and arguments
MQAEE-2 采用MRC的方式。首先同时预测带有事件类型的trigger,然后根据trigger预测arguments。包括两个模型:
1. A MRC BERT to extract all triggers with types.
2. A MRC BERT to extract arguments in different roles.
MQAEE-3 采用MRC的方式。首先预测事件类型,然后预测trigger,最后预测arguments。包括三个模型:
1. A BERT classifier to detect event types
2. A MRC BERT to extract triggers with different types.
3. A MRC BERT to extract ar- guments in different roles.

Main Results

  1. Compared to the joint sequence labeling methods。如上所示,在F1值上,CasEE比所有的joint sequence labeling methods都要好。在Recall值上面,CasEE更是会超出10个百分点。这说明了CasEE对于解决overlapping的问题是很好的。在Precision上,CasEE就不及joint sequence labeling methods了,这是因为CasEE为了解决Overlapping的问题,扩大了搜索的范围,从而使得Precision降低了,这个问题有待解决。
  2. Compared to the pipeline methods。如上所示,CasEE仍然在F1值上取得胜利。达到这样的提升的原因,可能是CasEE采用Joint的方式,实现了三个subtask之间的信息交流。

综上,可以归纳出 CasEE 比sequence labeling methods好在能够解决multi-label的问题,比pipeline好在能够实现三个subtasks之间在feature层面的交互。

论文代码结果

从代码的结果来看,在Event Detection上的结果没有达到论文的结果。在Argument Extraction上与论文报告的结果基本一致。这篇论文代码写的非常好,后面会再次对代码进行学习,特别是在一些评价指标上的模块化代码。

Thinking

  1. 关于这个Overlapping的问题,在NER,RE中非常的常见。在事件抽取任务中还有待研究,做事件抽取的paper,用的数据集几乎全是ACE 2005,而ACE 2005并不存在这种Overlapping的现象,所以大家也就鲜有考虑了;
  2. 本文的数据集FewFC其实是2020 CCKS的一个比赛——面向金融领域的小样本跨类迁移事件抽取的数据集。而本文的方法,其实就是这个比赛第一名的团队的解决方案;
  3. 关于overlapping trigger的问题,是否考虑为每一种事件类型都建立一个CRF曾,这样不就可以解决overlapping的问题了吗?之后可以在他源码的基础上进行修改(TODO)
  4. 论文提出的方法在存在overlapping的数据集上表现效果可以,但是在不存在overlapping的数据集上就不再是SOTA了:

但是,我觉得论文中使用的Type Detection Decoder,Conditional Layer Normalization,Positional Embedding都是以后在解决事件抽取任务上可以用上的。

  1. 不同的注意力机制的不同,不理解为什么可以这么做,如何选择不同的注意力机制?
  2. Conditional Layer Normalization
  3. 极大似然估计
  4. 怎么实现BERT-Softmax,BERT-CRF以及BERT-CRF-Joint的?

文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
 上一篇
torch.nn.Module.register_buffer()的使用 torch.nn.Module.register_buffer()的使用
在使用torch.nn.Module类编写深度学习模型的时候,我们通常会在里面定义很多的Parameters(比如nn.Linear等等)。这些Parameters是会随着模型的不断训练而更新的。 但是,如果我们需要定义一些不变的常量该怎么
2021-08-26 CarlYoung
下一篇 
Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
Prompt EngineeringPrompt ShapePrompt shape主要分为两种: cloze prompts。这种就是常见的完型填空式,多用于text classification任务,通常用Masked LM求解;
2021-08-20 CarlYoung
  目录