陸垚杰,林鴻宇,韓先培,孫 樂
(1. 中國科學(xué)院 軟件研究所,北京 100190;2. 中國科學(xué)院大學(xué),北京 100049)
事件抽取(event extraction)是自然語言處理的重要任務(wù)。事件抽取通常被劃分為事件檢測(event detection)和論元識別(argument recognition)兩個子任務(wù),其中,事件檢測是事件抽取的基礎(chǔ)。具體而言,事件檢測的目標是檢測出文本中最能代表事件類型的觸發(fā)詞。例如,在句子“AnAmericantankfiredonthePales-tineHotel.”中fired是句中表達的攻擊事件的觸發(fā)詞。
近年來,深度學(xué)習(xí)模型在事件檢測任務(wù)中取得了長足進展[1-2]。相比于傳統(tǒng)方法[3],該類方法的優(yōu)勢在于避免了繁重的特征工程,同時其端到端的學(xué)習(xí)也避免了自然語言處理工具帶來的錯誤傳播問題。
深度學(xué)習(xí)模型要取得良好性能需要有大量的訓(xùn)練數(shù)據(jù)支撐。由于事件結(jié)構(gòu)的復(fù)雜性,事件標注對標注者的專業(yè)要求高,且事件檢測數(shù)據(jù)標注成本高,代價大。上述現(xiàn)象導(dǎo)致了事件檢測的標注語料瓶頸問題。近年來,一部分研究者開始研究如何自動增加事件檢測的數(shù)據(jù),但這類方法通常是利用現(xiàn)有的知識庫(FrameNet、FreeBase)來實現(xiàn)[4-5]。
另一方面,深度學(xué)習(xí)模型的訓(xùn)練過程也受到隨機初始化等因素的影響。事件檢測數(shù)據(jù)稀少,同時語言的表達具有稀疏性,進一步加重了上述模型訓(xùn)練過程中的不穩(wěn)定性。為了提升模型訓(xùn)練過程的穩(wěn)定性,研究者開始采用對數(shù)據(jù)或隱層表示注入噪聲等訓(xùn)練方法[6]。與此同時,受圖像領(lǐng)域?qū)箤嵗芯康膯l(fā)[7],部分研究者也將對抗實例的方法應(yīng)用于自然語言處理[8],但在事件檢測任務(wù)中尚未進行嘗試。
為解決標注語料瓶頸問題和模型訓(xùn)練穩(wěn)定性問題,本文提出了基于語言學(xué)擾動的偽數(shù)據(jù)生成方法,對事件檢測進行數(shù)據(jù)增強。例如,我們可以通過詞匯替換的方法,將句子“Thenursebandageduphisinjuredfinger.”中的”injured”替換成“wounded”后的新句子“Thenursebandageduphiswoundedfinger.”加入到訓(xùn)練數(shù)據(jù)中進行數(shù)據(jù)增強。相比圖像數(shù)據(jù),自然語言的數(shù)據(jù)增強具有以下幾方面的挑戰(zhàn)。首先,自然語言表達是離散的、多樣化的,簡單地使用圖像數(shù)據(jù)增強的方法會導(dǎo)致文本語義漂移的現(xiàn)象。其次,語言表達具有語法結(jié)構(gòu)順序,隨意地替換文本片段會使文本不完整或意義發(fā)生改變。為解決上述挑戰(zhàn),在保留語義的情況下生成盡量多符合語法結(jié)構(gòu)的偽數(shù)據(jù)是本文要解決的主要問題。具體地,本文借鑒之前的魯棒訓(xùn)練相關(guān)工作[9],從語法和語義的角度出發(fā),提出了兩種面向事件檢測偽數(shù)據(jù)生成的語言學(xué)擾動方法,分別是基于語法的文本改寫和基于語義的詞匯替換。其中,基于語法的文本改寫采用對文本進行復(fù)述或壓縮的方式來生成偽數(shù)據(jù),基于語義的詞匯替換采用外部詞匯語義資源來對原始文本詞匯替換的方式生成偽數(shù)據(jù)。
為了驗證偽數(shù)據(jù)的有效性,本文在KBP2017[注]https://tac.nist.gov/2017/KBP/data.html事件檢測數(shù)據(jù)集和人工構(gòu)造的小規(guī)模數(shù)據(jù)集上進行了實驗。實驗表明,基于語言學(xué)的偽數(shù)據(jù)可以同時提升模型性能和訓(xùn)練過程的魯棒性。
文本由離散的符號組成,其表達往往具有稀疏性。同一語義表達往往具有多種不同的文本表達形式。為了捕捉文本表達的多樣性,提升有限訓(xùn)練數(shù)據(jù)下事件檢測系統(tǒng)的性能,本文提出了基于語言學(xué)擾動的偽數(shù)據(jù)生成方法。具體地,本節(jié)介紹如何在保留文本語義的同時生成符合語法的事件檢測實例。借鑒Li等人的思路[9],我們主要采用兩類思路: 基于句子改寫的實例生成和基于詞匯替換的實例生成。
句子改寫的目的是,在可以在保留語義的情況下生成新的文本表達。例如,對于句子“In Baghdad,acameramandiedwhenanAmericantankfiredonthePalestinehotel.”我們可以對其進行復(fù)述改寫,得到新的句子“AnAmericantankfiredonthePalestineled toacameramandiedin Baghdad.”通過句子改寫的方式,可以獲得相同語義的多種文本表達。本文采用兩種不同的句子改寫方法對事件檢測實例進行改寫。
本文采用的第一種句子改寫方式是基于文法的復(fù)述改寫,利用ERG(english resource grammar)[10]實現(xiàn)。復(fù)述是對一段文本語義利用不同句法、詞匯的重新表達。ERG算法通過最小遞歸語義(minimal recursion semantics, MRS)[11]得到的語義表達式來對文本進行解析和生成。我們首先通過答案限制引擎(the answer constraint engine)解析器[注]http://sweaglesw.org/linguistics/ace來對文本進行解析,然后通過預(yù)訓(xùn)練的解析結(jié)構(gòu)選擇模型來得到合適的解析結(jié)果,最后通過MRS來生成最后的合成結(jié)果。與原有數(shù)據(jù)相比,ERG復(fù)述模型產(chǎn)生的新數(shù)據(jù)主要包含了形容詞順序、副詞短語的位置變化。為了保留事件實例的語義,若改寫后的文本不存在原有的事件觸發(fā)詞,則將該次改寫視作一次不成功的改寫,不加入到偽數(shù)據(jù)中。
本文采用的第二種句子改寫方式是基于壓縮 (Comp)的句子改寫。其出發(fā)點是在盡可能保留原有語義的情況下,生成長度較短、表達更加簡潔的句子表達。例如,對于句子“InBaghdad,acameramandiedwhenanAmericantankfiredonthePalestineHotel.”中的攻擊事件,其事件的語義集中在“sth. fired”。我們可以將其改寫成“Acameramandiedwhenantankfired.”??梢?,句子壓縮可以在保證盡可能符合語法并保留原始語法結(jié)構(gòu),通過“剔除”原始文本中次要內(nèi)容的方法來實現(xiàn)。由于缺少大量的訓(xùn)練數(shù)據(jù),同時為了保證句子改寫的精度,本文采用了一個基于語法解析器的句子壓縮方法來對原始句子進行壓縮。首先,我們對原始文本進行句法樹分析。接著我們對從父節(jié)點標簽為R的子樹中隨機刪去具有標簽S的子樹C的概率進行了如下建模,如式(1)所示。
(1)
概率模型p(C,S,R)采用Li等的方法[9],在Clarke和Lapata公開的句子壓縮數(shù)據(jù)集[注]http://jamesclarke.net/research/resources上訓(xùn)練得到。為了盡可能保留原始文本中盡可能多的事件語義,我們通過weightcomp來控制事件語義的流失,若子樹中含有真實的觸發(fā)詞,我們則將權(quán)重置為0,反之則置為1,如式(2)所示。
(2)
基于句子改寫的實例生成可以有效生成具有不同語法結(jié)構(gòu)的新實例。本文使用的第二種方法是基于詞匯替換的實例生成。與基于句子改寫的方法不同,詞匯替換方法的核心是對用詞層面的多樣性進行建模。具體地,詞匯替換方法需要解決兩方面的問題: (1)如何選擇被替換的詞,才能保留盡可能多的語義?(2)如何選擇新的詞來替換原有詞,不會使語義產(chǎn)生太大的漂移?
針對第一個問題,我們希望在替換詞的過程中,盡可能保留事件實例原有的文本結(jié)構(gòu)和與事件聯(lián)系緊密的語義信息。功能詞是決定句子結(jié)構(gòu)的重要組成部分[12],同時實體信息是決定事件類別的有效特征[13]。因此本文保留功能詞和實體標記范圍內(nèi)的詞匯,只對其余詞性標注為名詞、動詞及形容詞等進行詞匯替換。
針對第二個問題,我們希望用于替換的新詞是與原有詞在語義上接近,同時與局部上下文一致。因此,我們利用詞匯語義資源來構(gòu)建替換的候選詞集wcand。為選擇與局部上下文相匹配的新詞,我們采用統(tǒng)計語言模型來對替換后的文本片段進行語言模型打分,并通過打分scorelm來對候選詞集中的詞進行采樣,生成偽數(shù)據(jù)。
上述過程的具體算法描述如算法1所示,為了選取與原詞語義相近的新詞,在算法1步驟6中,本文選取了兩種不同詞匯語義資源Lexi來生成新詞候選,分別是WordNet(WN)[注]https://wordnet.princeton.edu和詞嵌入表示(CFit)。針對原詞w,基于WordNet的候選生成方法將w的所有同義詞作為候選集。詞嵌入方法使用詞嵌入的相似度來選擇候選。為了加強詞嵌入中同義詞之間的關(guān)系,本文采用Count-Fitting[14]的方法訓(xùn)練得到的詞向量。該方法在原有Word2Vec模型[15]的基礎(chǔ)上,對反義詞相似度添加懲罰,對同義詞相似度進行增強,使得同義詞的詞嵌入相似度更高。
算法1 基于語義的詞匯替換
為了使替換的新詞與原文的上下文更加匹配,在算法1步驟8中,我們利用候選詞集中詞與上下文的語言模型打分作為上下文的匹配程度,并通過隨機采樣的方法來選擇新詞。本文使用KenLM工具[16]在GigaWord[注]https://catalog.ldc.upenn.edu/ldc2009t13上的3元語言模型作為實驗所用的語言模型。其中,α是替換詞的閾值,當α越高時,越傾向于保留原有的詞;反之,越傾向于替換成新的詞。本文使用的α為0.5。
本節(jié)首先介紹使用的基礎(chǔ)事件檢測模型,然后描述如何在訓(xùn)練過程中使用生成的數(shù)據(jù)對訓(xùn)練過程進行增強。
與前人工作一致,我們將事件檢測建模成一個多分類問題。給定一個句子,我們依次對句子中的每個詞進行預(yù)測,判定其是否為一個事件觸發(fā)詞,同時將事件觸發(fā)詞劃分到預(yù)先給定的類別上。本文使用動態(tài)多池化卷積神經(jīng)網(wǎng)絡(luò)(DMCNN)[1]作為實驗的基礎(chǔ)模型。如圖1所示,該模型能自動學(xué)習(xí)句子級別特征和詞匯級別特征,主要包含三個模塊: 嵌入表示層、特征提取層和多層感知機分類器。
圖1 動態(tài)多池化卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
嵌入表示層對文本進行基礎(chǔ)特征表示。本文主要采用兩類嵌入特征來對文本進行表示,分別是詞嵌入(word embedding, WE)[15]和位置嵌入(position embedding, PF)。其中詞嵌入主要捕捉詞匯的語言學(xué)和語義特征,位置嵌入通過將上下文詞與候選觸發(fā)詞的相對距離作為特征進行嵌入表示來建模不同上下文與候選觸發(fā)詞的關(guān)系。本文采用Skip-gram模型[注]https://code.google.com/archive/p/word2vec在Gigaword數(shù)據(jù)上對詞嵌入進行預(yù)訓(xùn)練,同時對位置嵌入進行隨機初始化,在訓(xùn)練過程中對兩個嵌入表示同時進行更新。
特征提取層對文本表示完成事件特征提取。事件特征分為句子級特征和詞匯級特征兩部分。句子級特征由動態(tài)池化卷積層提取得到。動態(tài)池化卷積層首先對文本嵌入表示進行卷積操作獲得卷積特征(convolutional feature map),并基于候選觸發(fā)詞位置對卷積特征進行動態(tài)分段多池化(dynamic multi-pooling),獲得句子級特征(sentence level feature)表示S,用來表示候選觸發(fā)詞所在句子的全局信息。詞匯級特征L(lexical feature)則將候選觸發(fā)詞及其特定窗口大小內(nèi)的上下文詞嵌入進行拼接,用來表示候選觸發(fā)詞的局部信息。
多層感知機分類器對經(jīng)特征提取層得到的不同級別事件特征進行分類。我們將句子級特征和詞匯級特征進行拼接,作為合成特征(compositional feature),共同輸入到多層感知機分類器中,如式(3)所示。
O=softmax(Wcls[S;L]+bcls)
(3)
其中,Wcls是分類器權(quán)重矩陣,bcls是偏置項。輸出向量O代表不同類別的預(yù)測概率(Type Classifier Output),對于候選觸發(fā)詞t是類別j的概率如式(4)所示。
P(j|t,θ)=Oj
(4)
其中,θ是所有的模型參數(shù)。對原始的M個訓(xùn)練實例對(y(i),x(i)),我們采用最大化對數(shù)似然函數(shù)對基礎(chǔ)模型進行訓(xùn)練,如式(5)所示。
(5)
為了有效利用生成的偽數(shù)據(jù)來提升事件檢測模型性能,本文使用兩種不同的訓(xùn)練策略來對事件檢測模型進行訓(xùn)練。
第一種方法將生成的N個偽數(shù)據(jù)看成真實的標注數(shù)據(jù),直接將偽數(shù)據(jù)加入到原始的訓(xùn)練數(shù)據(jù)中,訓(xùn)練時最大化的目標函數(shù)如式(6)所示。
(6)
(7)
(8)
最終,我們將基于真實數(shù)據(jù)的目標函數(shù)與基于偽數(shù)據(jù)的多實例目標函數(shù)進行聯(lián)合訓(xùn)練,來對模型參數(shù)θ進行學(xué)習(xí),如式(9)所示。
LMIL=Lbase+λ·lMIL
(9)
其中,λ是平衡前后兩項的權(quán)重因子,針對不同的偽數(shù)據(jù),我們利用開發(fā)集從{0.25,0.5,0.75,1.0}中選擇最優(yōu)的λ。
為了驗證本文方法的有效性,本文在KBP2017事件檢測數(shù)據(jù)集和人工構(gòu)造的極小數(shù)據(jù)集上分別進行了實驗。
本文使用TAC KBP 2017評測[注]https://tac.nist.gov/2017/KBP的事件檢測數(shù)據(jù)集(LDC2017E55)作為測試集,共包含167個包含實體、關(guān)系和事件(Rich ERE)標記的英文文檔。我們采用包含往年的RichERE標記數(shù)據(jù)集作為訓(xùn)練集,包括LDC2014E31、LDC2015E29、LDC2015E68、LDC2016E31和包含TAC KBP 2015-2016評測數(shù)據(jù)集的LDC2017E02作為訓(xùn)練集。為了進行超參數(shù)和模型的選擇,我們從訓(xùn)練集中的KBP 2016評測數(shù)據(jù)中隨機抽取20個文檔作為開發(fā)集。最終,訓(xùn)練集/開發(fā)集/測試集劃分數(shù)量為866/20/167。我們采用斯坦福大學(xué)(Stanford)的CoreNLP工具[注]https://stanfordnlp.github.io/CoreNLP對文檔進行預(yù)處理,包括XML標簽去除、句子劃分和詞條化(tokenize)、詞性標注和句法樹解析。
在嵌入表示層,本文采用的詞嵌入維度是300維,位置嵌入維度為5維。在特征提取層,卷積神經(jīng)網(wǎng)絡(luò)的卷積窗口為3,隱層大小為300維,詞匯特征的窗口為1(即使用候選觸發(fā)詞和左右詞)。為了對模型參數(shù)θ進行優(yōu)化,我們采用Mini-Batch的方式來最大化訓(xùn)練目標函數(shù),并采用Adadelta訓(xùn)練算法[18]和Dropout的方式[19]使得訓(xùn)練過程更加魯棒,Dropout概率為50%。
為了驗證基于語言學(xué)擾動的數(shù)據(jù)增強方法有效性,我們構(gòu)建了基于隨機詞替換 (WordDrop)的基準系統(tǒng)。WordDrop受圖像中的數(shù)據(jù)增強方式啟發(fā),隨機選擇被替換的詞替換成UNK。這樣產(chǎn)生的偽數(shù)據(jù)噪聲較大,出現(xiàn)很多不符合語法的、語義漂移的句子。我們依據(jù)模型在開發(fā)集上的性能選擇了最優(yōu)的WordDrop概率,本文使用5%。
本文使用KBP 2017官方評測工具[注]https://github.com/hunterhector/EvmEval計算模型在測試集上的F1得分,并匯報每個模型運行十次所得事件類別預(yù)測的F1得分平均值。為了驗證模型訓(xùn)練的魯棒性,同時給出了十次實驗之上的標準差。因為TAC KBP2017允許每一個隊伍提交3個不同的運行結(jié)果。參考這一思路,我們依據(jù)開發(fā)集結(jié)果選擇了3個最好的運行結(jié)果并取平均值,作為Best-3指標。
不同數(shù)據(jù)生成方式和不同訓(xùn)練策略在KBP 2017數(shù)據(jù)集上的實驗結(jié)果如表1所示。其中: DMCNN是采用目標函數(shù)Lbase訓(xùn)練的模型,是本文方法的基準實驗;ERG和Comp分別是基于語法的句子改寫方法中的基于ERG的復(fù)述方法和句子壓縮方法;WN和CFIT分別是基于WordNet和CFit詞嵌入的詞匯替換方法。其中,*代表采用MIL方式進行的聯(lián)合訓(xùn)練結(jié)果,+代表直接生成的偽數(shù)據(jù)加入到原始數(shù)據(jù)中的Augu方式進行訓(xùn)練。
表1 KBP 2017事件檢測數(shù)據(jù)集實驗結(jié)果
續(xù)表
注: *代表采用MIL方式進行的聯(lián)合訓(xùn)練結(jié)果,+代表直接生成的偽數(shù)據(jù)加入到原始數(shù)據(jù)中的Augu方式進行訓(xùn)練。ERGCompWNCFIT最優(yōu)的λ分別為0.5