[中文事件抽取] 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)

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