一、写在前面的话
最近一直在整理代码以及做一些新闻方面的短语挖掘工作,后期应该会涉及事件抽取部分,蹭着放假先准备起来。
1. 论文的相关背景
事件是一种重要的知识,近年来,越来越多的工作关注于从开放域或领域文本中抽取结构化事件知识。事件是指发生的事情,通常具有时间、地点、参与者等属性,事件的发生可能因为一个动作的产生或者系统状态的改变。一般来说事件主要有:
- 事件触发器(event trigger)
最清楚地表达事件发生的主要单词(ACE事件触发器通常是一个动词或名词)
- 事件类型(event type)
事件类型就是字面意思,就是指当前这个事件是金融事件、医学事件等,下图为ACE05的事件类型:

- 事件元素(event argument))
事件元素也被成为论元或者事件参与者,其实就是对事件中除了触发器之外的所有参与事件的事物的一个统称,例如在一个杀人事件中,可能有的论元就是犯人和被害者。
- 事件元素角色(event argument role)
事件元素角色即指某个事件元素在这个事件中充当了什么样的角色,例如张三杀了李四这一个事件中,张三和李四都是事件元素,但张三的事件元素角色就是犯人,李四的事件元素角色是被害者。
针对上面四个要素,一般的事件抽取工作也会分成四块来处理:
- 事件触发词检测 (trigger detection)
- 事件触发词分类 (event trigger typing)
- 事件元素识别(event Argument Identification)
- 事件元素角色识别(event Argument Role Identification)
通过下图来说明一下一个事件抽取分步处理的过程:

首先我们通过事件触发词检测发现injured和passed away是事件触发器,接着我们对出现injured和passed away进行分类,判定injured和passed away在这句话中是触发了什么类型的事件,例如分类出injured在这句话中是触发了Injure事件,passed away触发了Die事件。这里随便插一句,刚开始看时还迷茫了一下,都知道了injured和passed away为什么还要做分类。后来看了一下任务,其实每个触发词不一样只对应一种事件,例如下图的两句话中beats就对应了两种事件。

在完成事件触发词分类分类之后,我们对句子再进行抽取,取出与Injure事件相关的所有事件元素,例如Henry(Die事件同理)。然后对Henry在Injure事件中充当什么角色做分类(一般来说,事件类型确定之后,就有相应的事件模版,例如杀人事件定义了存在犯人和被害者两种角色)。
由上面的过程可以发现事件触发词检测和事件触发词分类完全可以联合到一起来做,事件元素识别与事件元素角色识别也可以联合到一起来做。事件抽取看起来还是一些熟悉的方法,例如事件触发词检测可以做成命名实体或者每个词进行二分类,事件触发词分类本质上还是分类(类似的任务还有细颗粒的情感分析、关系抽取等等)。不过近年来,事件抽取的联合抽取方法层出不穷,是个很有意思的研究方向。

2. 论文主要解决的问题
本篇论文将事件抽取分为两个子任务:
-
事件触发词检测,使用模型对句子中每个词进行分类,判断是否是触发词,如果句子中存在触发词,执行第二步论元分类
-
事件元素角色识别,在任务一的结果基础上,对argument候选词进行分类(分类结果中包括没有角色这一种情况)
3. 论文的主要创新和贡献
- 为了保留更多的关键词信息(因为一句话可能存在多个事件,如果还是简单地使用最大池化,就会损失很多信息),提出了动态多池化CNN(dynamic multi-pooling convolutional neural network,DMCNN)
二、论文摘要翻译
ACE任务的传统方法事件提取主要依赖于精心设计的特征和复杂的自然语言处理(NLP)工具。这些传统的方法缺乏普遍性、需要消耗大量的人力资源,故而容易出现错误传播和数据稀疏的问题。因此,本文提出了一种新的事件抽取方法方法,其目的是在不使用复杂的NLP工具的情况下自动提取词汇级和句子级特征。本文引入一种单词表示法获取单词有意义语义规则并并采用了一个基于卷积神经网络(CNN)的框架来捕获句子级别的线索。然而,CNN在一个句子中只能捕捉到其最重要的信息,所以在考虑多事件句时可能会漏掉关键信息。为了解决上述问题,本文提出了一种动态多池化卷积神经网络(dynamic multi-pooling convolutional neural network,DMCNN),它根据事件触发器和参数使用动态多池层来保留更多的关键信息。实验结果表明,本文所提出的方法明显优于其他最先进的方法。
三、论文模型
1. 模型基本信息
本篇论文两个子任务的模型结构是一样的,任务二相比于任务一有更多的特征信息,故下文主要使用任务二时的情况进行记录。
论文标题 | Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks |
---|---|
论文地址 | http://www.nlpr.ia.ac.cn/cip/yubochen/yubochenPageFile/acl2015chen.pdf |
研究领域 | 事件抽取 |
提出时间 | 2015 |
模型简称 | DMCNN |
主干网络 | 卷积神经网络 |
输入 | 见模型架构部分 |
输出 | 事件元素角色(包括“无角色”标签) |
损失函数 | 交叉熵 |
2. 模型架构

- 输入形式
模型主要有两部分输入,一部分是Lexical level feature represent(词汇级特征表示),主要是使用触发词和候选论元的嵌入以及它们的上下文标记嵌入(候选词的左和右标记)。另一部分使用如下三种向量拼接,并送入网络进一步提取特征,获得句子级别的特征表示:
1.Context-word feature(词向量)
2.Position feature(当前词语与预测trigger以及候选argument之间的相对距离的向量)
3.Event-type feature(事件类型编码的向量)
假设词嵌入维度记为,位置嵌入维度记为
,事件类型嵌入维度为
,则最后每个词对应的向量维度:
,若输入的句子长度为n,则输入矩阵的维度为
。
- 句子特征提取网络的结构
卷积窗口大小为h*d,这部分的操作和TextCNN一样,不同的是,池化部分使用动态多池化操作,即原来最大池化将一个经过卷积之后生成的特征序列池化成1个值,动态多池化操作则是使用候选论元以及触发词将每个特征图分割为3个部分(如上文模型结构图中,特征序列被“cameraman”和“fired”分成三个部分),然后每段分别做最大池化:

- 输出
将词汇和句子级别特征表示向量拼接之后,通过全连接 + softmax 输出分类结果,类别数为所有事件元素角色 + “无角色”。
- 损失函数

四、论文实验
1. 实验数据集与指标
该篇论文使用使用ACE 2005语料库作为测评数据集。以40篇新闻专线文章作为测试集,从不同类型的文章中随机挑选30篇文档作为开发集,剩下的529篇文章作为训练集。使用以下标准来判断每个预测事件的正确性:
-
如果事件类型与候选触发词在句子中的偏移量正确,则认为触发词识别正确
-
如果事件类型和候选论元在句子中的偏移量正确,则认为论元识别正确
-
如果事件类型、候选论元偏移量和论元角色正确,则认为论元正确分类
最后以精度(P)、召回率(R)和F1分数(F1-score)作为评价指标。
2. 论文所使用的参数信息
论文设置 | |
---|---|
优化算法 | Adadelta |
优化算法超参数 𝜌 | 0.95 |
优化算法超参数ε | 1e^-6 |
trigger classification Batch Size | 170 |
trigger classification 卷积窗口 | 3 |
trigger classification 卷积核数目 | 200 |
trigger classification 位置向量维度 | 5 |
argument classification Batch Size | 20 |
argument classification 卷积窗口 | 3 |
argument classification 卷积核数目 | 300 |
argument classification 位置向量维度 | 5 |
argument classification 事件类型嵌入维度 | 5 |
Dropout rate | 0.5 |
3. 对比结果

- 对比模型 :
1.Joint event extraction via structured prediction with global features
2.Using document level cross-event inference to improve event extraction
3.Using cross-entity inference to improve event extraction
4.Joint event extraction via structured prediction with global features
网友评论