本文將事件抽取任務定義爲包含兩個階段的多分類任務。第一個階段是觸發詞分類,利用DMCNN模型對句子中的每一個單詞進行識別,判斷是否爲觸發詞。若是一個句子中包含了觸發詞,那麼開始執行第二個階段;第二個階段是論元分類,這裏使用了類似的DMCNN模型,對句字中除了觸發詞之外的全部實體論元進行判別,識別出與該觸發詞存在關係的論元以及該論元所扮演的論元角色。因爲這兩個階段的模型結構基本相同,前者是後者的簡化版本,所以對第二階段的模型進行詳細介紹,以後闡述第一階段模型對第二階段模型的不一樣之處。算法
圖1-論元分類模型結構
網絡
接下來詳細介紹上述4個模型組件。函數
帶有最大池化層的CNN是一個捕獲句子中長距離語義信息的很好的選擇。可是,正如上文所說的那樣,傳統CNN模型沒有辦法處理事件抽取任務中,一個句子包含多個事件的狀況。爲了更好地解決這種問題,文章提出了DMCNN模型去抽取句子特徵信息。相較於傳統CNN模型,DMCNN模型將最大池化層改進爲動態多池化層,這樣可以捕獲到句子中不一樣部分的最重要的信息,而不是隻捕獲全局最重要的信息。其中句子的每一個部分是依據事件觸發詞和事件論元所在的位置動態地劃分(即把一個句子分爲三個部分)。工具
首先介紹DMCNN模型的輸入,雖然本任務從本質上屬於多分類任務,可是在模型的輸入上有很大的不一樣。傳統的分類模型,只須要將句子的詞嵌入矩陣做爲輸入,模型對於句子中的每一個單詞再輸入階段都是無差異對待的。而對於本任務來講,但願識別句子中某一單詞的在某一事件中的具體角色,某一單詞指的就是實體論元,某一事件指的是事件觸發詞所對應的事件類型,因此DMCNN模型再輸入階段應該區別對待論元單詞與事件觸發詞。若是不引入這種輸入信息,對於同一個句子,它對應的類別永遠是同一個,這不符合事件抽取任務的需求。基於這種考慮,DMCNN所使用的輸入信息有:學習
上下文單詞特徵(CWF, Context Word Feature):將整個句子中的全部單詞看做上下文,所以CWF就是每一個單詞的詞嵌入向量。測試
位置特徵(PF, Postion Feature):在論元分類任務中,強調句子中哪些單詞是觸發詞或候選論元是十分重要的。所以在輸入中添加位置信息,表示每一個單詞分別與觸發詞、候選論元的相對距離。爲了編碼位置特徵,每一個距離數值都被表示爲一個嵌入向量。這個向量在網絡中隨機初始化,並經過網絡的反響傳播進行優化。優化
事件類型特徵(EF,Event-type Feature):在論元分類任務中,觸發詞所屬的事件類型也是十分重要的,所以咱們在觸發詞分類任務中,對事件類型進行編碼,並將其應用於論元分類任務中。編碼
在實際的網絡構建過程當中,咱們將每一個單詞的詞嵌入向量、與觸發詞相對距離向量、與候選論元相對距離向量、事件類型向量進行級聯。將四個向量拼成一個長向量,做爲單詞的最終表示。spa
卷積層的目標是捕獲整個句子的語義信息,並經過特徵圖語義信息進行壓縮。一般來說,\(x _ { i : i + j }\)令表示單詞\(x _ { i } , \quad x _ { i + 1 } , \quad \ldots , \quad x _ { i + j }\)的級聯矩陣。一個卷積操做包含一個過濾器w \in \mathbb { R } ^ { h \times d },\(h\)是過濾器的維度大小,\(d\)是每一個單詞的向量維度。過濾器的維度大小也就是卷積操做的窗口大小,由\(h\)個單詞共同計算出一個新的特徵向量\(c_i\),計算公式以下:
\[c _ { i } = f \left( w \cdot x _ { i : i + h - 1 } + b \right)\]設計
其中\(b\)是偏置,爲實數。\(f\)是非線性函數。經過窗口移動,是的該操做對每一個單詞都執行一遍。
實際狀況固然不可能只使用一個過濾器,通常用多個過濾器去獲取不一樣層面的特徵值,須要注意的是這些過濾器的窗口大小是相同的。咱們使用了個過濾器,所以最後生成的特徵矩陣\(C \in \mathbb { R } ^ { m \times ( n - h + 1 ) }\)。
如前文所說,爲了可以抽取句子中的不一樣部分的重要信息,本文設計了一個動態多池化層。由於在事件抽取任務中,一個句子可能包含多個事件,而且一個候選論元相對於不一樣觸發詞可能扮演不一樣的角色。爲了獲得一個更加準確的預測,應該讓模型捕獲到觸發詞、候選詞變化的信息。所以在論元分類任務中,咱們將卷積獲得的特徵圖分爲三個部分,按照觸發詞、候選論元所在的位置進行切分。以後使用每一個部分的特徵最大值做爲最終提取的特徵,而不是像max-pooling那樣使用一個全局最大值表示整個句子的特徵,這樣能夠避免丟失掉不少對事件抽取任務有幫助的信息。
以後咱們將生成的\(p _ { i 1 } , \quad p _ { i 2 } , \quad p _ { i 3 }\)級聯,獲得新的向量\(\mathrm { P } \in \mathbb { R } ^ { 3 m }\),把其看做爲句子級別的高層次特徵表示。
經過上述三個組件,咱們已經獲得了每一個單詞的詞彙級特徵\(L\)和句子級特徵\(P\),將這兩個特徵向量進行級聯,獲得了每一個單詞的最終表示向量\(F = [ L , P ]\),以後經過經常使用的全鏈接層進行分類。類別數量是全部論元角色的數量,包括None角色。
經過上述流程,咱們描述了第二階段任務——論元分類的整個模型結構,如今介紹一下第一階段任務——觸發詞分類的模型結構的不一樣之處。
對於第一階段任務,只須要找到句子中的觸發詞便可,任務難度較低,所以咱們採用一個簡化版的DMCNN。首先咱們只使用觸發詞與其左邊和右邊的單詞構建詞彙級特徵\(L\),在提取句子級上下文特徵時,使用和論元分類相同的處理方式,不過只根據候選觸發詞的位置,將句子切分爲兩個部分。以後的處理流程徹底相同,都是看成一個分類任務處理。
本文使用ACE2005語料庫做爲實驗數據。根據前人的工做,採用以下標準來衡量預測結果:
若是事件類型與候選觸發詞在句子中的偏移量正確,則認爲觸發詞識別正確。
若是事件類型和候選論元在句子中的偏移量正確,則認爲論元識別正確。
若是事件類型、候選論元偏移量和論元角色正確,則認爲論元正確分類。
使用準確率、召回率、F1值做爲評價指標。
在觸發詞分類任務中,卷積操做的過濾器窗口大小爲3,過濾器數量爲200,batch size大小爲170,位置特徵PF的維度爲5。在論元分類任務中,過濾器窗口大小爲3,過濾器數量爲300,batch size大小爲20,位置特徵PF和事件類型特徵EF的維度都爲5。訓練過程當中使用Adadelta做爲優化器,dropout的大小爲0.5。詞嵌入向量使用Skig-gram算法在NYT語料庫上訓練。
表1記錄了本文提出的DMCNN模型在測試數據集上的效果。從結果能夠看出,與其餘模型相比DMCNN模型取得了最好的效果。其餘模型有的引入了人工編寫的特徵,而本模型的特徵所有由模型自動抽取獲得的,這也從另外一方面證實的該模型抽取的特徵有必定的實際意義。