論文題目:Jointly Multiple Events Extraction via Attention-based Graph Information Aggregation
論文來源:EMNLP 2018
論文鏈接:https://arxiv.org/abs/1809.09078
代碼鏈接:https://github.com/lx865712528/EMNLP2018-JMEE
關鍵詞:多事件抽取,GCN,attention,句法依存結構
文章目錄
1 摘要
本文提出JMEE模型(Jointly Multiple Events Extraction),面向的應用是從一個句子中抽取出多個事件觸發器和參數(arguments)。
JMEE模型引入了syntactic shortcut arcs來增強信息流並且使用基於attention的GCN建模圖數據。
實驗結果表明本文的方法和statr-of-the-art方法相比,有着可比擬的效果。
2 引言
(1)明確任務
給定一個文檔,事件抽取(EE)的目的是識別出事件觸發器及其類別,還需要識別出它們對應的角色參數。
ACE 2005數據集將事件抽取任務分成了兩個子任務:事件檢測(ED,識別事件觸發器並分類)和參數提取(argument extraction,識別出事件觸發器的參數並標註它們的角色)。
在事件抽取中,經常會有一個句子中出現多個事件的情況。準確地從一個句子中抽取出來多個事件比一個句子只有一個事件的情況要難得多。因爲這些不同類型的事件之間經常相互有關聯。
(2)現有方法的缺點
現有的方法大致可分爲兩類:1)句子級別的序列模型;2)基於特徵的模型。
但是,基於序列的模型不能捕獲到單詞間較長的依賴關係;基於特徵的模型需要耗費人力進行特徵工程,並且選擇的特徵會在很大程度上影響模型的效果。而且,這兩類方法都不能充分建模事件之間的關聯。
(3)作者提出
1)syntactic shortcut arcs的引入
直接能想到的改進方法是:引入語言學資源(例如句法依存樹)表示的shortcut arcs,通過較少的轉換將信息流從一個點轉換到目標節點。和基於序列的模型相比,使用這些arcs建模可以減少在同一個句子中,從一個事件觸發器跳到另一個的跳數。
以圖1爲例,有兩個事件:killed是事件Die的觸發器,4條紅線表示它的4個參數;barrage是事件Attack的觸發器,3條藍線表示它的3個參數。如果按照句子本身的序列順序的話,從killed跳到barrage需要6步。如果根據句法依存樹的話,只需要3步就可以了(圖中用綠色的圈標出了3步的路徑)。這3個arcs就組成了一個shortcut path,使用較少的跳數,將句法依存的信息流從killed節點轉移給了barrage節點。
本文提出的JMEE模型引入了syntactic shortcut arcs來增強信息流,還使用了基於attention的GCN對圖數據建模。
2)GCN的引入
爲了在建模時使用shortcut arcs,作者採用了GCN通過聚合節點一階鄰居的信息,爲每個節點學習到其句法上下文的表示。
然後利用句法上下文的表示,通過self-attention機制進行信息聚合,尤其是維護多個事件間的關聯信息,以抽取出觸發器和參數。
(3)貢獻
-
提出JMEE模型可以聯合抽取出事件觸發器和參數。JMEE模型基於句法結構,增強了信息流,並且提升了在一個句子中抽取出多個事件的效果。
-
使用self-attention機制聚合信息,尤其是維護了不同事件間的關聯信息。實驗證明了這一方法在EE任務上的有效性。
-
在數據集上進行實驗,在EE任務上實現了state-of-the-art。
3 方法
EE可看成是多類別的分類問題。判斷句子中的每個單詞是否是候選事件觸發詞的組成部分,以及句子中的實體是否是事件觸發詞對應的參數(比如Attack事件的目標和攻擊者等對應的實體)。
EE方法主要分爲兩類:(1)聯合學習的方法,同時抽取事件觸發器和參數,當做類別預測問題:(2)pipeline的方法,先進行觸發器的預測,然後再識別出參數。本文使用的是聯合學習的方法,以避免pipeline方法中可能出現的誤差傳播。
爲什麼在句子級別(sentence-level)進行事件抽取,而不是在文檔級別(document-level)呢?主要有以下3個原因:
(1)ACE 2005數據集中文檔級別的共現分佈和句子級別的共現分佈很相似。
例如圖2所示,藍色柱子和橙色柱子分別表示Attack事件出現時,句子和文檔的在33種事件上的條件概率分佈。和Attack事件有共現關係的top 3的事件類型是:Die, Transport, Injure。儘管不同的事件類型有不同的共現關係,但是句子級別和文檔級別在同一事件類型下的條件概率分佈很相似。
(2)有許多現成的句子級別的語言學資源,可以爲shortcut paths結構提供信息,例如句法依存樹、AMR分析圖、語義角色標籤結構。
(3)同一個句子中不同事件間的關係 比 文檔中出現在不同句子中事件關係的更易捕獲。
3.1 一些定義
-
表示長爲的句子
-
表示句子中的實體提及(entity mentions)
-
使用BIO對每個token 進行標註,爲其分配一個觸發標籤,因爲有的觸發器是由多個單詞組成的。
-
使用BIO標註的標籤,對每個實體在該事件中扮演的角色進行預測。
JMEE模型由4個模塊組成
-
單詞表示模塊:使用向量表示句子;
-
句法圖卷積模塊:根據句法結構引入shortcut arcs,進行卷積操作;
-
基於self-attention的觸發詞分類模塊:捕獲一個句子中多個事件間的關聯;
-
參數分類模塊:預測每個實體在對應類型的事件中扮演的角色。
JMEE模型整體架構如圖3所示:
3.2 單詞表示模塊
句子中的每個token 通過在table裏查找,轉換成實值的向量。由以下幾種向量級聯得到:
-
的詞嵌入:Glove;
-
的POS-tagging label嵌入:隨機初始化embedding table;
-
的位置嵌入:設爲當前詞,將和的相對距離通過在隨機初始化的embedding table中查表,編碼成實值向量。
-
的實體類型標籤嵌入:和POS-tagging label嵌入相似,使用BIO對句子中的實體進行標註,通過在embedding table中查表得到實體類型標籤的實值向量表示。
經過上述操作,將輸入的句子表示成了向量序列:,作爲後一模塊的輸入。
3.3 句法圖卷積模塊
使用句法分析樹,將句子表示成無向圖。句子中的單詞表示爲圖中的節點。圖中的邊表示從token 到token 有一個有向的syntactic arc,並且邊的類型標籤爲。
爲了使得信息可以沿着邊逆向傳播,引入了反向邊,反向邊的類型標籤爲。另外,還在原始圖中添加了自環(self-loops),標籤爲loop。
句法圖卷積模塊的第層,節點的圖卷積向量計算如下:
其中,表示邊的類型標籤;分別是針對類型標籤的權重矩陣和偏置;是節點的鄰居集合,包括自己(因爲有自環);是激活函數。
使用單詞表示模塊輸出的初始化GCN的節點表示。
添加反向邊和自環後可知,有個權重矩陣和個偏置參數。
使用Stanford Parser在句法分析樹上生成shortcut arcs,大約有50種句法關係,這對於單層GCN的參數量來說太大了。爲了減少參數量,只維護如下的3種類型標籤:
上一篇博客GCN-ED也是採用了這種方法,只維護3種類型的標籤。
由於生成的句法依存結構可能有噪聲,因此在邊上使用門機制,爲有不同類型標籤的邊分配不同的權重。邊的權重計算如下:
上一篇博客GCN-ED也是採用了這種方法,爲不同類型的邊分配不同的權重。
因此,最終的GCN計算寫成了如下的形式:
堆疊層GCN可以建模k hops的鄰居信息,有時兩個觸發器之間的距離小於,爲了避免信息的over-propagating,作者提出highway units。highway層進行如下的非線性轉換:
其中,是sigmoid函數;是element-wise乘積;是非線性激活函數;被稱爲transform gate,被稱爲carry gate。第層GCN的輸入由改爲。
和GCN-ED中的原因相同:GCN的層數限制了捕獲圖中局部信息的能力,因此使用BiLSTM編碼單詞表示,將前向和後向得到的表示級聯,作爲第一層GCN的輸入:
和上一篇博客GCN-ED中使用BiLSTM的想法一致。
3.4 基於self-attention的觸發詞分類模塊
當每個token做爲當前詞時,GCN都對所有的tokens進行計算得到表示。傳統的EE方法通常使用max-pooling或者對max-pooling進行改進來將信息聚合到每個位置。
經過GCN都得到了token的表示,爲什麼還需要進行聚合呢?
因爲預測一個token是否是和觸發器相關,需要考慮到其他可能的觸發器候選token。
但是在本文的模型中,使用GCN模塊後進行max-pooling進行聚合往往會產生相似的結果。例如,GCN的輸出爲,是句子長度,位置進行max-pooling後得到的向量爲:。這樣的話,每個位置得到的都是相同的。
鑑於max-pooling方法的不足,爲了捕獲到一個句子中不同觸發器之間的關聯,作者設計了self-attention機制來進行信息聚合,尤其是維護了不同事件之間的關聯。
給定當前的token ,self-attention向量和位置的上下文向量計算如下:
然後將上下文向量輸入到一個全連接神經網絡預測觸發器的標籤:
3.5 參數分類模塊
上一步對觸發詞進行分類後,可以得到完整的事件觸發詞(即在I-Type或B-Type後出現了O標籤,就可以分割出完整的觸發詞)。然後使用上下文向量對句子中的entity list進行參數分類。
對於每個entity-trigger對,由於entity和trigger候選都可能是tokens的子序列,我們使用average pooling在序列長度這一維度上,對上下文向量進行聚合,得到trigger candidate向量和entity向量。然後將兩者級聯,輸入到全連接的神經網絡中預測參數的角色(argument role):
最終的輸出表示:第個實體在由第個候選觸發器對應的事件中扮演的角色。
在訓練過程中,如果候選觸發器不是正確的觸發器,則將與其相關的參數標籤置爲OTHER。
3.6 有偏的損失函數
目標函數爲最小化聯合的負對數似然函數。由於ACE 2005數據集中數據的稀疏性,作者添加了一個偏置項:
其中,是訓練集中的句子數;分別是tokens數,抽取出的候選觸發器數以及第個句子中的實體數;是指示函數,若不是O,則輸出一個大於1的常數值,否則輸出1;和一樣,都是超參數。
4 實驗
(1)數據集:ACE 2005
(2)對比方法
-
Cross-Event:使用文檔級別的信息增強EE的性能
-
JointBeam:通過人爲設計的特徵進行結構預測,進而進行EE
-
DMCNN:使用dynamic multi-pooling維護多個事件的信息
-
PSL:使用隱層和全局的信息對事件間的關聯進行編碼
-
JRNN:使用雙向RNN和人爲設計的特徵抽取出事件觸發器和參數
-
dbRNN:在Bi-LSTM上添加dependency bridges,用於EE
(3)實驗結果
和其他方法進行整體性能的對比結果:
在和其他方法在單事件抽取和多事件抽取兩個任務上的對比結果:
self-attention機制的可視化結果:
5 總結
本文提出了JMEE模型用於事件抽取任務(EE),可以實現在一個句子中有多個事件的情況下,抽取出多個事件。不僅能抽取出事件觸發器(trigger),還能抽取出該事件對應的參數(argument,即事件的關鍵要素,例如Attack事件的攻擊者等)。
JMEE模型引入了syntactic shortcut arcs來增強信息流,也就是說將句子從序列的模式轉換成了句法依存圖的模式,減小了關鍵詞之間信息流動需要的步數。在句法依存圖上使用GCN進行信息聚合。還使用了self-attention機制聚合事件間的關聯。
模型由4個模塊組成:單詞表示模塊、句法圖卷積模塊、基於self-attention的觸發器分類模塊、參數分類模塊。
未來工作:利用一個參數(argument)在不同事件中的不同角色信息,來更好地進行EE任務。
和GCN-ED對比:
- 其中句法圖卷積模塊和GCN-ED這篇文章中的思想基本一致,不同之處在於JMEE在信息聚合時使用了highway units,類似一個門機制,花式聚合(詳見文章)。
- 和GCN-ED相比,JMEE沒有使用pooling操作,而是使用self-attention機制將不同事件間的關聯納入考量。GCN-ED則是使用了entity mention-based pooling,考慮到了實體類型的影響。
- GCN-ED只是針對事件檢測任務,對事件觸發器進行定位並分類,是事件抽取的一個子任務。JMEE解決了事件抽取的兩個子任務,聯合抽取出觸發器和參數,並且可以抽取出一個句子中的多個事件。
- JMEE和GCN-ED的不足之處一樣,鑑於參數量的考慮,沒有考慮到句法關係標籤的信息。