廖 濤,沈文龍,張順香,馬文祥
(安徽理工大學(xué) 計算機科學(xué)與工程學(xué)院,安徽 淮南 232001)
事件抽取是信息抽取的一個重要子任務(wù),事件要素識別的效果對自然語言處理領(lǐng)域的下游任務(wù)有著重大的意義。根據(jù)ACE(automatic content extraction)評測會議的定義,事件抽取是由事件檢測和事件要素抽取兩大任務(wù)組成的。其中,事件檢測包括事件觸發(fā)詞識別和事件類型分類,事件要素抽取包括事件要素識別和事件要素角色分類。事件觸發(fā)詞通常表示為事件發(fā)生的詞,事件要素指的是包含在事件句中的時間、地點、對象等需要被識別的要素。例如,給定一個事件句S1:
S1 8日凌晨,合寧高速公路上一輛貨車與一輛大客車相撞。
事件檢測任務(wù)首先會識別出“相撞”為事件的觸發(fā)詞,并將其分類為“交通事故”事件。事件要素抽取任務(wù)需要識別出時間為“8日凌晨”,地點為“合寧高速公路”,對象為“貨車”和“大客車”。本文的研究內(nèi)容為事件要素識別任務(wù)。
為了豐富文本的向量表示,本文使用組合神經(jīng)網(wǎng)絡(luò)Bert-BiGRU-CRF作為基礎(chǔ)模型。考慮到字符級別的信息不能夠完整表示事件要素,將詞信息與字信息進行融合,豐富向量表示。為了提升模型的魯棒性,將對抗訓(xùn)練引入模型中提升模型的效果。在CEC語料庫中的實驗結(jié)果表明,該方法能有效提高事件要素識別的效果。
傳統(tǒng)的事件要素識別方法有基于模式匹配和機器學(xué)習(xí)的方法,早期采用模式匹配的方法,該方法依賴于特征工程和領(lǐng)域?qū)<抑R,將待抽取的事件和已知的模式通過模式匹配算法進行匹配,通常在某一特定的領(lǐng)域表現(xiàn)較好,但可移植性較差。基于機器學(xué)習(xí)方法開始將事件要素識別任務(wù)轉(zhuǎn)化為分類問題,注重于分類器的構(gòu)建和特征的選擇,代表性的模型有隱馬爾可夫模型、支持向量機模型和條件隨機場模型等。近年來,深度神經(jīng)網(wǎng)絡(luò)模型發(fā)展迅速,事件要素識別的工作利用神經(jīng)網(wǎng)絡(luò)也大放異彩。
Nguyen等[1]提出一種基于句法依存樹圖的卷積神經(jīng)網(wǎng)絡(luò)模型,和一種新的基于實體提及的池化方法,實驗結(jié)果優(yōu)于當(dāng)時的主流模型。Wang等[2]針對現(xiàn)有的方法沒有關(guān)注事件要素角色之間的概念相關(guān)性,提出了一種分層模塊化的時間要素抽取模型,最終在ACE2005數(shù)據(jù)集上取得了59.3%的F1值。沈蘭奔等[3]提出一種結(jié)合注意力機制和雙向長短期記憶網(wǎng)絡(luò)的模型,將中文事件檢測任務(wù)轉(zhuǎn)化為序列標(biāo)注任務(wù),解決了中文事件檢測的特定問題。Du等[4]提出了一種具有全局文檔記憶的模型框架,將之前抽取的事件作為額外的上下文來幫助模型學(xué)習(xí)事件間的依賴性,實驗驗證了該方法有助于事件要素的識別與分類。藺志等[5]提出一種基于半監(jiān)督的方法,通過領(lǐng)域詞典匹配進行標(biāo)注,在公共數(shù)據(jù)集上的實驗結(jié)果取得了較為理想的效果。Kan等[6]提出一種基于多層擴張門控卷積神經(jīng)網(wǎng)絡(luò)的事件抽取模型,并將增強的全局信息和字特征進行融合,在ACE2005數(shù)據(jù)集上的實驗驗證了該方法的有效性。Shen等[7]提出一種基于CNN-BiGRU的聯(lián)合抽取模型,通過CNN和BiGRU網(wǎng)絡(luò)同時學(xué)習(xí)局部和全局信息的特征表示,使用注意力機制去融合兩種特征,在MLEE數(shù)據(jù)集上的實驗表明了該模型可以很好地同時處理觸發(fā)詞和事件要素的抽取。陳敏等[8]運用機器閱讀理解的框架來完成事件論元的抽取,通過回答關(guān)于事件論元的問題來抽取論元,利用了論元角色類別的先驗信息,在ACE2005數(shù)據(jù)集上的實驗驗證了該模型的有效性。此外,還有其它的學(xué)者[9-13]也將神經(jīng)網(wǎng)絡(luò)模型用于事件抽取任務(wù)。
對抗訓(xùn)練最早應(yīng)用于計算機視覺領(lǐng)域,指在訓(xùn)練樣本中添加細(xì)微的擾動因子,導(dǎo)致最后模型產(chǎn)生錯誤的分類。通過這種訓(xùn)練可以讓模型適應(yīng)這種改變,提高模型的魯棒性。Miyato等[14]在文本分類領(lǐng)域提出了對抗訓(xùn)練的方法,在遞歸神經(jīng)網(wǎng)絡(luò)的詞嵌入中添加擾動,驗證了對抗訓(xùn)練在文本的任務(wù)中也能具有不錯的表現(xiàn)。黃培馨等[15]提出一種融合對抗訓(xùn)練的端到端知識三元組抽取模型,提高了模型的魯棒性和抽取效果。
基于對抗訓(xùn)練的事件要素識別模型分為4層,如圖1所示。第一層為嵌入層,采用Bert預(yù)訓(xùn)練語言模型將文本編碼為字向量,并與含有邊界信息的分詞向量融合作為融合向量;第二層為對抗訓(xùn)練層,在融合向量中添加擾動因子得到對抗樣本;第三層為編碼層,通過BiGRU網(wǎng)絡(luò)獲得文本的上下文語義特征;第四層為CRF層,通過CRF層從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到約束規(guī)則,保證預(yù)測標(biāo)簽的合理性,來完成事件要素識別任務(wù)。
圖1 模型框架
本文使用Bert-Base-Chinese預(yù)訓(xùn)練語言模型來獲得輸入文本的向量表示。該模型包含了12層Transformer,每層Transformer含有12 個多頭自注意力和768個隱層單元。輸入句子通過Bert模型進行編碼后,可以得到包含豐富語義信息的特征向量。給定一個句子S={W1,W2,…,Wi,…,Wn}, 其中Wi表示給定句子的第i個字,在句子的開頭添加[CLS]符號表示一個句子的開頭,[SEP]分句符號用于斷開輸入文本的兩個句子。
經(jīng)過預(yù)訓(xùn)練語言模型Bert-Base-Chinese處理后得到的字向量為St={t1,t2,…,ti,…,tn}, 其中ti是由3部分相加得到的,分別為Token Embedding、Position Embedding和Segment Embedding。Token Embedding表示輸入文本本身的向量;Position Embedding表示輸入文本的位置信息的向量;Segment Embedding表示區(qū)分輸入文本相鄰句子的向量。其中,Token Embedding層是將輸入的文本每個詞轉(zhuǎn)化為固定維度的向量,在本文中,表示為768維的向量。Segment Embedding層通過兩種不同的向量表示來區(qū)分兩個句子,將0賦值給前一個句子中的各個token,把1賦值給第二個句子中的每個token。相同的token在不同的位置具有不一樣的語義信息,Position Embedding層通過構(gòu)建一個表來區(qū)分不同位置的token,給模型傳遞token的輸入順序信息。
Bert 模型包含兩個預(yù)訓(xùn)練任務(wù),分別為掩蓋語言模型MLM(masked language model)和下一句預(yù)測NSP(next sentence prediction)。
(1)為了獲得具有雙向特征的向量,采用掩蓋語言模型進行預(yù)訓(xùn)練,使用[MASK]標(biāo)記去隨機代替語料15%的Token,訓(xùn)練模型去預(yù)測被掩蓋掉的Token。
(2)為了讓模型具備理解兩個句子之間的潛在關(guān)系,采用了下一句預(yù)測的預(yù)訓(xùn)練方法。對于語料庫中的任何兩個句子S1和S2,句子S2有50%的概率是句子S1的下一句。通過將兩個任務(wù)進行聯(lián)合訓(xùn)練,能夠得到豐富語義信息的向量表示。
中文在書寫上的表達不同于英文,沒有天然的分隔符,因此很難捕捉到詞語的邊界信息,這給中文事件要素識別任務(wù)增加了一定的難度。本文采用基于Python的jieba分詞方法對輸入文本進行處理,設(shè)經(jīng)過Bert模型編碼得到的某個字向量為ti, 包含該字的分詞編碼為特征向量Ci, 接著將字向量與特征向量融合得到富含更豐富語義信息的融合向量Ri。 融合向量Ri的表示如式(1)所示
Ri=ti⊕Ci
(1)
其中,ti表示該字向量;Ci表示分詞特征向量;⊕表示向量拼接。最后將融合向量送入模型中繼續(xù)訓(xùn)練。
本文使用對抗訓(xùn)練作為一種正則化的方式,通過向原始數(shù)據(jù)中添加微小的擾動來提高模型的泛化能力。輸入文本在經(jīng)過嵌入層編碼為字向量后,向其添加擾動因子radv來獲得對抗樣本,生成的對抗樣本可以讓模型有概率產(chǎn)生錯誤的判斷,以此來訓(xùn)練模型的對抗防御能力。
在自然語言處理領(lǐng)域通常有兩種添加擾動的方式,分別為離散擾動和連續(xù)擾動。離散擾動指的是在輸入文本中直接進行微小的修改;連續(xù)擾動指的是在輸入文本生成的字向量中添加擾動。添加的擾動需具備以下兩個特征:一是添加的擾動必須是微小的;二是添加的擾動是要有意義的,即能夠讓模型產(chǎn)生錯誤的輸出。離散擾動由于是在文本中進行修改,對抗樣本與原始樣本的差異能夠直接被找到,而連續(xù)擾動同時具備上述兩個特征。因此本文使用的是連續(xù)擾動。
設(shè)字詞融合后的向量表示為R={r1,r2,…,rn}, 擾動因子radv的計算公式由式(2)所示
(2)
其中,ε表示超參數(shù)的小有界范圍,g表示損失函數(shù)關(guān)于Ri的偏導(dǎo)。g的計算公式由式(3)所示
(3)
其中,L為損失函數(shù)。Y表示標(biāo)簽信息,θ表示模型參數(shù)。得到的對抗樣本Radv如式(4)所示
Radv=R+radv
(4)
將融合向量與對抗樣本一起送入編碼層進行下一步訓(xùn)練。
本文使用BiGRU神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)文本的上下文語義信息。LSTM和GRU都是RNN的變種模型,解決了RNN模型中長距離梯度爆炸的問題。GRU是LSTM的改進模型,相比較LSTM而言,GRU擁有更簡單的結(jié)構(gòu)和更少的參數(shù)。GRU的結(jié)構(gòu)中只引入兩個門控單元來控制信息的更新,分別為更新門和重置門,其中,更新門是由LSTM模型中的遺忘門和輸出門合并而來的。更新門負(fù)責(zé)控制對前一時刻信息的篩選與接收的信息,更新門的值越大說明前一時刻的信息被接收的越多;重置門負(fù)責(zé)控制是否遺忘前一時刻的信息,重置門的值越小說明遺忘的越多。GRU的單元結(jié)構(gòu)如圖2所示。
圖2 GRU單元結(jié)構(gòu)
zt=σ(Wzxt+Uzht-1+bz)
(5)
rt=σ(Wrxt+Urht-1+br)
(6)
(7)
(8)
其中,σ表示sigmoid 激活函數(shù);tanh表示Tanh激活函數(shù);⊙表示Hadamard乘積。
單向的GRU網(wǎng)絡(luò)只能捕捉從前向傳遞來的信息,而沒有考慮下文信息的重要性,因此使用雙向的門控循環(huán)神經(jīng)單元網(wǎng)絡(luò)。將字詞融合后的向量和對抗樣本輸入到BiGRU網(wǎng)絡(luò)中,并將前向信息和后向信息融合得到具有上下文語義信息表示的向量。BiGRU的模型結(jié)構(gòu)如圖3所示。
圖3 BiGRU模型結(jié)構(gòu)
BiGRU 網(wǎng)絡(luò)層為每個標(biāo)簽輸出一個預(yù)測分?jǐn)?shù)值,挑選分值最高的作為該標(biāo)簽的預(yù)測分類,但可能會出現(xiàn)標(biāo)簽序列不合理的情況。在本文中,在BiGRU網(wǎng)絡(luò)的后面接一個CRF層,可以為最后的預(yù)測標(biāo)簽添加約束條件來保證結(jié)果是合理的,得到最優(yōu)的標(biāo)簽序列。
條件隨機場是在一組給定的輸入序列X的前提下,得到標(biāo)簽序列Y的條件概率分布模型。將 BiGRU層輸出的標(biāo)簽概率作為發(fā)射分?jǐn)?shù),和轉(zhuǎn)移分?jǐn)?shù)一起計算最終得分。計算公式如式(9)~式(10)所示
(9)
(10)
CEC語料庫是由上海大學(xué)(語義智能實驗室)所構(gòu)建。以XML語言作為標(biāo)注格式,包含了Event(事件)、Denoter(標(biāo)志詞)、Time(時間)、Location(地點)、Participant(參與者)和Object(對象)這6個數(shù)據(jù)標(biāo)記,5類(地震、火災(zāi)、交通事故、恐怖襲擊和食物中毒)突發(fā)事件的新聞報道合計332篇。CEC語料庫雖然在規(guī)模上較小,但對事件和事件要素的標(biāo)注卻最為全面。
本文實驗環(huán)境是在Windows 10操作系統(tǒng)上完成的,模型利用深度學(xué)習(xí)PyTorch框架進行訓(xùn)練,編程語言選擇的是Python 3.7版本,GPU為NVIDIA GeForce RTX 3060,內(nèi)存為16 GB。實驗參數(shù)的設(shè)置見表1。
表1 實驗參數(shù)
本文采用準(zhǔn)確率P(Precision)、召回率R(Recall)和F1值來評價事件要素抽取的效果,計算公式如式(11)~式(13)所示
(11)
(12)
(13)
其中,TP表示被正確抽取的論元數(shù)量;FP表示被錯誤抽取的論元數(shù)量;FN表示未被抽取的正確的論元數(shù)量。
為了驗證本文提出的模型的有效性,進行了兩組實驗,分別為消融實驗和對比實驗。消融實驗以本文模型為基礎(chǔ)模型,通過移除某些組塊之后該模型的性能,來驗證該組塊對整個模型的作用。對比實驗通過和當(dāng)前的主流神經(jīng)網(wǎng)絡(luò)模型進行比較,驗證模型的有效性。實驗結(jié)果分別見表2和表3。
表2 消融實驗結(jié)果
表3 對比實驗結(jié)果
表2表示消融實驗的結(jié)果。通過結(jié)果的對比,當(dāng)模型僅使用BiGRU和CRF之后,模型的整體性能大幅下降。在本文模型的基礎(chǔ)上移除字詞融合模塊,實驗結(jié)果的準(zhǔn)確率、召回率和F1值分別下降了2.5%、3.5%和3.1%,說明融合詞信息后,可以豐富向量的語義表示,對要素識別的效果有幫助。Bert預(yù)訓(xùn)練語言模型具有強大的表征學(xué)習(xí)能力和上下文理解能力,當(dāng)不使用Bert時,相比較本文模型,準(zhǔn)確率、召回率和F1值分別下降了4.9%、10.4%和7.9%,說明了Bert模型的雙向編碼能力有助于提高事件要素識別的結(jié)果。當(dāng)本文的模型移除對抗訓(xùn)練模塊后,準(zhǔn)確率上升了0.3%,召回率和F1值分別下降1.4%和0.6%。對抗訓(xùn)練在事件要素識別任務(wù)中作為一種正則化的模塊,可以提高模型的泛化能力??傮w來看,Bert模塊對本文模型效果的提升最大,字詞融合和對抗訓(xùn)練模塊在一定程度上都有利于提高事件要素識別的效果。
表3表示對比實驗的結(jié)果。相比較DMCNN模型,本文的模型提高了12.8%的準(zhǔn)確率,8.0%的召回率和10.4%的F1值,在DMCNN模型中,輸入層將詞嵌入、位置嵌入和事件類型嵌入拼接作為詞級別的特征,而本文使用了預(yù)訓(xùn)練語言模型Bert去豐富字詞的向量表示。本文的模型相比于JRNN模型提高了8.0%的準(zhǔn)確率、9.6%的召回率和8.9%的F1值,用BiGRU網(wǎng)絡(luò)代替雙向循環(huán)神經(jīng)網(wǎng)絡(luò),解決了長距離信息遺忘的問題。相對于JMEE[16]模型,本文用雙向門控循環(huán)單元網(wǎng)絡(luò)代替雙向長短期記憶網(wǎng)絡(luò),計算變得更加簡潔,在嵌入層融合了字向量的信息,豐富向量的表示,分別提高了4.5%的準(zhǔn)確率、4.7%的召回率和4.6%的F1值。
針對當(dāng)前中文事件要素識別任務(wù)中未充分考慮詞邊界信息的問題,本文提出一種融合詞級別信息的對抗訓(xùn)練事件要素識別模型。通過Bert-Base-Chinese預(yù)訓(xùn)練語言模型獲得字符向量,利用jieba分詞工具將原始文本進行切分得到詞級別的信息,和字符向量進行融合得到特征向量,對特征向量進行對抗訓(xùn)練生成對抗樣本,和特征向量一同送入BiGRU網(wǎng)絡(luò)學(xué)習(xí)文本的上下文語義信息,最后用CRF進行解碼。在CEC語料庫上的實驗結(jié)果表明,本文提出的字詞融合和對抗訓(xùn)練模塊對識別結(jié)果有效,使模型的準(zhǔn)確率、召回率和F1值都有了不同程度的提高。