Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extraction

  1. 摘要

现存的event extraction方法只抽取本句子中event argument。但是很多任务情况下argument分散在多个句子中,event mention也在文本中多次出现。本文提出Doc2EDAG生成非循环图填充document-level EE。是一个no-trigger-word 的方法。数据集和代码(https://github.com/dolphin-zs/Doc2EDAG.)

  1. 介绍

金融公告越来越多特别是chinese financial announcements ,抽取这些announcement中的事件面临两个挑战:arguments-scattering 和 muti-event(同一事件出现多次)。如图对于文本中多次数显的equity pledge事件,argumen总是一直在变化。

event table

前人大部分工作都在ACE2005上,整个数据集只注重从单个句子中抽取事件。但是financial document需要document-level EE。argument-scatter比multi-event更加难。本文提出Doc2EDAG解决这两个问题,模型的关键是将event table 转换为基于实体的有向无环图(entity-based directed acyclic graph)将表填任务转换为path expand任务。为了更好的扩展path Doc2EDAG编码实体、document-level context和memory mechanism。使用no-trigger的方将文本map到event table。

  1. 相关工作

最近信息抽取构建了联合模型能同时抽取实体并且识别结构。Ren等集中于抽取实体和实体间关系。一些也同时抽取实体和事件,但是没有考虑argument scatter问题。另一个问题是缺少训练数据,distant support 结合一些 简单的约束规则效果很好。

  1. 文本级事件标注

首先做文本级事件标注。为了保证标注效率使用了两个约束条件:①key role必须有argument 其他role可以是空。②匹配到的argument必须大于某个阈值。

DEE Taks Without Trigger Words:需要三个子任务①抽取entity作为argument candidate ②逐个事件判断文本是否触发了这个事件。③事件填充,将argument填入表格。

  1. Doc2EDAG

key idea 是转换表格化的事件records 到 基于实体的有向无循环图,并且让模型学会基于document-level context生成EDAG。文件包含两个关键阶段:document-level entity encoding 和 EDAG generation。在此之前先介绍 input representation 和 entity recognition。

输入表示input recognition:

每个文本表示为d = [si,s2,…,sns],最长的文本有ns个句子,每个句子表示为si = [wi,1,wi,2,…,wi,nw]最长的句子有nw个词wi,j表示第j个句子的第i个词。

entity recognition 实体识别

基于 bilstm-CRF 改编为 transformer-CRF,并且将这个transformer称为transformer-1 ,将role标签加上BIO作为CRF的训练标签。损失函数记为Ler

Document-level Entity Encoding****:

解决argument-scatter需要使用全局信息,于是使用document-level entity encoding 编码抽取到的entity mention、context 产生一个dw的向量,用特殊标签表示。

entity & sentence embedding 首先通过在entity mention上使用最大池化得到固定长度的entity mention表示dw。也在整个句子上使用最大池化得到ci∈Rdw

document-level encoding上面的到e和c都只包含local information(句子级别),使用transformer-2,add表示句子位置的向量。经过transformer-2 之后更具相同的surface name 使用最大池化得到ee长度为ne。

EDAG generation

在cd的基础上 使用一个线性分类器分类事件。然后对每个识别出来的事件生成EDAG。

EDAG building , 模型训练之前需要基于tabular event record 构建 EDAG。对每个事件类型自定义argument 顺序,按照这个顺序转换为linked list,每个节点一个实体或者一个空argument NA。最后将前缀相同的linked list融合,如下图。

构建EDAG

任务分解:将填表任务分解为path-expanding 任务。假设trigger是第一个节点,就能每次一个role扩展节点,每次扩展的时候EDAG的每个叶子节点都根据当前role扩展哪一个实体。如果没有实体可以扩展就连接一个NA节点。

Memory 记录已经扩展了的实体。使用随机初始化的向量m和ed作为一个记忆状态,每次扩展路径的时候都添加对应的role标签或者NA的零向量。

path expanding:每个路径扩展视为一个二分类,经过transformer-3之后选取er使用一个二分模型判断是否扩展路径。

模型结构

损失函数 event trigger Ltr 、EDAG 生成 Ldag 、 以及实体识别的Ler 三个损失函数分别乘上对应的系数之后求和。

给定一个文本,首先EDAG识别entity mention,编码为document-level contexts,然后针对触发的事件生成EDAG。训练的时候可以使用ground-truth和EDAG,但是训练的时候不能,可能导致错误产生,我们使用了scheduled sampling将entity mentions转换到模型能识别的数据。

扩展错误的节点对结果影响比较大,需要设置一个参数θ。

标注数据的质量和比例:


试验结果:

你可能感兴趣的:(Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extraction)