原论文的著作权属于中科院,本文只针对原论文进行了学习及记录。
1. 前言
近几年,基于神经网络的方法在事件检测任务中占据了主导地位,通过神经网络对句子中的每一个单词进行分类,找出存在的触发词并进行分类,是英文事件检测的常见思路。但对于没有自然分割符的语言,比如中文,我们需要先进行分词,再利用上述的方法对分词后的句子进行分析和标注。这样做会导致两个问题:
1. 分词错误问题。错误的分词会在系统中产生错误传递,最终影响到系统的整体表现;
2. 触发词–单词匹配问题。这个问题又可以分成两个小问题,我们用下图加以解释:
(a) 虽然“并购”是一个词,分词没有发生错误,但“并”和“购”在此句中应该被识别为两个不同的触发词,这种问题叫做part-of-word trigger。
(b) “伤”是一个名词,无法作为trigger,但“受了伤”是中文的一种固有表达,三个单词共同组成了Injure 事件的触发词,这种问题叫做cross-words trigger。
ACE数据集以及本次试验中所使用的另一数据集Rich ERE中均存在上述问题,具体比例如下:
由于分词会导致上述两种问题的出现,一些研究人员提出不进行分词,而直接以字为单位,对句子中的每一个字进行标注。这一方法可以避免触发词–单词匹配的问题,但又会引入新的问题:字相对于词表达的信息不够完整,对句子中的所有字进行 word embedding 后再分析,往往不能充分表达句子的语义信息,使得对于同一模型,基于字的方法效果往往不如基于词的方法效果好。
2. 思路
本文提出了一个新的思路,名为Nugget Proposal Networks (NPNs) , 该模型有相较于之前的方法,做了两点创新:
第一、将单词嵌入和字嵌入得到的句子向量进行结合,得到一个包含更丰富信息的输入向量,此过程在本文中被称为 Hybrid Char-Word Representation Learning。本文对为何将单词信息和字信息结合做出了解释。首先,汉语中许多的触发词都具有内部的语言结构,例如”方法+动词”:砍杀,枪杀;或者”动词+助动词+名词”:吃了饭,睡了觉等等,这些语言结构适合从字级别的信息中学习;但同时,字级别的信息有时会导致信息不充分,比如在辨别”杀人”和“杀青”这两个触发词时,如果拥有词级别的信息,我们可以更好的对这两个词的不同进行分辨,从而避免触发词的误分类。
第二、将触发词识别和触发词分类两个功能分割开,形成两个不同的功能模块。进行触发词识别的模块被称为Trigger Nugget Generator,它通过输入的句子向量为句子选出合适的触发词;进行触发词分类的模块称为Event Type Classifier,这个模块相对来说更容易解释,它对输入的句子向量进行softmax分类,来对Trigger进行分类。整个模型的结构可以用下图表示:
3. 模型
3.1 Hybrid Representation Learning
之前我们说到,为了学习到trigger中的内部结构关系,同时充分利用词的语义信息,我们需要将词级别的特征信息和字级别的特征信息结合到一起。那么这部分的需要进行的操作就分为两步,一,特征信息抽取;二、信息融合
3.1.1 特征信息抽取
特征信息抽取使用了DMCNN这一模型(我之前写过一个DMCNN的介绍,会在之后上传),并且对于单词级别的信息抽取和字级别的信息抽取采用了相同的方法。以词级别的信息作为例子,特征信息抽取模型的结构如下:
给定一个句子中的n个token t1,t2,…,tn t 1 , t 2 , … , t n ,以及我们所关心的token tc t c , ti t i 的向量表示 xi x i 由 ti t i 的word embedding(WE)以及 ti t i 与 tc t c 的相对位置position embedding拼接而成。之后,通过卷积操作,我们可以得到一个个的卷积结果。卷积操作如下:
其中 wi w i 代表第i个卷积核, xj:j+h−1 x j : j + h − 1 是 xj x j 到 xj+h−1 x j + h − 1 拼接形成的矩阵, bi∈R b i ∈ R 是偏置项。随后,进行Dynamic Multi-Pooling操作,及以 tc t c 进行分割,将卷积结果池化为两个部分。