CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction
Background & Contributions
事件抽取这个话题算是老生常谈了,这篇论文着眼于解决以往事件抽取论文忽视的一个问题——重叠事件抽取。
文章将overlapping event extraction分为3种情况:
- A word may serve as triggers with different event types across several events. 如上图所示,单词acquired既是事件Investment的触发词,也是事件Share Transfer的触发词;
- *A word may serve as arguments with different roles across several events.*如上图所示,词组Shengyue Network*既是事件Investment的object论元,也是事件Share Transfer的subject*论元;
- *A word may serve as arguments playing different roles in one event.*如上图所示,词组Fudan Industry*同时充当了事件Share Reduction的subject和target*论元;
为了解决上述的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,主要包含三个子任务:
- Type Detection
- Trigger Extraction
- 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部分包含三个层:
- Condition fusion layer
- Self-attention layer
- 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个步骤:
- condition fusion layer
- self-attention layer
- 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可以合并到一起。
- BERT-softmax:使用BERT作为textual encoder,然后接一个softmax classifier用于分类event trigger和arguments;
- BERT-CRF:仍然使用BERT作为textual encoder,然后接一个CRF Layer用于分类event trigger和arguments,使用CRF的优点在于CRF可以捕获label dependency;
- 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
- 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降低了,这个问题有待解决。
- Compared to the pipeline methods。如上所示,CasEE仍然在F1值上取得胜利。达到这样的提升的原因,可能是CasEE采用Joint的方式,实现了三个subtask之间的信息交流。
⭐综上,可以归纳出 CasEE 比sequence labeling methods好在能够解决multi-label的问题,比pipeline好在能够实现三个subtasks之间在feature层面的交互。⭐
论文代码结果
从代码的结果来看,在Event Detection上的结果没有达到论文的结果。在Argument Extraction上与论文报告的结果基本一致。这篇论文代码写的非常好,后面会再次对代码进行学习,特别是在一些评价指标上的模块化代码。
Thinking
- 关于这个Overlapping的问题,在NER,RE中非常的常见。在事件抽取任务中还有待研究,做事件抽取的paper,用的数据集几乎全是ACE 2005,而ACE 2005并不存在这种Overlapping的现象,所以大家也就鲜有考虑了;
- 本文的数据集FewFC其实是2020 CCKS的一个比赛——面向金融领域的小样本跨类迁移事件抽取的数据集。而本文的方法,其实就是这个比赛第一名的团队的解决方案;
- 关于overlapping trigger的问题,是否考虑为每一种事件类型都建立一个CRF曾,这样不就可以解决overlapping的问题了吗?之后可以在他源码的基础上进行修改(TODO)
- 论文提出的方法在存在overlapping的数据集上表现效果可以,但是在不存在overlapping的数据集上就不再是SOTA了:
但是,我觉得论文中使用的Type Detection Decoder,Conditional Layer Normalization,Positional Embedding都是以后在解决事件抽取任务上可以用上的。
- 不同的注意力机制的不同,不理解为什么可以这么做,如何选择不同的注意力机制?
- Conditional Layer Normalization
- 极大似然估计
- 怎么实现BERT-Softmax,BERT-CRF以及BERT-CRF-Joint的?