論文筆記之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》

1. 文章內容概述

  • 本人精讀了事件抽取領域的經典論文《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》,並做出個人讀書報告。這篇論文由中科院自動化所趙軍、劉康等人發表於ACL2015會議,提出了用CNN模型解決事件抽取任務。
  • 在深度學習沒有盛行以前,解決事件抽取任務的傳統方法,依賴於較爲精細的特徵設計已經一系列複雜的NLP工具,而且泛化能力較低。針對此類問題,這篇論文提出了一個新穎的事件抽取方法,可以在不借助NLP工具的幫助下,自動抽取詞彙級別與句子級別的特徵。該方法採用了基於CNN的神經網絡結構,對句子級別的數據進行處理。可是普通的CNN是能獲取句子最重要的信息,所以當其處理包含多個事件的句子時,會丟失掉一些重要的事實信息。基於上述考慮,這篇文章提出了一個動態多池化的卷積神經網絡(DMCNN),具體的多池化操做是對事件的觸發詞(trigger)與論元(argument)執行的,這麼作能夠保留更多的關鍵信息。
  • 事件抽取認識的目的是發現事件觸發詞和於觸發詞相關的論元。過去最好的方法是利用文本分析與語言學知識提取特徵得以實現。通常把特徵分爲詞彙特徵和上下文特徵。
  • 詞彙特徵包含了詞性、實體信息、以及形態學特徵,可以捕獲詞語所蘊含的語義特徵。本質上賦予模型更多的先驗知識,而不是將每一個詞語當作簡單的個體,那樣只可以學習到形式上的差別。
  • 上下文特徵可以考慮全局信息,將事件相關的各個論元聯繫在一塊兒,共同做爲一個事件抽取的結果,例如句法特徵。可是使用這種傳統的依存句法特徵,很難去發現目標論元,由於某些目標論元與觸發詞之間,並未存在一條邊。並且引入這種句法特徵,須要藉助於現存的NLP工具,可是這些工具生成的結果也不必定徹底正確,會引入更多的錯誤信息,形成傳播偏差。
  • 目前的研究已經證實,CNN可以有效地捕獲句子間詞語的語法信息和語義信息。典型的CNN包含了一個最大池化層,可以從整個句子的角度發現最有用的表示信息。可是,對於事件抽取而言,一個句子可能包含兩個到三個事件,同時可能有論元在不一樣的事件中扮演着不一樣的角色。若是直接使用最大池化層的話,它只會得到句子中最重要的信息,這就有可能令模型只捕獲到一個事件的關鍵信息,而丟棄掉同一個句子的不一樣事件信息。在這篇文章所採用的數據集中,大約有27.3%的句子級別數據,同時包含了多個事件信息。所以這種現象不能夠被忽略,須要設計一個新模型可以很好地解決這類問題。
  • 基於上述考慮,這篇文章提出了動態多池化卷積神經網絡(DMCNN),可以解決上述問題,在不借助複雜的NLP工具狀況下,可以捕獲句子級別的信息,而且動態地保留多個重要信息。設計一個動態多池化層,可以保留句子中各個部分的最大值,而每一個部分的劃分是由句子中觸發詞與論元的位置所決定。
  • 本事件抽取任務所採用的數據集是ACE數據,這裏介紹一下ACE數據中的一些專業術語,可以更好地理解這個任務:
    • Event mention:描述事件信息的短語或者句子,即同時包含了觸發詞和論元。
    • Event trigger: 短語或者句子中,最能表示一個事件出現的單詞,在ACE數據中,這個詞一般是動詞或名詞。
    • Event argument:短語或者句子中,包含的實體、時間表達式、或者數值。
    • Argument role: 一個論元在事件中扮演的角色。
  • 從上述術語定義中能夠發現,事件抽取依賴於名實體識別的結果,而名實體識別是ACE評測中另外一個比較困難的任務,並不包含於事件抽取任務中。所以這篇文章直接使用了句子中的實體標註結果,只關注於實現事件抽取模型。

2. 閱讀評述

  • 本文將事件抽取任務定義爲包含兩個階段的多分類任務。第一個階段是觸發詞分類,利用DMCNN模型對句子中的每一個單詞進行識別,判斷是否爲觸發詞。若是一個句子中包含了觸發詞,那麼開始執行第二個階段;第二個階段是論元分類,這裏使用了類似的DMCNN模型,對句字中除了觸發詞之外的全部實體論元進行判別,識別出與該觸發詞存在關係的論元以及該論元所扮演的論元角色。因爲這兩個階段的模型結構基本相同,前者是後者的簡化版本,所以對第二階段的模型進行詳細介紹,以後闡述第一階段模型對第二階段模型的不一樣之處。算法

  • 圖1-論元分類模型結構
    網絡

  • 圖1描述了論元分類的模型結構,主要包含了如下四個組件:
    • 詞嵌入學習,以一個無監督的方式學習到單詞的嵌入向量。
    • 詞彙級特徵表示,利用詞嵌入向量捕獲詞彙特徵信息
    • 句子級特徵抽取,利用DMCNN模型學習句子的上下文語義特徵。
    • 論元分類器輸出,計算論元可能所屬的每一個候選論元角色的置信度得分。
  • 接下來詳細介紹上述4個模型組件。函數

2.1 詞嵌入學習和詞彙級特徵表示

  • 詞彙級特徵是事件抽取中相當重要的線索信息。傳統提取詞彙特徵的方法難以取得使人滿意的結果。隨着今年來詞嵌入方法的提出,人們發現詞嵌入能夠很好的從大量無監督數據中捕獲到每一個單詞的語義信息。所以本文以預訓練的詞嵌入向量爲基礎,從中選擇候選單詞的詞向量,以及候選單詞上下文的詞向量,將這些全部向量進行拼接以獲得總體的詞彙級特徵向量。其中候選單詞指的是待分類的單詞,上下文指的是候選單詞左邊的詞語和候選單詞右邊的詞語,而用於構建詞嵌入向量的方法是Skip-gram模型。

2.2 句子級特徵抽取

  • 帶有最大池化層的CNN是一個捕獲句子中長距離語義信息的很好的選擇。可是,正如上文所說的那樣,傳統CNN模型沒有辦法處理事件抽取任務中,一個句子包含多個事件的狀況。爲了更好地解決這種問題,文章提出了DMCNN模型去抽取句子特徵信息。相較於傳統CNN模型,DMCNN模型將最大池化層改進爲動態多池化層,這樣可以捕獲到句子中不一樣部分的最重要的信息,而不是隻捕獲全局最重要的信息。其中句子的每一個部分是依據事件觸發詞和事件論元所在的位置動態地劃分(即把一個句子分爲三個部分)。工具

  • 首先介紹DMCNN模型的輸入,雖然本任務從本質上屬於多分類任務,可是在模型的輸入上有很大的不一樣。傳統的分類模型,只須要將句子的詞嵌入矩陣做爲輸入,模型對於句子中的每一個單詞再輸入階段都是無差異對待的。而對於本任務來講,但願識別句子中某一單詞的在某一事件中的具體角色,某一單詞指的就是實體論元,某一事件指的是事件觸發詞所對應的事件類型,因此DMCNN模型再輸入階段應該區別對待論元單詞與事件觸發詞。若是不引入這種輸入信息,對於同一個句子,它對應的類別永遠是同一個,這不符合事件抽取任務的需求。基於這種考慮,DMCNN所使用的輸入信息有:學習

    • 上下文單詞特徵(CWF, Context Word Feature):將整個句子中的全部單詞看做上下文,所以CWF就是每一個單詞的詞嵌入向量。測試

    • 位置特徵(PF, Postion Feature):在論元分類任務中,強調句子中哪些單詞是觸發詞或候選論元是十分重要的。所以在輸入中添加位置信息,表示每一個單詞分別與觸發詞、候選論元的相對距離。爲了編碼位置特徵,每一個距離數值都被表示爲一個嵌入向量。這個向量在網絡中隨機初始化,並經過網絡的反響傳播進行優化。優化

    • 事件類型特徵(EF,Event-type Feature):在論元分類任務中,觸發詞所屬的事件類型也是十分重要的,所以咱們在觸發詞分類任務中,對事件類型進行編碼,並將其應用於論元分類任務中。編碼

  • 在實際的網絡構建過程當中,咱們將每一個單詞的詞嵌入向量、與觸發詞相對距離向量、與候選論元相對距離向量、事件類型向量進行級聯。將四個向量拼成一個長向量,做爲單詞的最終表示。spa

2.3 卷積

  • 卷積層的目標是捕獲整個句子的語義信息,並經過特徵圖語義信息進行壓縮。一般來說,\(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 ) }\)

2.4 動態多池化

  • 如前文所說,爲了可以抽取句子中的不一樣部分的重要信息,本文設計了一個動態多池化層。由於在事件抽取任務中,一個句子可能包含多個事件,而且一個候選論元相對於不一樣觸發詞可能扮演不一樣的角色。爲了獲得一個更加準確的預測,應該讓模型捕獲到觸發詞、候選詞變化的信息。所以在論元分類任務中,咱們將卷積獲得的特徵圖分爲三個部分,按照觸發詞、候選論元所在的位置進行切分。以後使用每一個部分的特徵最大值做爲最終提取的特徵,而不是像max-pooling那樣使用一個全局最大值表示整個句子的特徵,這樣能夠避免丟失掉不少對事件抽取任務有幫助的信息。

  • 從數學的角度上講,另外一個特徵向量爲\(c_I\),根據觸發詞、候選論元所在位置,將其劃分三段特徵向量c _ { i 1 } , \quad c _ { i 2 } , \quad c _ { i 3 },而後進行以下的動態多池化操做,其中\(1 \leq j \leq 3\)
    \[p _ { i j } = \max \left( c _ { i j } \right)\]
  • 以後咱們將生成的\(p _ { i 1 } , \quad p _ { i 2 } , \quad p _ { i 3 }\)級聯,獲得新的向量\(\mathrm { P } \in \mathbb { R } ^ { 3 m }\),把其看做爲句子級別的高層次特徵表示。

2.5 輸出

  • 經過上述三個組件,咱們已經獲得了每一個單詞的詞彙級特徵\(L\)和句子級特徵\(P\),將這兩個特徵向量進行級聯,獲得了每一個單詞的最終表示向量\(F = [ L , P ]\),以後經過經常使用的全鏈接層進行分類。類別數量是全部論元角色的數量,包括None角色。

  • 經過上述流程,咱們描述了第二階段任務——論元分類的整個模型結構,如今介紹一下第一階段任務——觸發詞分類的模型結構的不一樣之處。

  • 對於第一階段任務,只須要找到句子中的觸發詞便可,任務難度較低,所以咱們採用一個簡化版的DMCNN。首先咱們只使用觸發詞與其左邊和右邊的單詞構建詞彙級特徵\(L\),在提取句子級上下文特徵時,使用和論元分類相同的處理方式,不過只根據候選觸發詞的位置,將句子切分爲兩個部分。以後的處理流程徹底相同,都是看成一個分類任務處理。

2.6 實驗

  • 本文使用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-實驗結果
  • 表1記錄了本文提出的DMCNN模型在測試數據集上的效果。從結果能夠看出,與其餘模型相比DMCNN模型取得了最好的效果。其餘模型有的引入了人工編寫的特徵,而本模型的特徵所有由模型自動抽取獲得的,這也從另外一方面證實的該模型抽取的特徵有必定的實際意義。

3. 總結

  • 這篇文章提出了一個新穎的事件抽取方法,可以不借助其餘複雜的NLP工具,自動從原文本中抽取詞彙級與句子級的特徵。利用詞嵌入模型的組合捕獲詞彙級特徵,利用DMCNN模型編碼句子級語義信息。經過實驗能夠證實該方法是十分有效的。
相關文章
相關標籤/搜索