論文筆記之《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描述了論元分類的模型結構,主要包含了以下四個組件:
- 詞嵌入學習,以一個無監督的方式學習到單詞的嵌入向量。
2) 詞匯級特征表示,利用詞嵌入向量捕獲詞匯特征信息
3) 句子級特征抽取,利用DMCNN模型學習句子的上下文語義特征。
4) 論元分類器輸出,計算論元可能所屬的每個候選論元角色的置信度得分。
接下來詳細介紹上述4個模型組件。
2.1 詞嵌入學習和詞匯級特征表示
詞匯級特征是事件抽取中至關重要的線索信息。傳統提取詞匯特征的方法難以取得令人滿意的結果。隨著今年來詞嵌入方法的提出,人們發現詞嵌入可以很好的從大量無監督數據中捕獲到每個單詞的語義信息。因此本文以預訓練的詞嵌入向量為基礎,從中選擇候選單詞的詞向量,以及候選單詞上下文的詞向量,將這些所有向量進行拼接以得到整體的詞匯級特征向量。其中候選單詞指的是待分類的單詞,上下文指的是候選單詞左邊的詞語和候選單詞右邊的詞語,而用於構建詞嵌入向量的方法是Skip-gram模型。
2.2 句子級特征抽取
帶有最大池化層的CNN是一個捕獲句子中長距離語義信息的很好的選擇。但是,正如上文所說的那樣,傳統CNN模型沒有辦法處理事件抽取任務中,一個句子包含多個事件的情況。為了更好地解決這種問題,文章提出了DMCNN模型去抽取句子特征信息。相較於傳統CNN模型,DMCNN模型將最大池化層改進為動態多池化層,這樣能夠捕獲到句子中不同部分的最重要的信息,而不是只捕獲全局最重要的信息。其中句子的每個部分是依據事件觸發詞和事件論元所在的位置動態地劃分(即把一個句子分為三個部分)。
首先介紹DMCNN模型的輸入,雖然本任務從本質上屬於多分類任務,但是在模型的輸入上有很大的不同。傳統的分類模型,只需要將句子的詞嵌入矩陣作為輸入,模型對於句子中的每個單詞再輸入階段都是無差別對待的。而對於本任務來說,希望識別句子中某一單詞的在某一事件中的具體角色,某一單詞指的就是實體論元,某一事件指的是事件觸發詞所對應的事件類型,所以DMCNN模型再輸入階段應該區別對待論元單詞與事件觸發詞。如果不引入這種輸入信息,對於同一個句子,它對應的類別永遠是同一個,這不符合事件抽取任務的需求。基於這種考慮,DMCNN所使用的輸入信息有:
1) 上下文單詞特征(CWF, Context Word Feature):將整個句子中的所有單詞看作上下文,因此CWF就是每個單詞的詞嵌入向量。
2) 位置特征(PF, Postion Feature):在論元分類任務中,強調句子中哪些單詞是觸發詞或候選論元是十分重要的。因此在輸入中添加位置信息,表示每個單詞分別與觸發詞、候選論元的相對距離。為了編碼位置特征,每個距離數值都被表示為一個嵌入向量。這個向量在網絡中隨機初始化,並通過網絡的反響傳播進行優化。
3) 事件類型特征(EF,Event-type Feature):在論元分類任務中,觸發詞所屬的事件類型也是十分重要的,因此我們在觸發詞分類任務中,對事件類型進行編碼,並將其應用於論元分類任務中。
在實際的網絡構建過程中,我們將每個單詞的詞嵌入向量、與觸發詞相對距離向量、與候選論元相對距離向量、事件類型向量進行級聯。將四個向量拼成一個長向量,作為單詞的最終表示。
2.3 卷積
卷積層的目標是捕獲整個句子的語義信息,並通過特征圖語義信息進行壓縮。通常來講,令表示單詞的級聯矩陣。一個卷積操作包含一個過濾器,是過濾器的維度大小,是每個單詞的向量維度。過濾器的維度大小也就是卷積操作的窗口大小,由個單詞共同計算出一個新的特征向量,計算公式如下:
其中是偏置,為實數。是非線性函數。通過窗口移動,是的該操作對每個單詞都執行一遍。
實際情況當然不可能只使用一個過濾器,一般用多個過濾器去獲取不同層面的特征值,需要註意的是這些過濾器的窗口大小是相同的。我們使用了個過濾器,因此最後生成的特征矩陣。
2.4 動態多池化
如前文所說,為了能夠抽取句子中的不同部分的重要信息,本文設計了一個動態多池化層。因為在事件抽取任務中,一個句子可能包含多個事件,並且一個候選論元相對於不同觸發詞可能扮演不同的角色。為了得到一個更加準確的預測,應該讓模型捕獲到觸發詞、候選詞變化的信息。因此在論元分類任務中,我們將卷積得到的特征圖分為三個部分,按照觸發詞、候選論元所在的位置進行切分。之後使用每個部分的特征最大值作為最終提取的特征,而不是像max-pooling那樣使用一個全局最大值表示整個句子的特征,這樣可以避免丟失掉很多對事件抽取任務有幫助的信息。
從數學的角度上講,另一個特征向量為,根據觸發詞、候選論元所在位置,將其劃分三段特征向量,,,然後進行如下的動態多池化操作,其中:
之後我們將生成的,,級聯,得到新的向量,把其看作為句子級別的高層次特征表示。
2.5 輸出
通過上述三個組件,我們已經得到了每個單詞的詞匯級特征和句子級特征,將這兩個特征向量進行級聯,得到了每個單詞的最終表示向量,之後通過常用的全連接層進行分類。類別數量是所有論元角色的數量,包括None角色。
通過上述流程,我們描述了第二階段任務——論元分類的整個模型結構,現在介紹一下第一階段任務——觸發詞分類的模型結構的不同之處。
對於第一階段任務,只需要找到句子中的觸發詞即可,任務難度較低,因此我們采用一個簡化版的DMCNN。首先我們只使用觸發詞與其左邊和右邊的單詞構建詞匯級特征,在提取句子級上下文特征時,使用和論元分類相同的處理方式,不過只根據候選觸發詞的位置,將句子切分為兩個部分。之後的處理流程完全相同,都是當作一個分類任務處理。
2.6 實驗
本文使用ACE2005語料庫作為實驗數據。根據前人的工作,采用如下標準來衡量預測結果:
1) 如果事件類型與候選觸發詞在句子中的偏移量正確,則認為觸發詞識別正確。
2) 如果事件類型和候選論元在句子中的偏移量正確,則認為論元識別正確。
3) 如果事件類型、候選論元偏移量和論元角色正確,則認為論元正確分類。
使用準確率、召回率、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模型取得了最好的效果。其他模型有的引入了人工編寫的特征,而本模型的特征全部由模型自動抽取得到的,這也從另一方面證明的該模型抽取的特征有一定的實際意義。
表1 實驗結果
這篇文章提出了一個新穎的事件抽取方法,能夠不借助其他復雜的NLP工具,自動從原文本中抽取詞匯級與句子級的特征。利用詞嵌入模型的組合捕獲詞匯級特征,利用DMCNN模型編碼句子級語義信息。通過實驗可以證明該方法是十分有效的。
論文筆記之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》