1. 简介
事件作为信息的一种表现形式,其定义为特定的人及物在特定的时间特定的地点相互作用的事实。事件的组成元素包含触发词、事件类型、论元以及论元角色:
触发词:事件发生的核心词,多为动词和名词。
事件类型:ACE2005 定义了8种事件类型和33种子类型。其中,大多数事件抽取均采用33 种事件类型。
论元:事件的参与者。
论元角色:事件论元在事件中充当的角色。共有35类角色,例如,攻击者 、受害者等。
例如:在Baghdad,当一个美国坦克对着 Palestine 酒店开火时一个摄影师死去了。该事件信息如表1所示:
表1 举例事件相关信息
事件抽取的目标即自动化的从非结构化的信息中完成上述信息的获取,并结构化进行展示。事件抽取是信息抽取领域中一项重要且具有挑战性的任务。其可以为知识库构建,问答以及语言理解任务提供有效的结构化信息。然而传统的事件抽取任务大多数基于句子层面,但是这样具有很明显的缺陷:一个事件会涉及到触发词和多个论元,但是实际情况中,很少会有触发词和所有的论元都出现在一个句子中的理想情况(如图1[1]),所以如果在实际的文本中,孤立的从单个句子抽取,很可能会得不到完整的事件信息。因此,研究文档级别的事件抽取,如何获取跨句子的信息,对事件抽取的实际应用是很有帮助的。
2. 任务
文档级别事件抽取任务包含论元角色识别任务(目前研究主要的关注点)、名词短语共指消解以及事件追踪(即判断抽取的论元属于文档中的哪个事件)。本文主要介绍论元角色识别任务,该任务根据预先定义的事件类型以及对应的事件类型所包含的角色,将一个文档中论元识别出来并填充至相应的角色中,具体如图2[2]。
图2是一个典型的文档级事件抽取的例子,可以看出一个事件的论元分散在了多个句子当中,指出了该项任务两个难点[3],即一个事件的论元分散在多个句子当中和一个文档中可能包含多个事件。单从句子层面进行事件抽取难以克服,下文通过介绍几篇文章中的工作来阐述如何完成该项任务。
3. 数据集
目前而言事件抽取存在着训练数据不足的缺陷,以经常用来做实验的公开数据集 ACE 2005 来说,该数据集文档数仅599篇,所以需要针对文档事件抽取任务构建数据集。远程监督被证明可以为关系抽取以及事件抽取任务自动生成大量数据[4],以关系抽取中的远程监督举例,如图3,在已有的数据库FreeBase中,已知Steve Jobs 与 Apple 具有founders关系,并且Freebase中提供了相关的表示founders关系的样本句子。但是我们觉得样本数量过少,希望能够根据已有知识来扩展一下数据集,以方便我们模型的训练。我们从外界获得大量的文本,进行关键词的匹配,只要是在同一句话中同时出现了Steve Jobs 以及Apple 这两个实体,我们就假设这句话表达了二者之间具有的founders关系,对这句话进行标注,并加入到训练数据集之中。因此通过远程监督的方法来完成数据的自动标注[1],该数据集共包含2976篇文档,其中91%的事件的论元均分散在多个句子中。Shun Zheng et al.直接花费大量人力手工标注得到数据集ChFinAnn,该数据集共包含32040篇文档。
4. 方法
动态融合文档不同层次信息
文档级事件抽取任务无法利用句子层面的抽取方法得到解决,最主要的原因便是一个事件的论元分散在了不同的句子当中,因此如何获取跨句子信息就显得较为重要,以往的方法均是将一个句子作为输入,获得该句子的事件元素。因此最直接的想法便是将整篇文档作为输入,输出事件元素,但实验证明该该种方法效果不佳[2],Xinya Du et al.工作表明,随着输入长度的增加,即一次输入一个句子、k个句子(k=2,3,4)以及整篇文档,准确率呈现先上升后下降,而召回率呈现先下降后上升,最终F1值并没有得到提升,该工作表明文档级事件抽取不仅要关注文档级上下文,句子级上下文也同样重要。因此,提出将文档在不同粒度的信息进行融合用于抽取。具体结构如图5所示,整体上将抽取任务转化为序列标注任务,可以看到模型从两个层次进行信息的获取,左半部分将句子逐句进行编码后输入至Sentence-Level BiLSTM,得到的编码进行拼接,进而获取这k个句子在句子级别的表示,右半部分将这k个句子一起进行编码,然后同时输入至Paragraph-Level BiLSTM,得到这k个句子在文档级别的表示,然后将两者通过门控机制进行融合,如下所示:
以文档中某句为事件中心句进行论元补充
一般情况下,一个事件在一个文档中通常会有一个句子最能表达该事件即事件的中心句,从语义层面上来看,即该句子囊括了这个事件的最多的要素和信息,比如包含触发词以及较多的论元。如果能够对该句子识别的基础上进行论元的补充完整,那么就解决了论元分散问题。Hang Yang et al.采用该思路构建了一个DCFEE框架[1]来对文档进行抽取。图5是该框架的具体架构及工作流程,该模型事件抽取过程分成了两个部分,一个是黄色框的句子级别的抽取(SEE:Sentence-level Event Extraction),一个是绿色框的文档级别的抽取(DEE:Document-level Event Extraction)。句子级别的抽取是将抽取问题转化为序列标注问题,采用BiLSTM+CRF序列标注模型,通过将句子切分成字符输入模型,最终在输出端可以得到字符的BIO标注,触发词以及论元均采用该方法抽取。接着将SEE的输入(图中右半部分红色向量)与输出(图中右半部分蓝色向量)拼接作为第二部分DEE的输入,DEE部分的工作分为两步,第一步对于输入的句子,判断其是否是事件的中心句,该步由一个卷积层以及二分类的输出层完成,第二步对于以中心句为基础,在文档中该句子周围的句子中获取论元,对事件进行补充,例如在图5中,为该事件的中心句,但是时间信息却在中,这时,假设该时间涉及的事件就是我们的中心事件,通过补充该时间,使得事件信息抽取完整。
将事件抽取转化为构建基于实体的有向无环图
Doc2EDAG的架构如图6所示,总体来看,该模型先将文档中所有的实体识别出来,然后通过文档级的信息的融合处理来解决句子级抽取所带来的信息没有跨句子流通的问题,接着根据设定的事件类型来对文档中是否包含某事件类型的事件进行判断,如果有,则针对该事件类型逐步生成一个有向无环图,有向无环图的生成更类似于按照填表的形式,对于每个事件类型的论元,按照设定逐步进行填充,由于针对所有的设定的事件类型逐个判断,所以理论上可以将一个文档中多个事件抽取出来,也就解决了单文档多事件的问题。
实体识别 采用 Transformer 作为上下文编码器对实体单位进行编码训练,在训练过程中,使用事件论元的角色信息作为实体标签,使用经典的BIO(Begin,Inside, Other)方案,并用 crf 层将其封装起来,来获得实体识别 Loss 函数。
文档级信息编码 为了有效地解决论元分散的问题,需要利用全局上下文来更好地识别一个实体是否扮演特定的事件角色。首先将识别得到的实体以及句子进行embedding并分别使用最大池化操作获得固定维度的向量。然后将句子编码向量添加位置编码后与实体编码拼接起来一起输入Transformer中,以此来促进文档级上下文信息的流通,获得文档级的句子编码以及实体编码,需要注意的是,一个文档中可能会有名称相同的实体,通过最大池化操作将这些相同名称的实体的向量进行合并。
EDAG生成 该部分首先对每个事件类型进行触发分类,对被触发的事件类型按照预定义的事件角色顺序创建EDAG(因此一个文档可以得到多个EDAG对应多个事件),EDAG的节点对应与角色匹配的实体或者NA(表示没有与该角色匹配的实体),创建完成的EDAG每条完整路径对应着一条事件记录。
EDAG路径扩展 该部分则是转化为二分类任务,即判断某个实体是否是当前节点对应的论元角色,如果是则将该实体添加到EDAG中,如果没有任何实体能与当前的角色匹配,则将NA添加到EDAG中。
Doc2EDAG模型通过使用NER模型将所有的实体识别出来之后,将所有的句子编码以及实体编码输入到Transformer中来完成跨句子信息的获取。然后对每个实体逐一分类最终获取事件完整的论元。
5. 总结
参考资料
Hang Yang, Yubo Chen , Kang Liu , et al.: DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled Training Data. In: Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics-System Demonstrations. 2018: 50-55.
[2]Xinya Du, Claire Cardie.: Document-Level Event Role Filler Extraction using Multi-Granularity Contextualized Encoding. In: Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics-System Demonstrations. 2020.
[3]Shun Zheng, Wei Cao, Wei Xu, et al.: Doc2EDAG: An end-to-end document-level framework for chinese financial event extraction. In: Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing. 2019: 337-346.
[4]Yubo Chen, Shulin Liu, Xiang Zhang, et al:. Automatically labeled data generation for large scale event extraction. In: Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing. 2019: 409-419.