[中文事件抽取] Nugget Proposal Networks for Chinese Event Detection

ACL2018 Nugget Proposal Networks for Chinese Event Detection
Author Lin, Hongyu and Lu, Yaojie and Han, Xianpei and Sun, Le
url https://www.aclweb.org/anthology/P18-1145.pdf
DataSet ACE2005 Chinese Corpus, KBP2017 Corpus
Code https://github.com/sanmusunrise/NPNs

基于神经网络的事件检测模型通常将事件检测视为一种按词分类的任务。但是对于没有自然分词的语言如汉语中,会存在分词结果与事件触发词不匹配的问题。本文提出了一种NPNs网络,提出了以每个字符为中心,不受单词边界限制的的trigger nuggests来解决触发词不匹配问题。具体来说,事件检测任务基于字符来完成,然后使用混合表示法首先从字符和单词中获取结构和语义信息。基于学习到的表示,利用汉语事件触发词的字符组合,得到nuggets trigger并用来分类。在ACE2005和TAC KBP 2017的数据集上的实验表明,模型具有很好的效果。

存在的问题

基於单词的事件检测模型会遇到单词触发词不匹配的问题:

  • 触发词可能是单词的一部分:
  • 触发词可能跨过多个单词
    在这里插入图片描述

本文提出的解决方案:

本文提出的NPNs网络模型,通过对字符组成结构来建模从而识别触发词。给定一个句子,NPNs模型以字符作为基本检测单元。
(1)可以利用触发词内部组成结构,根据字符得到整个可能的触发词块;
(2)从字和词两方面学习语义表示,有效地对提出的触发词块进行分类。
比如对于上面提到的(b)例子中,对于字符“伤”,我们不仅可以检测到“伤”是“Injure”触发词的一部分,还能提出整个触发词块是“受了伤”。
NPNs的主要思想是“大多数中文触发器具有规则的字符组成结构”。具体地说,大多数中文事件触发器都有一个中心字符,可以表示其事件类型。比如“枪杀”中的“杀”。此外,字符通过一些规则的组合结构被组合成一个触发词,比如manner + verb:“枪杀”、“砍杀”;verb + auxliary + noun:“受了伤”、“挨了打”。

模型结构

在这里插入图片描述
在给定句子中的一个字符的情况下,首先使用混合表示学习模块从句子的字符和单词中学习其语义表示。然后将这种混合表示方法引入到两个模块中:一个模块是trigger nugget generator,它利用字符的组成结构提出整个潜在的触发词块。一旦一个触发词被提出,则使用event type classifier来确定它的事件类型。

  • 通过直接提出以字符为中心的整个触发器块,触发器块生成器可以有效地解决单词触发器失配问题。首先以字符为单位,则不存在以单词为单位的触发词不匹配的问题。此外,通过建模和利用触发词的字符组成结构,我们的模型比传统的基于字符的模型更能容忍按字符分类的错误。
  • 通过对字符和词的信息进行综合,我们的混合表示方法可以有效地捕捉到字符内部的信息,并且能够准确地进行事件分类。比如,触发词“枪杀”的内部组成结构可以通过字符序列进行学习。此外,字符往往是有歧义的,需要结合上下文去考虑文字的语境。比如,“杀“字在”枪杀“中表示kill,而在杀青中表示complete。

1. 混合表示学习

我们提出一种混合表示法,它可以从字符和单词中总结信息。具体来说,我们首先使用token-level神经网络分别学习字符级和单词级表示,然后设计了三种混合范式来获得混合表示。

1.1. Token-level表示学习

在这里插入图片描述
使用两个token-level神经网络来分别从字符和单词中提取特征。网络结构类似DMCNN。上图是一个单词级网络的例子。
给定一个句子中的n个token t1t_1,t2t_2,…,tnt_n,以及我们所关心的token tct_c(每个字轮流作为中心词),tit_i的向量表示xix_itit_i的word embedding以及tit_itct_c的相对位置position embedding拼接而成。之后,通过卷积操作,我们可以得到一个个的卷积结果。卷积操作如下:
rij=tanh(wixj:j+h1+bi) r_{ij} = tanh(w_i \cdot x_{j:j+h-1} + b_i)
其中wiw_i代表第i个卷积核,xj:j+h1x_{j:j+h-1}xjx_jxj+h1x_{j+h−1}拼接形成的矩阵,biRb_i \in \mathbb{R}是偏置项。卷积核在嵌入矩阵上滑动进行卷积操作得到一个feature map,不同卷积核卷积之后得到多个的feature map。
随后,进行动态多池化操作,即以tct_c进行分割,将卷积结果池化为两个部分,分别对两部分做最大池化:
rileft=maxj<crijrileft=maxjcrijr_i^{left} = \max_{j<c}r_{ij};r_i^{left} = \max_{j\ge c}r_{ij}
将所有动态卷积多池化的结果拼接起来,得到Compositional Feature。将 tct_ctc1t_{c-1}tc+1t_{c+1}组合成的向量作为Lexical Feature, 并将Lexical Feature以及Compositional Feature相结合,得到最终的Token Level Feature。词级别的Token Level Feature 称为fwordf_{word},字级别的Token Level Feature 称为fcharf_{char}

1.2. 混合表示学习

得到字符级特征表示和单词级特征表示,接下来将他们组合起来得到混合表示。在此之前先使用两个全连接层将fwordf_{word}fcharf_{char}映射到同一维度dd',得到fwordf'_{word}fcharf'_{char}。接下来使用三种不同的混合表示法进行组合:
在这里插入图片描述
1)Concat Hybrid
这种方式比较简单,直接将两种表示拼接到一起
fc=fcharfword f_c = f'_{char} \oplus f'_{word}

2)General Hybrid
fwordf_{word}fcharf_{char}成比例相加,得到Hybrid Representation fGf_G
zG=s(WGHfchar+UGHfword+bGH) z_G = s(W_{GH}f'_{char} + U_{GH}f'_{word} + b_{GH}) fG=zGfchar+(1zG)fword f_G = z_Gf'_{char} + (1-z_G)f'_{word}
其中WGH,UGHRd×dW_{GH},U_{GH} \in \mathbb{R}^{d' \times d'} 为权重矩阵,bGHRdb_{GH} \in \mathbb{R}^{d'}为偏置项,s()s(\cdot)为sigmoid函数, 得到的zGz_G是一个dd'维的向量,表示fwordf_{word}fcharf_{char}对最终混合表示的贡献,

3)Task-specific Hybrid
NPNs的两个下游模块具有各自的功能,他们可能对输入的特征有不同的要求。trigger nugget generator更多地依赖字符级别的特征;单词级别的特征可能在事件类型分类器中扮演更重要的角色,因为它具有更明确的语义。
基于任务的方法分别为两个下游模块引入两个gate,其基本原理与General Hybrid类似:
zN=s(WNfchar+UNfword+bN)z_N = s(W_{N}f'_{char} + U_{N}f'_{word} + b_{N}) zT=s(WTfchar+UTfword+bT)z_T = s(W_{T}f'_{char} + U_{T}f'_{word} + b_{T}) fN=zNfchar+(1zN)fword f_N = z_Nf'_{char} + (1-z_N)f'_{word} fG=zNfchar+(1zN)fword f_G = z_Nf'_{char} + (1-z_N)f'_{word}

2. Trigger Nugget Generator

前面提到汉语事件触发词具有规则的内部结构。如果一个模型能够学习这种组成结构的规律性,就能够有效地检测出字符处的触发词块。基于卷积神经网络在学习空间和位置信息的强大能力,本文提出了基于trigger nugget generator的神经网络模型。它不仅可以预测一个字符是否属于一个触发词块,还可以指出整个触发词块。
在这里插入图片描述
上图为Trigger Nugget Generator的一个例子,其本质上是一个分类任务。给定一个输入向量fNf_N,这个向量是我们在混合表示学习中学到的,它是对整个句子的一个表征。以上图为例,该向量的中心词为”伤”,实验设置触发词长度不超过3,则共有六种包含中心词的触发词可能,加上一个NIL类代表不存在触发词,所以该模型是一个7分类问题。
如果一个候选触发词块遵循某个规则的触发词组成结构,我们希望模型能给它打一个高分。所以对于这个例子来说,”受了伤“符合”verb + auxiliary + noun“这种结构,因此它的得分也会相对来说更高。得到每个候选触发词的得分后,再使用softmax层对其进行规范化,得到一个概率。最终返回Offset =3, length =3 的类概率最高,为0.75,则触发词为 “受了伤”。

模型的结构为:输入fNf_N->全连接层->softmax

3. Event Type Classifier

一旦我们在一个字符处检测到一个事件触发词块,那么先前提取的混合特征就会被输入到神经网络分类器,从而进一步确定该触发词的具体类型。本文直接将分类分到事件的子类型,而忽略事件间的层次结构。

模型的结构:输入fNf_N->全连接层->softmax

模型训练

根据上面的描述,我们可以看出,Trigger Nugget Generator 和 Event Type Classifier之间没有特别明确的关系,二者连输入数据都不相同,那么”受了伤”这一触发词的识别是如何对”Injure”这一事件分类产生影响的?这就需要模型自身的学习,我们通过将两个功能模块进行联合学习,来使模型内部的参数θθ进行变化,使得当fNf_N中容易判断出“受了伤”的同时,fTf_T也倾向于判断事件类型为Injure。假设我们在Trigger Nugget Generator 中共有 TGT_G个样本,样本集合为 SG={(xk,ykG)k=1,2,3,...,TG}S^G = \{ (x_k, y^G_k) | k = 1,2,3,...,T^G\}, Event Type Classifier中有TCT_C个样本,SC={(xk,ykC)k=1,2,3,...,TC}S^C = \{ (x_k, y^C_k) | k = 1,2,3,...,T^C\},则有损失函数如下:
L(θ)=(xk,ykG)SGlogP(ykGxk;θ)(xk,ykC)SClogP(ykCxk;θ) L(\theta) = -\sum_{(x_k, y_k^G)\in S^G} log P(y_k^G | x_k; \theta) -\sum_{(x_k, y_k^C)\in S^C} log P(y_k^C | x_k; \theta)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章