事件抽取的目标是在非结构化的文本中确认事件的触发词(Eventtrigger)和参与者(Event argument),并判断触法词的事件类型(Eventtype),判断参与者在事件中的扮演的角色(Argument role)。有触发词和参与者的短语或文本称为EventMention。如下图的关于Transport-Person 事件的一条EventMention,dispatching是触发词,下划线是参与者,其中China作为Agent参与事件。
目前大多数的事件抽取是基于已有的手动标记样本进行训练。常见的数据集ACE,总共有8个大类,33个小类,对每个类,有人为标记的训练语料。但是对于没有样本的新事件类型,用上述语料训练的模型会显得无力。对此,一是可以用远程监督的方法标记训练样本,二是用迁移学习方法。本文基于第二点的,提出在事件抽取任务中用零样本迁移学习方法:将event mention 和event ontology联合映射到共享的语义空间上,拉近两者在语义空间上的距离。
具体来说:对于新的语料,可以用AMR得到具体事件mention的结构,同时提供已定义好的关于事件类型ontology的结构。如上图所示,是对上述E1进行处理后得到mention的结构和一些已定义好的ontology结构。可以看到,事件触发词和事件类型名通常有一些共享含义,同时,两者的结构也趋于相似。本文基于这两点,将mention和ontology的结构表示联合映射到同一语义空间,最小化mention和对应的ontology的语义距离,从而学习一个通用映射函数,将已有样本训练得到的模型迁移到没有样本的事件中,整体框架如下:
分为如下几步:
1. 找出候选触发词和候选参与者,称为Tiggerand Argument Identification
用WSD找出触发词候选项,并用FrameNet中的Lexical units匹配文本扩充触发词候选项;利用ARMparser找出参与者候选项。
2. 确定触发词对应的事件类型,称为 Tigger Classification
触发词分类主要是用CNN模型,模型的输入考虑了两个部分 [V_t,V_(S_t)]:V_t 触发词本身的语义表示,可以用word2vec来训练;触发词t的结构是 S_t,V_(S_t)是 S_t 的表示; ontology的 [V_y,V_(S_y)] 输入同理。
对于 V_(S_t),分两步进行:首先结构中的每条边,可以表示为 u=<w_1,λ,w_2>,用 M_λ 表示关系,可以得到每个元组的表示 V_u,对应公式如下;之后将 t 的所有元组的表示 V_u 拼接起来,输入到CNN网络中,得到V_(S_t)。
对于 V_(S_y),ontology的每个元祖表示为 u^'=<y,r>, y 是事件类型,r 是参与者角色, V_u' 的表示如下,之后也输入到CNN中得到 V_(S_y)。
通过hinge loss来训练模型,将mention和ontology的表示学习到同一语义空间:
3. 确定参与者在事件中扮演的角色,称为ArgumentClassification
参与角色的分类是基于触发词到参与者路径的相似度。仍以E1为例,通过将dispatch-01—>:ARG0—>China和Transport-Person—>Agent的路径信息学习到同一语义空间,之后根据语义相似度判断China在Transport-Person中的扮演的角色是Agent。
4. 预测新类别
测试时候,对于新的 t',用训练好的模型得到 t' 的结构化表示和所有ontology的结构化表示,距离最近的就是预测的结果。
本文进行了比较丰富的实验:
1. 在ACE数据集上进行实验,实验中可见类设置如下,N表示可见类的数量:
上述设置下得到的效果如下,WSD-Embedding没有将结构信息考虑到迁移的过程中。可以在迁移学习过程中考虑更多的机构化信息,得到的效果更好;可见类越多,效果越好。
2. 用ACE的 Justice类的4个小类做训练,用其余三个或用其他大类下随机的一个小类作测试。可以看到,测试类跟训练类的相似度越高,效果越好。
3. 使用LSTM在所有类上进行训练和测试,和用ZSL进行训练和测试的效果对比。可以看到用ZSL训练得到的效果和用LSTM训练近500条样本得到的效果不相上下。
笔记整理:王若旭,浙江大学硕士,研究方向为知识图谱,自然语言处理.
OpenKG.CN
中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。
转载须知:转载需注明来源“OpenKG.CN”、作者及原文链接。如需修改标题,请注明原标题。
点击阅读原文,进入 OpenKG 博客。