天天看點

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

餘博濤,南京大學計算機科學與技術系,碩士研究所學生

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

論文連接配接:http://www.aclweb.org/anthology/N16-1034

發表會議:NAACL-HLT 2016

摘要

事件抽取(event extraction)是資訊抽取中一個特别具有挑戰性的問題。針對該問題的最先進的模型要麼應用流水線架構(pipelined framework)的卷積神經網絡(convolutional neural networks),要麼采用通過具有豐富的局部和全局特征進行結構化預測(structured prediction)的聯合架構(joint architecture)。前者基于連續和泛化的單詞表示,能夠從資料中自動學習隐藏特征表示,而後者則能夠減緩流水線方法的錯誤傳播問題,并通過離散結構來利用事件觸發詞(trigger)和論元角色(argument role)之間的互相依賴關系。在本文的工作中,我們提出了一個雙向循環神經網絡(bidirectional recurrent neural networks,bidirectional RNN)的聯合架構來進行事件提取的方法,進而受益于前面所述的兩個模型的優點,并解決現有方法中固有的問題。我們系統地研究了此聯合模型的不同記憶特征(memory features),并驗證該模型在ACE 2005資料集上達到了最好的性能。

模型介紹

1.     概覽

文章所提出的模型是基于ACE所定義的事件抽取任務,該任務包含4個子任務:觸發詞檢測(找出句子中代表事件發生的詞)、觸發詞分類(将觸發詞分類到預定義的8種類型、33種子類型中)、論元檢測(檢測事件的參與元素)和論元角色分類(将論元分類到預定義的35種論元角色中)。

本文對事件抽取任務模組化如下:将一個句子記為,其中為句子中第個token,即為句子長度;将該句中的實體提及(entity mention)記為,其中是實體提及的數量并且可以為0,它包含實體在句子位置和實體類型的資訊;将實體提及的最後一個詞在句中位置的索引記為。對于句子中的每個,我們需要預測其事件類型,如果是我們所關心的事件的觸發詞,則繼續預測每個實體提及關于該事件(觸發詞)的論元角色。是以,事件抽取可定義為分别針對觸發詞和觸發詞-論元對的分類問題。

本文所建構的模型如圖1所示,主要分為編碼(encoding)和預測(prediction)兩個階段。其中編碼階段使用RNN來獲得句子的更抽象的表示,而預測階段則是使用這個表示來同時預測事件觸發詞子類型和論元角色。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

2.     編碼

2.1   句子編碼

該階段将以下三個向量串聯,将每一個token 轉換成一個實數向量:

1) w_i 的詞嵌入(word embedding)向量

通過查詢預訓練的詞嵌入表獲得。

2) w_i 的實體類型嵌入(entity type embedding)向量

采用BIO标注方法對token的實體類型指派,并通過查詢随機初始化的實體類型嵌入表獲得該向量。

3) w_i 與依存樹(dependency tree)相關的二值向量

該向量的次元等于依存樹中所有可能的關系的數量,對句子做依存關系分析得到依存樹,如果對于,依存樹中有一邊與其相連,則向量中這條邊的依存關系對應的次元上置為1,其他次元為0。

對于每個 w_i 進行轉換,就能将句子 W 轉換為實數向量序列 X=(x_1,x_2,⋯,x_n)。

2.2   Recurrent Neural Networks

将作為RNN的輸入序列,學習句子資訊的更加有效的表示。對于步驟 i,RNN使用目前步驟的輸入向量 x_i 和上一步的隐藏向量 α_(i-1) 計算目前步驟的隐藏向量 α_i,即 α_i=Φ(x_i,α_(i-1),其中 Φ 是非線性轉換函數。本文使用的是以GRU為單元的RNN,并且為了解決在第步時正向RNN不能擷取其後面的特征資訊的問題,本文采用了雙向RNN。記正向RNN為

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,逆向RNN為

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

。将正向和逆向的隐藏向量串聯起來,組成向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,該向量封裝了着眼于 w_i 的整句話的上下文資訊。

3.     預測

在預測階段,模型預測觸發詞子類型和論元角色。需要注意的是,本文提出使用記憶向量和記憶矩陣、對論元角色、觸發詞子類型之間的依賴關系進行編碼。對于每一步,依次進行如下步驟:

3.1   觸發詞預測

在觸發詞預測階段,對于目前token w_i,首先串聯以下向量,得到特征表示向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

.

1) h_i

通過雙向RNN得到的隐藏向量,其包含輸入序列的全局上下文資訊。

2)

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

對于 w_i 的局部上下文向量,由該token為 d 中心的大小的視窗中的詞的嵌入向量組成,即

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

3)

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

上一步的記憶向量。

随後,将特征表示向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

輸入一個具有 softmax 輸出層的前饋神經網絡 F^{trg}中,計算該token在所有可能的觸發詞子類型上的機率分布

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,其中 t 為一種事件子類型,最終得到對于 w_i 的預測事件子類型

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

。若 w_i 并非我們關注的事件類型的觸發詞,則将 t_i 指派為“Other”。

3.2   論元角色預測

在論元角色預測階段,首先檢查上一階段的觸發詞預測結果 t_i 是否為“Other”,即非觸發詞。如果是的話,可以直接将

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

全部置為“Other”并跳至下一階段。否則,需要針對每一個實體提及 e_j,預測其關于觸發詞 w_i 的論元類型。類似地,串聯以下向量擷取 e_j 和 w_i 的特征表示向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

1) h_i 和 h_{i_j}

分别為雙向RNN中對應 w_i 和 w_{i_j}的隐藏向量,其中 w_{i_j} 代表 e_j 中最後一個詞所對應的token。

2)

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

對于 w_i 和 w_{i_j} 的局部上下文向量,由分别以 w_i 和 w_{i_j} 為中心的 d 大小的視窗中的詞的嵌入向量組成,即

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

3) B_{ij}

對于 V_{ij} 的隐藏向量,其中 V_{ij} 是前人工作中所提出的表達 w_i 和 w_{i_j} 之間的局部論元特征資訊的二值特征向量,這些特征包括最短依賴路徑、實體類型和子類型等,而 B_{ij} 則通過将 V_{ij} 輸入前饋神經網絡 F^{bianry} 獲得,即

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

4)

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

分别為上一步的記憶矩陣

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

中 e_j 所對應的行向量。

接下來,類似地,将特征表示向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

輸入到具有 softmax 輸出層地前饋神經網絡 F^{arg}中,獲得在所有論元角色上的機率分布

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,其中 a 為一種論元角色,最終獲得對于 w_i 和 e_j 的論元角色預測結果

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

。若 e_j 并非我們關注的論元角色,則将 e_j 指派為“Other”。

3.3   更新記憶向量/矩陣

本文提出使用記憶向量/矩陣

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

來編碼觸發詞和論元之間的依賴關系,具體如下:

1) 記憶向量

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

:編碼觸發詞子類型之間的依賴

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,其中

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,是所有可能的觸發詞子類型的數目,該向量的更新政策為

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

即若 w_i 的觸發詞子類型被預測為 t_i ,則對應次元置為1,否則不做更改。這個記憶向量“記住”了到第 i 步為止,有哪些觸發詞子類型被預測。

2) 記憶矩陣

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

:編碼論元角色之間的依賴

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

,其中 i=0,⋯, n 是本句中所有事件提及的數目,n_A 是所有可能的論元角色的數目,該矩陣的更新政策為

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

即若被 w_i 預測為是事件觸發詞,且 e_j 關于 w_i 的論元角色被預測為a_{ij},則将矩陣中對應實體提及的 e_j 行和論元角色 a_ij 的列置為1,否則不做更改。這個記憶矩陣“記住”了到第 i 步針對 w_i 和 e_j 的論元角色預測為止,有哪些實體提及已經被預測成了哪些論元角色。

3) 記憶矩陣:編碼論元角色和觸發詞子類型之間的依賴

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

即若 w_i 被預測為是事件觸發詞且其子類型為 t_i ,則将矩陣對應實體提及 e_j 的行和觸發詞子類型 t-I 的列置為1,否則不做更改。這個記憶矩陣“記住”了到第 i 步針對 w_i 和 e_j 的論元角色預測為止,有哪些論元角色和觸發詞子類型被預測。

4.     訓練

訓練過程使用log似然函數作為損失函數,使用mini-batch和AdaDeltaupdate rule的随機梯度下降算法優化模型,訓練時也同時優化詞嵌入表和實體類型嵌入表。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

模型分析

1.     資料集

本文使用一個大規模語料庫預訓練詞嵌入表,使用ACE 2005語料庫訓練和評估事件抽取模型。

2.     記憶向量/矩陣的效果實驗

本文在使用C-CBOW模型預訓練詞嵌入表的情形下,針對三個記憶向量/矩陣

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

對事件抽取的觸發詞預測和論元角色預測的效果進行了實驗,有或沒有每一個記憶向量/矩陣構成了總共8種情形,它們的實驗結果如下表。結果顯示,G^{trg} 和 G^{arg} 的應用對結果沒有提升、反而降低了,本文認為是觸發詞子類型間和論元角色間的依賴不夠強,導緻它們并未在此模型中起作用。而編碼論元角色和觸發詞子類型之間依賴的 G^{trg/arg} 的應用則顯著提升了實驗結果。是以在後續實驗中,模型僅應用 G^{trg/arg}。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

3.     詞嵌入的評估

本文對使用不同詞嵌入算法預訓練詞嵌入表的效果進行評估,結果如下表。其中RANDOM是随機初始化,WORD2VEC是前人工作中使用Skip-gram模型在Google News語料上訓練的詞嵌入表。結果顯示,使用預訓練詞嵌入表的實驗結果明顯優于随機初始化,是以預訓練詞嵌入表對事件抽取任務有十分重大的意義。使用C-CBOW模型的效果優于其他模型,是以在後續實驗中,預訓練詞嵌入表全部使用C-CBOW模型。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

4.     與其他模型的對比實驗

本文對比了Li’s baseline、Liao’scross-event、Hong’s cross-entity、Li’s structure、DMCNN,用JRNN指代本文所提出的模型,實驗結果如下表。除了在觸發詞識别中略低于DMCNN模型,在其他任務中JRNN都取得了最好的效果,尤其是在論元檢測和分類中,相比其他模型有較大的提升。實驗結果證明了RNN和記憶特征在事件抽取任務中的特征表示的有效性。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

5.     一句多事件的實驗

本文對一句話中包含多個事件的情況下的性能進行了實驗驗證,結果如下表所示,其中1/1代表一句中僅有一個事件,1/N代表一句中有多個事件。結果顯示,在不管是一個事件還是多個事件的多數情形下,本文模型都取得了最好的性能。僅僅在論元任務中對于一個句子僅包含一個事件的情況下,性能低于DMCNN,本文認為這是因為DMCNN對于論元使用了位置嵌入特征,而本文的記憶矩陣 G^{trg/arg} 在一個事件的情形下并未起作用。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

OpenKG

開放知識圖譜(簡稱 OpenKG)旨在促進中文知識圖譜資料的開放與互聯,促進知識圖譜和語義技術的普及和廣泛應用。

jsinput輸入完觸發事件_論文淺嘗 | 使用循環神經網絡的聯合事件抽取

點選閱讀原文,進入 OpenKG 部落格。