【论文解读IJCAI 2019】Extracting Entities and Events as a Single Task Using a Transition-Based NeuralModel

论文题目:Extracting Entities and Events as a Single Task Using a Transition-Based Neural Model
论文来源:IJCAI 2019 武汉大学, 东华大学, 西湖大学
论文链接:https://www.ijcai.org/Proceedings/2019/753
代码链接:https://github.com/zjcerwin/TransitionEvent
关键词:事件抽取,实体抽取,联合学习,transition-based model
本文没太读懂转换模型,这些个转换行为看起来好复杂。没有总结个人理解,后续可能会更新。
如果将来需要精读的话,要去看论文中引用的transition-based模型的文章。
1 摘要
事件抽取任务包括许多子任务:实体抽取,事件触发词抽取,元素角色抽取。传统的方法是使用pipeline的方式解决这些任务,没有利用到任务间相互关联的信息。
已有一些联合学习的模型对这些任务进行处理,然而由于技术上的挑战,还没有模型将其看作一个单一的任务,预测联合的输出结构。
本文提出了一个transition-based的神经网络框架,以state-transition的过程,递进地预测复杂的联合结构。
2 引言
根据ACE2005数据集,事件检测(EE)包含3个子任务:实体的检测,事件触发器的识别,参数的识别。
(1)已有的方法和其局限性
1)pipeline
先前的大多数处理EE任务的模型都是假定给定了真实的实体。实体检测和触发词抽取以及元素识别任务,有着密切的关联。如图1所示,命名实体识别系统倾向于将"10 years in jail"分成"10 years"和"jail"。如果先识别出"Hanh"在Sentence事件中担任Defendant的角色,则系统就会有更高的置信度将"10 years in jail"看成一个整体的元素。基于pipeline的模型捕获不到这种互相依赖的关系。

2)联合学习
也有一些联合的事件抽取模型,但是那些方法还是遵循了pipeline框架:首先从文本中预测触发词和实体,然后为触发词分配元素(arguments)。编码的顺序为: 。
然而,我们希望的是将图1中的触发词和元素结构看成一个完整的图,在不单独预测触发词和实体的条件下,对其结构进行预测,从而最大限度地利用交互信息。
(2)作者提出
使用transition-based的框架,通过使用递增的output-building行为的state-transition过程,构建一个复杂的输出结构。
transition-based的方法已经应用在了句法分析和语义分析等多个NLP任务中,并且有着很好的效果。
作者设计了一个transition系统以解决EE问题,从左至右递增地构建出图1中的结构,不使用可分的子任务结构。
在ACE2005数据集上进行实验,证明了方法的有效性。本文还是第一个使用transition-based模型,以用于实体和事件的联合抽取任务的研究。模型实现了对3个子任务完全的联合解码,实现了更好的信息组合。
3 模型
输入:是一个句子,表示成单词序列
输出包括:
- 实体集合 ;
- 事件触发词集合 ;
- 在实体上的事件元素集合 。
3.1 挑战
转换(transition)系统是为构建语义依赖解析和关系抽取的输出结构而设计的。但是现有的转换系统不能直接应用于本文的任务,有以下几个原因:
(1)一个事件触发词可能和多个实体相关;
(2)一个实体可能参与到多个事件中;
(3)实体间以及实体和触发词的重叠问题也给转换系统带来了挑战。
作者设计了一个新的转换系统以处理这些挑战。
3.2 转换系统
(1)一些定义
给定一个句子, 表示单词, 表示触发词, 表示实体。令元素(element) 表示一个触发词 或一个实体 。
转换状态定义为 。
- 是一个栈,维护处理过的elements;
- 是一个队列,维护暂时从 中pop出的elements,未来还会push回栈;
- 是一个栈,储存了部分实体;
- 是一个缓冲区,维护未被处理的单词;
- 和 分别是有标签的trigger arcs和entity mention arcs;
- 是argument role arcs组成的集合;
- 是一个变量,每次只提及一个element ;
- 是一个栈,用于存储历史的行为。
在状态转换时,arcs只在变量 和 的栈顶元素 间生成。
转换行为总结为表1所示:

前五个行为是用于生成元素角色(argument roles)的。
特别地, 在 和 间添加arc, 在 和 间添加arc。若 和 间没有语义角色,则有NO-PASS。
当 中没有elements时,进行SHIFT或DUAL-SHIFT。为了处理当一个单词是触发词且是一个实体的首个单词情况,DUAL-SHIFT复制了 中的触发词并将其push到 中。
DELETE是将 顶部的单词 pop出来;TRIGGER-GEN从 中移出 到 ,并添加了事件标签 。
最后的三个操作是用来识别嵌套的实体的,其中ENTITY-SHIFT将 顶部的单词 移动到 ;ENTITY-GEN将 中所有elements总结为一个向量表示,添加一个实体标签 ,并将表示移动到 ;ENTITY-BACK pop出 中的所有单词,并将除了底部单词外的所有单词push回 。这样的设计可以处理任意类型的嵌套实体。
给定某一转换状态,只有一部分的行为是合法的,可以生成一个合理的图结构。表2中就是预先定义好的行为。
为了以恰当的顺序进行这三个子任务,作者预先设计了所有的行为,而不是根据 的状态进行DELETE。例如,若 为Null,则只允许和argument有关的行为。此外,在解码状态,作者还在实体和触发词间添加了类型限制,例如Divorce事件只能在PER类型的实体上发生。
图1中句子对应的标准的转换序列,如表3所示。其中,初始状态为 ,终止状态为 。

3.3 方法
使用神经网络学习到转换状态的稠密表示,用于预测下一动作。
(1)输入的表示
单词 的表示,有4中类型的向量拼接而成:

其中, 是使用预训练的Glove得到的词嵌入; 是随机初始化的POS标签嵌入;对于第 个单词, 表示使用Bi-LSTM学习得到的字符级别的表示; 表示使用BERT模型得到的包含上下文信息的嵌入。
为了捕获到输入句中的语义特征,作者使用了2层LSTM对 进行编码,使得模型捕获到单词间的长期依赖:

然后拼接前向和后向的表示,得到 。
(2)状态的表示
将所有输入单词push到缓冲区(buffer) ,作为对其的初始化。为了表示栈 ,作者使用了StackLSTM。通过维护一个栈指针,StackLSTM允许elements从序列中pop出来。栈 在第 步的状态计算如下:

其中 为进行ENTITY-GEN或TRIGGER-GEN时,进行计算的当前识别的实体或触发词。使用以下两个函数递归地将实体和触发词的标签信息整合到转换系统中:

其中 和#W_{t, \lambda} l{entity}_t$和$l{trigger}_t e_i h_i$的类型向量。
注意,对argument roles也使用这样的函数,只不过此处省略了。

最终,如图2所示,将模型在 时的状态,以及 和 表示成:

3.4 动作预测
为了预测第 步的动作,首先使用全连接层将状态表示 压缩到一个低维向量 中,然后使用softmax输出层计算动作概率:

其中, 表示可学习的参数矩阵; 表示对于转换动作 的可学习的列向量, 是对应的偏置项; 是有效的候选动作集合。贪婪地选取最大的 对应的动作,以实现动作序列的概率最大化。
3.5 训练
将一组训练数据中真实的输出结构转换为transition actions的序列。对于每个转换状态,最小化如下的损失函数:

其中 是真实的动作序列的大小, 是网络的参数, 是 正则项; 是式(1)和式(2)中的参数。
4 实验
(1)数据集:ACE2005
(2)实验任务:事件抽取,实体抽取,事件触发词分类
(3)实验结果
事件抽取结果如下:

实体抽取实验结果如下:

事件触发词分类结果如下:

5 总结
本文提出了一个transition-based的模型,用于联合预测出嵌套的实体,事件触发词以及它们在事件抽取中对应的语义角色。
与以往的在多个步骤或多个分离的任务中进行实体和事件检测的方法不同,本文的方法捕获了实体和事件间的结构依赖信息(by using a incremental left to right reading order)。
在ACE2005数据集上进行了实验,本文的方法实现了state-of-the-art。
转载:https://blog.csdn.net/byn12345/article/details/105741623