本文将事件抽取任务定义为包含两个阶段的多分类任务。第一个阶段是触发词分类,利用DMCNN模型对句子中的每一个单词进行识别,判断是否为触发词。若是一个句子中包含了触发词,那么开始执行第二个阶段;第二个阶段是论元分类,这里使用了类似的DMCNN模型,对句字中除了触发词之外的全部实体论元进行判别,识别出与该触发词存在关系的论元以及该论元所扮演的论元角色。因为这两个阶段的模型结构基本相同,前者是后者的简化版本,所以对第二阶段的模型进行详细介绍,以后阐述第一阶段模型对第二阶段模型的不一样之处。算法
图1-论元分类模型结构
网络
接下来详细介绍上述4个模型组件。函数
带有最大池化层的CNN是一个捕获句子中长距离语义信息的很好的选择。可是,正如上文所说的那样,传统CNN模型没有办法处理事件抽取任务中,一个句子包含多个事件的状况。为了更好地解决这种问题,文章提出了DMCNN模型去抽取句子特征信息。相较于传统CNN模型,DMCNN模型将最大池化层改进为动态多池化层,这样可以捕获到句子中不一样部分的最重要的信息,而不是只捕获全局最重要的信息。其中句子的每一个部分是依据事件触发词和事件论元所在的位置动态地划分(即把一个句子分为三个部分)。工具
首先介绍DMCNN模型的输入,虽然本任务从本质上属于多分类任务,可是在模型的输入上有很大的不一样。传统的分类模型,只须要将句子的词嵌入矩阵做为输入,模型对于句子中的每一个单词再输入阶段都是无差异对待的。而对于本任务来讲,但愿识别句子中某一单词的在某一事件中的具体角色,某一单词指的就是实体论元,某一事件指的是事件触发词所对应的事件类型,因此DMCNN模型再输入阶段应该区别对待论元单词与事件触发词。若是不引入这种输入信息,对于同一个句子,它对应的类别永远是同一个,这不符合事件抽取任务的需求。基于这种考虑,DMCNN所使用的输入信息有:学习
上下文单词特征(CWF, Context Word Feature):将整个句子中的全部单词看做上下文,所以CWF就是每一个单词的词嵌入向量。测试
位置特征(PF, Postion Feature):在论元分类任务中,强调句子中哪些单词是触发词或候选论元是十分重要的。所以在输入中添加位置信息,表示每一个单词分别与触发词、候选论元的相对距离。为了编码位置特征,每一个距离数值都被表示为一个嵌入向量。这个向量在网络中随机初始化,并经过网络的反响传播进行优化。优化
事件类型特征(EF,Event-type Feature):在论元分类任务中,触发词所属的事件类型也是十分重要的,所以咱们在触发词分类任务中,对事件类型进行编码,并将其应用于论元分类任务中。编码
在实际的网络构建过程当中,咱们将每一个单词的词嵌入向量、与触发词相对距离向量、与候选论元相对距离向量、事件类型向量进行级联。将四个向量拼成一个长向量,做为单词的最终表示。spa
卷积层的目标是捕获整个句子的语义信息,并经过特征图语义信息进行压缩。一般来说,\(x _ { i : i + j }\)令表示单词\(x _ { i } , \quad x _ { i + 1 } , \quad \ldots , \quad x _ { i + j }\)的级联矩阵。一个卷积操做包含一个过滤器w \in \mathbb { R } ^ { h \times d },\(h\)是过滤器的维度大小,\(d\)是每一个单词的向量维度。过滤器的维度大小也就是卷积操做的窗口大小,由\(h\)个单词共同计算出一个新的特征向量\(c_i\),计算公式以下:
\[c _ { i } = f \left( w \cdot x _ { i : i + h - 1 } + b \right)\]设计
其中\(b\)是偏置,为实数。\(f\)是非线性函数。经过窗口移动,是的该操做对每一个单词都执行一遍。
实际状况固然不可能只使用一个过滤器,通常用多个过滤器去获取不一样层面的特征值,须要注意的是这些过滤器的窗口大小是相同的。咱们使用了个过滤器,所以最后生成的特征矩阵\(C \in \mathbb { R } ^ { m \times ( n - h + 1 ) }\)。
如前文所说,为了可以抽取句子中的不一样部分的重要信息,本文设计了一个动态多池化层。由于在事件抽取任务中,一个句子可能包含多个事件,而且一个候选论元相对于不一样触发词可能扮演不一样的角色。为了获得一个更加准确的预测,应该让模型捕获到触发词、候选词变化的信息。所以在论元分类任务中,咱们将卷积获得的特征图分为三个部分,按照触发词、候选论元所在的位置进行切分。以后使用每一个部分的特征最大值做为最终提取的特征,而不是像max-pooling那样使用一个全局最大值表示整个句子的特征,这样能够避免丢失掉不少对事件抽取任务有帮助的信息。
以后咱们将生成的\(p _ { i 1 } , \quad p _ { i 2 } , \quad p _ { i 3 }\)级联,获得新的向量\(\mathrm { P } \in \mathbb { R } ^ { 3 m }\),把其看做为句子级别的高层次特征表示。
经过上述三个组件,咱们已经获得了每一个单词的词汇级特征\(L\)和句子级特征\(P\),将这两个特征向量进行级联,获得了每一个单词的最终表示向量\(F = [ L , P ]\),以后经过经常使用的全链接层进行分类。类别数量是全部论元角色的数量,包括None角色。
经过上述流程,咱们描述了第二阶段任务——论元分类的整个模型结构,如今介绍一下第一阶段任务——触发词分类的模型结构的不一样之处。
对于第一阶段任务,只须要找到句子中的触发词便可,任务难度较低,所以咱们采用一个简化版的DMCNN。首先咱们只使用触发词与其左边和右边的单词构建词汇级特征\(L\),在提取句子级上下文特征时,使用和论元分类相同的处理方式,不过只根据候选触发词的位置,将句子切分为两个部分。以后的处理流程彻底相同,都是看成一个分类任务处理。
本文使用ACE2005语料库做为实验数据。根据前人的工做,采用以下标准来衡量预测结果:
若是事件类型与候选触发词在句子中的偏移量正确,则认为触发词识别正确。
若是事件类型和候选论元在句子中的偏移量正确,则认为论元识别正确。
若是事件类型、候选论元偏移量和论元角色正确,则认为论元正确分类。
使用准确率、召回率、F1值做为评价指标。
在触发词分类任务中,卷积操做的过滤器窗口大小为3,过滤器数量为200,batch size大小为170,位置特征PF的维度为5。在论元分类任务中,过滤器窗口大小为3,过滤器数量为300,batch size大小为20,位置特征PF和事件类型特征EF的维度都为5。训练过程当中使用Adadelta做为优化器,dropout的大小为0.5。词嵌入向量使用Skig-gram算法在NYT语料库上训练。
表1记录了本文提出的DMCNN模型在测试数据集上的效果。从结果能够看出,与其余模型相比DMCNN模型取得了最好的效果。其余模型有的引入了人工编写的特征,而本模型的特征所有由模型自动抽取获得的,这也从另外一方面证实的该模型抽取的特征有必定的实际意义。