潘 璋,黃德根
(大連理工大學 計算機科學與技術學院,遼寧 大連 116024)
事件抽取主要是采用自動抽取方法,將非結構化自然語言文本中用戶關注的事件信息抽取出來,以結構化的方式表示.在自動問答、知識圖譜、自動文摘、信息檢索等任務中具有廣泛應用.
ACE(Automatic Content Extraction,ACE)[1]會議描述事件抽取任務包含觸發詞抽取以及事件要素抽取.其中,事件觸發詞是指能夠引發相應事件的主要詞匯,通常事件的類型由事件觸發詞類型表示,事件要素是指事件所對應的參與者.例如,在句子“He died in the hospital.”中,事件觸發詞是“died”,事件要素分別是“He”(Role=Person)和“hospital”(Role=Place),觸發的事件類型是“Die”事件.
事件觸發詞抽取的難點在于:同一事件可能出現在不同的觸發詞中,以及同一個事件觸發詞,由于在不同的句子中,可能觸發不同的事件類型.對于句子“Mohamad fired Anwar,his former protégé,in 1998.”中,事件觸發詞是“fired”,觸發的類型為“End-Position”,由于“fired”是一詞多義,會將該事件類型劃分為“Attack”.但是,如果利用事件要素信息“his former protégé”(Role=Position),則可以將觸發詞分類為“End-Position”.
事件觸發詞與事件要素之間存在緊密的聯系,有效利用事件要素信息,能夠提升觸發詞抽取性能.例如:
S1:MSNBC,an obscure cable channel,has fired Phil Donahue,the host of its highest-rated show.
S2:North Korea′s military may have fired a laser at a U.S.helicopter in March.
S3:It has refused in the last five years to revoke the license of a single doctor for committing medical errors.
如表1所示,S1、S2對應不同的事件類型,但含有同一個事件觸發詞“fired”.同時兩個句子的事件要素類型不同,在S1中利用“Person”和“Position”要素,可以將觸發詞分類為“End-Position”事件,同樣,在S2中,通過“Attacker”和“Target”要素,可以分類為“Attack”事件.而且在每句話中,有相同類型的事件要素含有相似的事件類型,如表1中S1、S3,對應的事件觸發詞分別是“fired”和“revoke”,但是含有相同的事件要素類型“Person”和“Position”,為同一事件類型“End-Position”.

表1 事件觸發詞例句Table 1 Event trigger example
為了利用事件觸發詞與事件要素之間的關聯信息,本文提出一種事件要素注意力與編碼層融合的事件觸發詞抽取模型.該模型主要通過計算事件要素與觸發詞之間的相關性,以及編碼層中的自注意力機制學習句子內部結構信息,特別是,可以學習事件要素和觸發詞之間的關聯性,將兩者融合作為特征送入編碼層中再次訓練,更新事件觸發詞權重.此外,通過詞特征模型來獲取語義信息,然后將兩個模型進行拼接,通過softmax分類器判斷事件觸發詞的類型,得到抽取結果.
傳統事件抽取方法依賴于人工從句子中抽取特征(如詞本身、詞性、依存關系等),通過最大熵和支持向量機等統計機器學習分類模型進行事件抽取.這些方法需要依賴一定的專業領域知識,人工特征選取的好壞影響事件抽取的性能,此外,需要借助自然語言處理工具與資源是否可以選取出和事件抽取任務相聯系的特征,導致抽取效果不能進一步提高[2-5].
近年來,事件抽取任務逐漸采用深度學習模型.Nguyen等人[6]將候選觸發詞的上下文信息、周邊的實體信息作為輸入,利用CNN模型自動挖掘隱含特征,從而避免了特征工程中詞性標注等預處理步驟的錯誤對抽取結果的影響;Nguyen等人[7]實現了雙向循環神經網絡(Recurrent Neural Network,RNN),捕獲觸發詞和要素之間的關系,同時進行觸發詞和事件要素抽?。籆hen等人[8]根據事件觸發詞和事件要素采用動態多池化層來保留更多關鍵信息進行事件抽??;Feng等人[9]提出一個混合神經網絡(HNN),以捕捉特定背景下的序列和塊信息,并且在沒有任何人工特征編碼的情況下,對多種語言訓練事件抽取模型.深度學習模型可以自動學習句子的特征表示,不需要人工干預以及減少使用自然語言處理工具,防止特征設計過程中的錯誤對事件抽取性能的影響.
基于外部資源的方法旨在利用外部資源增強事件檢測,Zhao等人[10]提出將文檔級別的特征信息加入模型(DEEB-RNN)中,并驗證了文檔級的信息有利于提高模型的實驗效果;Liu等人[11]分析從FrameNet(FN)到事件類型的映射,然后利用FN中自動檢測到的事件,提高事件檢測的性能.
神經網絡模型自動提取事件特征以及外部資源增強事件特征的方法,主要關注事件觸發詞本身信息,較少考慮事件要素信息以及詞間依賴信息.本文提出事件要素注意力與編碼層融合模型,能獲取事件要素信息,同時捕捉詞間的特征信息,提高事件觸發詞抽取性能.
事件觸發詞抽取主要由3部分構成:事件要素注意力與編碼層融合模型、詞特征模型、分類器,其抽取框架見圖1.

圖1 事件觸發詞抽取整體框架Fig.1 Event trigger extraction framework
事件要素注意力與編碼層融合模型如圖2所示.事件要素注意力,將BERT[12]訓練的詞向量作為輸入,用雙向LSTM[13]分別得到前向與后向兩種不同隱層表示,獲取上下文不同的語義信息,并且通過自注意力機制得到句子表示H=[h1,h2,…,hn],同時通過ACE語料庫中對事件要素標注的類型,構建事件要素初始向量,輸入到雙向LSTM中,獲得事件要素特征向量arg∈Rn×d,將兩個特征向量應用事件要素注意力計算.編碼層,通過BERT訓練的詞向量作為輸入,采用雙向LSTM學習句子語義信息以及序列位置信息,并且利用編碼層多頭自注意力機制加強關鍵詞的權重信息.融合層,將事件要素注意力與編碼層得到的分值向量進行融合,再次通過單層編碼層更新權重進行訓練.

圖2 事件要素注意力與編碼層融合模型Fig.2 Event argument attention and encoding layer fusion model
3.1.1 事件要素注意力
為了計算事件觸發詞與事件要素之間的關聯信息,構建了事件要素注意力網絡.事件要素注意力,即是利用文檔中注釋的事件要素信息,將事件句子表示與事件要素特征表示進行相關性計算,從而讓句子中的事件觸發詞能夠獲取注意力.事件要素注意力網絡整體包含N層,每層的輸出作為下一層的輸入,與事件要素特征表示計算相關性,引用殘差網絡[14]思想,將之前每一層的句子表示與初始句子表示進行合并作為當前層的輸入,以及將之前層的注意力與當前層合并,并且采用層歸一化[15]進行連接,具體見算法1.
算法1.事件要素注意力算法
輸入:事件要素特征向量arg、初始句子表示H
輸出:事件要素注意力句子表示
1.for要素注意力層數=1 toNdo
2. 將事件要素特征向量arg作為查詢向量q,與句子表示H進行乘積,計算事件要素與事件觸發詞之間的相關性注意力分數S:
S=HargT
3. 通過softmax函數將分數映射為0-1之間的實數,得到句子中每個詞的權重信息a:

4.if層數大于1then
5. 將上一層中歸一化的注意力分數與當前層注意力分數相加合并,增強事件觸發詞權重信息,并且與句子特征結合,得到新的句子表示H*:
H*=H(abefore+a)
6.else層數等于1then
7. 將注意力分數與句子特征結合得到新的句子表示:
H*=Ha
8. 采用層歸一化來降低過擬合以及提高訓練速度
9. 為了同時利用所有層的不同信息,以及由于隨著網絡層數的不斷加深,導致句子信息丟失,本文將之前每一層的句子表示與初始句子表示進行合并作為當前層輸入:
其中l是當前層數,H是初始句子表示,Hi是每一層輸出的句子表示
10.endfor
3.1.2 編碼層
為了捕捉事件要素和事件觸發詞的依賴關系,以及控制不同部分對句子表示的貢獻,提取重要信息.引用transformer[16]中的編碼層來增強事件觸發詞的權重信息.編碼層如圖3所示,包含多頭自注意力機制層與全連接前饋神經網絡層,并且每一層之間采用殘差網絡和層歸一化連接.與事件要素注意力結構類似,本文編碼層也是由多層網絡構成,將之前每一層的句子表示與初始句子表示進行合并作為當前層的輸入,并且將當前層的注意力分數與上一層的注意力分數合并,作為當前層的注意力分數.

圖3 編碼層結構圖Fig.3 Encoding layer structure
注意力機制[16]通過控制句子中每一部分不同的權重信息,使得模型關注句子中重要的信息,而忽略不重要的信息,從而抽取出更加準確的結果.本文主要采用放縮點積注意力(Scaled Dot Product Attention)進行注意力計算.對于給定長度的為n的queries值Q∈Rn×d,keys值K∈Rn×d和values值V∈Rn×d,放縮點積注意力的計算如公式(1)所示:
(1)
其中,d是網絡隱藏層參數,自注意力機制即是K=Q=V=X,輸入句子向量,句子中每個詞與詞之間通過放縮點積來計算注意力,減少對外部信息的依賴,獲取句子特征內部的相關性.

圖4 多頭自注意力機制結構圖Fig.4 Multi-head self-attention mechanism structure
為了能夠聚焦不同維度空間的特征,采用多頭自注意力機制結構,如圖4所示.將輸入向量分別經過3個不同的線性變換,并且將線性輸出結果分割為h個head,對于每個head主要是采用放縮點積注意力(Scaled Dot-Product Attention)進行注意力的并行計算.
3.1.3 融合層
將事件要素注意力得到的句子表示以及編碼層得到的詞間依賴關系,通過相加運算進行合并,將結果作為特征,再次送入編碼層中通過多頭自注意力機制,更新事件觸發詞權重信息.
詞特征模型包括3類特征,即實體特征、字母特征和詞本身特征.
通過事件抽取系統中注釋的實體信息,隨機初始化每個實體類型的嵌入向量,得到句子的實體向量作為輸入,利用雙向LSTM分別得到前向與后向隱層輸出,并且采用自注意力機制,得到實體特征HN=[hn1,hn2,…,hnn].
單詞中的字母通過隨機初始化的字母查找表轉換為實值向量,得到每句話對應的字母向量作為輸入,利用雙向LSTM以及自注意力機制得到字母特征HL=[hl1,hl2,…,hln].
對每個詞向量不同部分加強權重,得到不同位置的特征信息.對句子隨機初始化向量X=[x1,x2,…,xn],其中xi,i=1,2,3…,n都是m維的連續向量作為輸入,對每個xi切分成兩部分xi-1和xi-2,則詞本身特征見公式(2):
Hw=w1(w2xi-1+w3xi-2)
(2)
其中w1、w2、w3是隨機初始化的權重向量.
為了防止向量維度過于稀疏,將實體特征HN∈Rn×d、字母特征HL∈Rn×d以及詞本身特征HW∈Rn×d進行融合,得到語義信息表示為Hs∈Rn×d,其中,n為序列長度,d為隱層輸出維度,如公式(3)所示:
Hs=tanh(w1(HNw2+HLw3+Hww4))
(3)
其中,w1、w2、w3、w4為隨機初始化的權重向量,采用tanh作為激活函數,擴展語義信息,得到詞特征輸出.
對于句子X=[x1,x2,…,xn],通過事件要素注意力與編碼層融合模型,得到事件觸發詞與事件要素之間的關聯信息表示為Ha∈Rn×m1,以及采用詞特征模型得到語義特征信息表示為Hs∈Rn×m2,將兩者的分值向量拼接為H∈Rn×(m1+m2),如公式(4)所示:
H=Ha⊕Hs
(4)
其中,⊕表示行向量的拼接.然后將事件觸發詞抽取模型得到的特征向量送入softmax函數中進行訓練,輸出分類的結果,進行事件觸發詞抽取.
為了驗證模型的有效性,觸發詞抽取實驗采用的數據集為ACE2005英文語料,數據集包含沖突、商業、生活、交易等8種大類型,33子類的事件實例,總共含有599篇文檔.和已有的事件抽取任務研究一樣,只考慮識別33個事件子類型.并且采用同樣的數據集劃分方法,其中,訓練集為529篇文檔、測試集為40篇新聞語料、驗證集為隨機30篇文檔.采用準確率P(precision)、召回率R(recall)和F值作為實驗的評價指標.
詞向量采用BERT預訓練模型,輸入維度是768維,事件要素注意力與編碼層各8層,編碼層中head個數設置為8,訓練過程中每個batch的大小是30,dropout概率為0.2,學習率為0.001,LSTM隱藏層節點數是128.
4.3.1 與其他方法對比
為了評價本文方法的性能,我們選擇了如下5種方法進行對比:
在依賴于人工設計特征的方法中,Combined-PSL方法[5]提出概率軟邏輯模型(PSL)對全局信息進行邏輯編碼,并且結合全局信息和局部信息進行事件分類;
在通過表示學習自動提取事件特征的方法中,JRNN模型[7]提出的一種雙向循環神經網絡的聯合框架,通過引用記憶向量和記憶矩陣來存儲在標記過程中的預測信息,從而獲取事件觸發詞和事件要素的依賴關系進行聯合抽?。籇MCNN模型[8]通過自動地學習文本級別和句子級別的特征,不需要使用復雜的NLP工具,以及利用動態多池化層保持更多關鍵信息,進行事件抽??;
在通過添加外部資源增強事件特征的方法中,SA-ANN模型[17]通過注釋的事件要素信息對每個候選觸發詞構造的注意力,增強事件要素獲取注意的能力,并且以監督的方式共同學習注意力和事件檢測器;Bi-LSTM+FN[18]通過框架語義知識庫FrameNet(FN)中定義的框架和事件檢測中定義的事件具有極其相似的結構來構建映射關系,選取FN中合適的例句作為事件檢測的擴充語料,緩解事件檢測任務中的語料稀疏和樣例分布不平衡問題.

表2 本文模型與其他模型實驗結果對比Table 2 Comparison experimental results between the model and other models
實驗結果如表2所示,相較于基于特征的事件觸發詞抽取方法,本文方法在事件觸發詞抽取中有明顯的提升.與通過神經網絡自動提取事件特征進行事件觸發詞抽取的JRNN和DMCNN模型相比,事件要素注意力與編碼層融合方法F值高出2.65%以上.與通過外部資源的方法對比中,Bi-LSTM+FN通過擴充語料緩解數據稀疏問題從而充分訓練模型,極大提高召回率,但是擴充語料產生的噪音導致準確率相對較低,因此沒有達到更好的結果.對于同樣使用事件要素信息的SA-ANN模型,是通過在監督學習中增加事件要素的注意力,而本文方法在訓練過程中顯示和隱式的利用事件要素信息構建注意力模型,增加觸發詞權重,該方法比SA-ANN的F值高0.25%.相較而言,通過事件要素注意力顯示利用要素信息,同時采用編碼層中的多頭注意力間接學習事件要素與事件觸發詞之間的依賴關系,提升事件觸發詞的抽取性能.
4.3.2 實驗分析
為了驗證模型的有效性,本文對模型的深度以及融合方法進行實驗分析.

表3 不同層數實驗結果對比Table 3 Comparison experimental results of different layers
1)模型的深度影響事件觸發詞的抽取效果,表3展示了不同層數的實驗結果,事件要素注意力和編碼層采用同樣層數.與不利用融合事件要素注意力與編碼層相比,利用事件要素注意力與編碼層融合模型對事件觸發詞的抽取性能明顯提升,可見事件要素能夠為事件觸發詞提供關鍵信息,通過計算事件要素與觸發詞的相關性,增加了事件觸發詞的權重信息.對于使用不同層數的模型,最終得到的F值是不同的,當模型只有一層時,模型處于欠擬合狀態,隨著層數的增加,模型逐漸擬合,雖然精確率在小幅度下降,但召回率明顯提升,實驗結果F值也逐漸增加,當層數為8時,模型F值達到最優結果.

表4 不同融合方法實驗結果對比Table 4 Comparison experimental results of different fusion methods
2)表4中展示了不同融合方法的實驗結果,主要對事件要素注意力模塊與編碼層模塊輸出的分值向量進行融合,分別采用拼接、相乘、權重和以及相加.權重和是通過sigmoid函數得到兩模塊不同的權重值,對兩分值向量進行融合.相比較其他3種融合方法,相加能夠增強事件觸發詞權重,獲得更多語義信息,得到最好的抽取效果.
針對事件觸發詞抽取任務,為了充分利用事件要素信息,本文提出一種事件要素注意力與編碼層融合的事件觸發詞抽取模型,提高事件觸發詞抽取性能.通過事件要素注意力來計算事件要素與事件觸發詞之間的關聯性,同時利用編碼層中的多頭自注意力機制來得到詞間的依賴關系.實驗結果表明,該方法在事件觸發詞抽取的F值為71.95%.
事件要素注意力與編碼層融合的事件觸發詞抽取方法存在語料數據稀疏,類別分布不平衡問題,在下一步工作中,將融入更多的外部資源來擴充語料,平衡事件類別,提高事件觸發詞抽取效果.