论文题目:Event Detection with Trigger-Aware Lattice Neural Network
论文来源:EMNLP 2019 清华
论文链接:https://www.aclweb.org/anthology/D19-1033/
代码链接:https://github.com/thunlp/TLNN
关键词:事件检测,word-trigger不匹配,trigger多义,LSTM
本文解决的是事件检测问题(ED),ED的目的是在文本中识别出事件触发词并将其分类成正确的事件类型。
对于ED任务,基于神经网络的方法已经成为主流。但是对于没有分隔符的语言,例如中文,就会面临两个问题:
(1)基于单词的模型存在严重的word-trigger不匹配问题,限制了模型的性能;
(2)即使能够准确定位trigger,一词多义现象的存在仍会影响到trigger分类的性能。
为了同时解决这两个问题,本文提出TLNN模型(Trigger-aware Lattice Neural Network):
(1)模型可以动态地合并词和字符信息,从而避免trigger-word不匹配问题;
(2)对于多义的字或词,使用外部语言知识库对它的所有含义进行建模。
实验结果显示,本文的模型有效地处理了上述两个问题,并超越了state-of-the-art。
事件检测分为两个子任务:触发词识别(TI)和触发词分类(TC)。这两个子任务分别面临着一个挑战:
(1)trigger-word不匹配问题(TI)
主流的方法大多是基于单词的,对于没有天然分隔符的语言(例如中文),分词操作是一项关键的预处理步骤。但是这些基于单词的方法忽视了一个重要的问题:触发词可能是一个词的一部分或者包含多个词。
例如图1 a所示,“射杀”虽然是一个词,但“射”和“杀”是两个触发词。;“示威游行”是由两个词组成的一个触发词。在这种情况下基于单词的方法不能准确识别出触发词。
(2)一词多义问题(TC)
有多种含义的触发词会被分成不同的事件类别。如图1 b所示,“释放”可以表示两种完全不同的事件类型:Attack和Release-Parole。
表1展示了ACE 2005和KBP 2017数据集在上述两种问题上的统计结果:
可以看出trigger-word不匹配和一词多义问题在两个数据集中均占据了不小的比重。
本文提出TLNN模型同时解决上述两个问题。
为了避免NLP分词工具带来的误差传播,作者使用字符作为输入序列的基本单元。
另外,还使用了HowNet作为外部知识库,对多义的中英文词汇进行标注,以获得sense-level的信息。
然后,作者设计了trigger-aware lattice LSTM作为模型的特征提取器,并同时利用到了character-level, word-level, sense-level的信息。
为了解决trigger-word不匹配问题,作者对每个单词使用short cut paths连接起始字符和结束字符的cell state。注意此处的paths是sense-level的,也就是说以特定字符作为结尾的词的所有词义信息,将会流入到该字符的memory cell中。由于利用了不同粒度的信息(character, word, sense),一词多义问题可以较好地缓解。
本文将ED任务看成是序列标注任务,对于每个字符,模型应该能识别出它是否是触发词的一部分,并将触发词正确分类。
模型的结构如图2所示:
模型由3个部分组成:
(1)分级的表示学习(Hierarchical Representation Learning),以无监督的方式学习到character, word和sense级别的嵌入向量;
(2)触发词感知的特征抽取(Trigger-aware Feature Extractor),使用树结构的LSTM模型,自动抽取出不同级别的语义特征;
(3)序列标注(Sequence Tagger),对每个候选的字符计算其是触发词的概率。
(1)字符级别(character level)
给定输入序列 S = { c 1 , c 2 , . . . , c N } S={\{c_1, c_2, ..., c_N}\} S={c1,c2,...,cN}, c i c_i ci代表序列中的第 i i i个字符。使用Skip-Gram方法,为每个字符生成嵌入向量:
(2)词级别(word level)
给定输入序列 S = { w 1 , w 2 , . . . , w M } S={\{w_1, w_2, ..., w_M}\} S={w1,w2,...,wM}, w i w_i wi表示第 i i i个词。使用 b b b和 e e e两个下标表示一个词的起始和结束,词嵌入为:
(3)词义级别(sense level)
然而,Skip-Gram方法将每个词仅仅映射成了一个嵌入,忽视了多义词的存在。好的表示应该能表示更深的语义信息。因此,作者使用了HowNet作为外部知识库,得到字符或词的多义信息。
对于每个字符 c c c和每个词 w w w,在HowNet上可能被标注上了多种意思: s e n ( c i ) ∈ S ( c ) sen^{(c_i)}\in S^{(c)} sen(ci)∈S(c), s e n ( w i ) ∈ S ( w ) sen^{(w_i)}\in S^{(w)} sen(wi)∈S(w)。因此,可以通过使用Skip-gram联合学习word embedding和sense embedding得到senses的嵌入。
其中, s e n j ( c i ) sen^{(c_i)}_j senj(ci)和 s e n j ( w b , e ) sen^{(w_{b, e})}_j senj(wb,e)分别表示字符 c i c_i ci和词 w b , e w_{b, e} wb,e的第 j j j个sense。 s j c i s^{c_i}_j sjci和 s j w b , e s^{w_{b, e}}_j sjwb,e表示 c i c_i ci和 w b , e w_{b, e} wb,e的嵌入。
这一模块是模型的核心部分。训练结束后,抽取器输出的是输入句子的hidden state向量 h \mathbf{h} h。
(1)常见的LSTM
LSTM在RNN上增加了门(gates)来控制信息:1)输入门 i i i;2)输出门 o o o;3)遗忘门 f f f。这些门共同控制了哪些信息要保留、遗忘和输出,并且三个门都有相对应的权重矩阵。当前的cell state c c c记录了所有流到当前时间的历史信息。因此,基于字符级别的LSTM函数如下:
(2)Trigger-Aware Lattice LSTM
是LSTM和lattice LSTM的扩展。
假定字符和词有 K K K个含义,第 i i i个字符 c i c_i ci的第 j j j个含义的嵌入为 s j c i s^{c_i}_j sjci。
1)整合字符的多义信息
使用附加的LSTMCell整合字符的所有含义,因此多义字符 c i c_i ci的cell gate计算如下:
其中, c j c i c^{c_i}_j cjci表示第 i i i个字符的第 j j j个含义的cell state, c c i − 1 c^{c_i-1} cci−1是第 i − 1 i-1 i−1个字符最终的cell state。为了得到字符的cell state,要使用一个附加的字符含义门(character sense gate):
然后所有的含义需要被动态整合到一个临时的cell state,如下所示。其中,其中 α j c i \alpha^{c_i}_j αjci是归一化后的字符含义门。
2)整合词的多义信息
式(11)通过合并字符所有的含义信息,得到了临时的cell state c ∗ c i c^{*c_i} c∗ci。但是,还需要考虑词级别(word level)的信息, s j w b , e s^{w_{b, e}}_j sjwb,e表示词 w b , e w_{b, e} wb,e的第 j j j个含义的嵌入。
和字符类似,使用LSTMCell计算每个单词的cell state:
和式(10)~(12)类似,整合所有senses的cells信息,得到词的cell state:
3)合并字符信息和词信息
对于字符 c i c_i ci,临时的cell state c ∗ c i c^{*c_i} c∗ci包含了所有sense的信息。通过式(16)也可以计算出所有以索引 i i i结尾的词的cell states,记为 { c w b , i ∣ b ∈ [ 1 , i ] , w b , i ∈ D } {\{c^{w_{b, i}} | b\in [1, i], w_{b, i}\in \mathbb{D}}\} {cwb,i∣b∈[1,i],wb,i∈D}( D \mathbb{D} D表示词典)。
为了保证对应的信息可以流到 c i c_i ci最终的cell state,使用一个额外的门 g b , i m g^m_{b, i} gb,im整合字符cells和词cells:
字符 c i c_i ci最终的cell state计算如下,其中 α w b , i \alpha^{w_{b, i}} αwb,i和 α c i \alpha^{c_i} αci分别是word gate和character gate归一化后的值:
因此,最终的cell state c c i c^{c_i} cci可以动态地表示多义的字符和词。如式(7)所示,得到的 c c i c^{c_i} cci再过一个输出门,得到输出,也就是序列标注模块的输入。
ED任务被看作是一个序列标注任务,对于输入序列 S = { c 1 , c 2 , . . . , c N } S={\{c_1, c_2, ..., c_N}\} S={c1,c2,...,cN},有一个相对应的标签序列 L = { y 1 , y 2 , . . . , y N } L={\{y_1, y_2, ..., y_N}\} L={y1,y2,...,yN}。每个字符对应的隐层向量 h \mathbf{h} h作为输入,使用CRF层来进行序列标注,概率分布计算如下:
S S S是打分函数,计算从 h i h_i hi到标签 y i y_i yi的发射分数(emission score )。 W C R F y i W^{y_i}_{CRF} WCRFyi和 b C R F y i b^{y_i}_{CRF} bCRFyi是针对标签 y i y_i yi的可学习参数。
T T T是转换函数,计算从 y i − 1 y_{i-1} yi−1到 y i y_i yi的转换分数(transition score)。
C \mathbb{C} C包含了在序列 S S S上所有可能的标签序列, L ′ L^{'} L′是 m a t h b b C mathbb{C} mathbbC中随机的一个标签序列。
然后使用维特比(Viterbi)算法计算出得分最高的标签序列。
模型的损失函数如下,其中 M M M是句子数, L i L_i Li是句子 S i S_i Si实际的标签序列:
(1)数据集:ACE2005, KBP2017
(2)评价度量:Standard micro-averaged Precision,F1,Recall
(3)对比方法
(4)实验结果
1、整体效果
和其他模型相比,TLNN在两个数据集上均表现出色。这表示trigger-aware lattice structure可以提高定位触发词的准确性。由于使用了sense-level的信息,触发词的分类也更加精准。
在TI任务上,TLNN表现出了最好的效果。该模型通过用shortcut paths连接所有候选词的当前字符,有效利用了字符信息和词信息,避免了trigger-word不匹配问题。
在TC任务上,TLNN表现也是最好的。体现出了外部资源HowNet和动态利用sense-level信息的有效性。
2、触发词感知特征抽取的有效性
设计实验验证触发词感知特征抽取器的有效性。将triggeraware
lattice LSTM替换成标准的Bi-LSTM,得到基于字符和基于词的baselines。
1)对于基于词的baselines,输入是单词序列。使用额外的CNN和LSTM学习到字符级别的特征。
2)对于基于字符的baselines,输入的基本单元是字符。通过添加额外的word-level的特征(包括bigram和softword,softword指字符所位于的词),增强字符的表示,
这两类baselines都能利用到字符信息和词信息。实验比较结果如表3所示:
实验结果表明,触发词感知的特征抽取器通过动态地结合多粒度的信息,和baselines中基于特征的方法相比,可以有效地挖掘出更深层次的语义特征。
3、触发词不匹配的影响
将两个数据集分类两类:匹配和不匹配。表1展示了两个数据集word-trigger匹配和不匹配所占的比例。
不同方法在划分后的数据集上的Recall值表4所示:
4、触发词多义的影响
和NPN模型作对比,结果如表5和表6所示,TLNN - W/O Sense info表示不使用多义信息。
5、举例
本文提出TLNN模型解决ED问题,该模型可以同时解决trigger-word不匹配问题和trigger多义问题。
分层的表示学习和触发词感知的特征抽取器使得模型有效地利用了多粒度的信息,并且学习到了深层次的语义信息。多粒度体现为character-level, word-level, sense-level,具体表现为先整合字符的多义信息,再整合词的多义信息,最后将字符的信息和词的信息整合。整合的过程中使用到了LSTM和一些额外的门。
未来工作:在有天然的分隔符和没有分隔符的多语言上进行实验;设计动态的机制,对sense-level的信息进行选择,而不是直接将所有字符和词的多义信息都纳入考虑。