王 紅 王 陽 吳浩正
(中國民航大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300300)
事件同指消解[1]是將指向現(xiàn)實(shí)世界中同一個事件的描述句鏈接到同一個事件鏈的任務(wù)。早期的事件同指消解大都基于已知事件,可以充分利用事件的標(biāo)注屬性[2-4],而基于未知事件的同指消解由于無法使用標(biāo)注信息,因而任務(wù)難度大,相關(guān)研究也較少。Krause等[5]首次使用神經(jīng)網(wǎng)絡(luò)的方法對文檔內(nèi)事件進(jìn)行同指消解,基于CNN對句子和觸發(fā)詞上下文進(jìn)行特征抽取,并通過特征之間的余弦相似度判斷事件是否同指。此后,基于未知事件的同指消解研究也大部分都是使用簡單淺層網(wǎng)絡(luò)[6-8]和基于特征抽取[9-10]的方法進(jìn)行事件同指消解。
在航空安全事故管理[11]中,航空安全事故調(diào)查報告[12]對事故原因的產(chǎn)生與發(fā)展過程的描述一般較為復(fù)雜。航空安全事故因果事件同指消解屬于未知事件的同指消解,用于識別因果關(guān)系抽取結(jié)果中的同指事件并構(gòu)建因果鏈。目前針對航空安全事故因果事件同指消解的研究主要是祝寒[13]采用Word2vec[14]詞向量相似度計(jì)算方法實(shí)現(xiàn)的句子主語之間、觸發(fā)詞之間、賓語之間的同指消解,該方法可以較好地處理單詞之間的相似度,但是它無法得到句子級的語義相似度且不能解決多義詞的問題。
BERT模型[15]是一種關(guān)聯(lián)上下文的深層雙向編碼器,不僅能區(qū)分多義詞,而且將負(fù)采樣提升至句子級別,充分描述字符級、詞級、句子級甚至句間關(guān)系特征。中文BERT-wwm模型[16]基于中文BERT模型在預(yù)訓(xùn)練中增加了全詞遮罩WWM(Whole Word Masking),將句子的切分粒度由字變成了詞,在多個中文數(shù)據(jù)集上超過了中文BERT模型的效果。但是,在計(jì)算語義相似時它需要將兩個句子一起放入網(wǎng)絡(luò),大量的計(jì)算開銷使其不適合語義相似搜索之類的無監(jiān)督任務(wù)。如果僅將單句放入網(wǎng)絡(luò),使用在句子前插入的[CLS]符號對應(yīng)的輸出向量作為整個句子的語義表示,會導(dǎo)致效果變差[17]。孿生神經(jīng)網(wǎng)絡(luò)[18]是一種用兩個網(wǎng)絡(luò)結(jié)構(gòu)分別來表征句子對中的句子然后計(jì)算其相似度的方法,適用于類別數(shù)多但每個類別的樣本數(shù)量少的情況,可以降低計(jì)算開銷。
為此,本文將孿生神經(jīng)網(wǎng)絡(luò)與中文BERT-wwm相結(jié)合,通過構(gòu)建Siamese-BERT-wwm模型,對航空安全事故因果事件進(jìn)行同指消解,旨在進(jìn)一步提高事故因果鏈的語義效果和可解釋性。
因果事件由句子描述,例如:事件C為“飛行員沒有維持目視飛行程序”,事件E為“飛機(jī)在最低安全高度下面飛行”。如果事件C導(dǎo)致事件E,則稱二者是一個因果對

圖1 研究思路
(1) 句子預(yù)處理。利用正則表達(dá)式清洗句子使其具有語義,并用字符串匹配刪除相同因果對。
(2) 因果事件同指消解。針對單個事故,計(jì)算每個結(jié)果句和與之不成對的原因句以及標(biāo)題句是否同指,將同指的句子消解,獲得有價值的因果對。
(3) 因果鏈去冗余。將事故標(biāo)題句作為終點(diǎn)句,通過逆遍歷刪除與終點(diǎn)句無關(guān)的事件,并根據(jù)消解和去冗余后的因果對構(gòu)建航空安全事故因果鏈。
BERT-wwm是雙向Transformer[19]的編碼器,它不僅通過雙向Transformer關(guān)聯(lián)了上下文,還通過全詞遮罩任務(wù)和下一句預(yù)測任務(wù)進(jìn)行了數(shù)據(jù)的預(yù)訓(xùn)練,從而能夠在大規(guī)模中文語料上進(jìn)行無監(jiān)督學(xué)習(xí),有效解決句子級的語義相似度計(jì)算問題。
Siamese-BERT-wwm模型如圖2所示。

圖2 Siamese-BERT-wwm模型結(jié)構(gòu)
用Siamese-BERT-wwm模型比較任意兩個句子是否語義相似時,先將它們分別輸入到共享權(quán)重的兩個BERT-wmm中,再通過平均池化可以得到固定大小的句向量u和v,然后采用下式進(jìn)行Softmax[20]分類:
o=softmax(W(u,v,|u-v|))
(1)
式中:權(quán)重W∈R3n×k;n是句向量的維度;k是分類標(biāo)簽個數(shù)。
訓(xùn)練Siamese-BERT-wwm模型時,考慮到效率和泛化性,設(shè)置批量大小(batch-size)為16,使用adam優(yōu)化器,先在10%的數(shù)據(jù)上進(jìn)行學(xué)習(xí)率預(yù)熱(warm-up)使模型慢慢趨于穩(wěn)定,再沿用BERT-wwm模型句對匹配的最佳學(xué)習(xí)率2E-5,在中文維基百科數(shù)據(jù)集中進(jìn)行4輪(epoch)訓(xùn)練。
LCQMC[21]是哈工大深圳研究生院智能計(jì)算研究中心發(fā)布的句對分類數(shù)據(jù)集,由text_a、text_b和label組成,label為1時說明text_a與text_b相似,為0時則不相似。為了驗(yàn)證Siamese-BERT-wwm模型的有效性,將其與word2vec和CLS在LCQMC中分別進(jìn)行測試。其中,word2vec是通過詞向量來計(jì)算句子相似度的方法,用于航空安全事故因果事件同指消解[13],CLS是直接使用BERT-wwm的[CLS]標(biāo)記得到句向量的相似度計(jì)算方法。LCQMC的評測指標(biāo)是正確率(Accuracy),即正確判斷的數(shù)量占樣本總量的百分比,實(shí)驗(yàn)結(jié)果如表1所示。

表1 LCQMC評測結(jié)果(%)
由表1可見,Siamese-BERT-wwm的正確率高于Word2vec,因?yàn)閃ord2vec的語義是詞級的而且不能區(qū)別多義詞,而Siamese-BERT-wwm不僅關(guān)聯(lián)上下文將語義提升至句子級別,還可以區(qū)別多義詞。CLS的正確率比Word2vec還低是因?yàn)橛盟玫降娜我饩湎蛄恐g的距離都很近。
在對單個航空安全事故的因果事件進(jìn)行同指消解時,為避免標(biāo)題句t被覆蓋,對E中所有結(jié)果句Ei,先與t進(jìn)行同指判斷,再在所有與之不同對的原因句Cj(j≠i)中進(jìn)行語義相似搜索,相似即為同指。
(1) 結(jié)果句和標(biāo)題句同指消解過程。結(jié)果句和標(biāo)題句的同指消解過程如圖3所示。

圖3 結(jié)果句和標(biāo)題句同指消解過程
單個航空安全事故中,只用Siamese-BERT-wwm模型判斷兩句話是否同指會遺漏一些同指情況。比如“美國航空公司MD-82飛機(jī)圣路易斯發(fā)動機(jī)起火”和“發(fā)動機(jī)起火”在這起事故中是同指的,“Learjet60哥倫比亞機(jī)場沖出跑道”與“事故”也是同指的,但如果只用Siamese-BERT-wwm模型判斷,一句描述具體事件,一句描述一類事件,不能被認(rèn)為同指。航空安全事故中不存在因句子結(jié)構(gòu)劃分而存在歧義的情況,因此,在Siamese-BERT-wwm模型判斷相似前,先通過字符串匹配判斷句子字面包含關(guān)系來識別單個事故中廣泛描述句和具體描述句是否同指。
如果標(biāo)題句t包含結(jié)果句Ei、結(jié)果句Ei包含“事故”二字,或者通過Siamese-BERT-wwm模型判斷出兩句相似,則兩句同指,將結(jié)果句改為與標(biāo)題句相同的句子。
(2) 結(jié)果句和原因句同指消解過程。結(jié)果句和與之不同對的原因句的同指消解過程如圖4所示,也是先判斷句子字面包含關(guān)系,再用Siamese-BERT-wwm模型判斷相似。

圖4 結(jié)果句和原因句同指消解過程
如果結(jié)果句Ei和原因句Cj(j≠i)有包含關(guān)系,或者通過Siamese-BERT-wwm模型判斷出兩句相似,則兩句同指。其中,flag[j]用來記錄原因句Cj是否修改過,初始值為0表示未修改,為1時則表示修改過。對同指的兩句進(jìn)行消解時,如果原因句未修改過,將原因句改為與結(jié)果句相同的句子,否則將結(jié)果句改為與原因句相同的句子。
原始數(shù)據(jù)是從世界航空安全事故調(diào)查報告的860個事故中抽取的10 782個因果對。用正則表達(dá)式刪除句子中不必要的詞,生成具有語義的句子,需刪詞語的正則表示如表2所示。再通過字符串匹配刪除重復(fù)的因果對,最終得到7 979個符合要求的因果對作為實(shí)驗(yàn)數(shù)據(jù)。

表2 需刪詞語的正則表示
含有不同因果對數(shù)量的事故個數(shù)如圖5所示,每個航空安全事故都包含至少1個因果對,至多34個因果對。大部分航空安全事故的因果對數(shù)量都在20以內(nèi),占事故總量的93.14%。

圖5 860個航空安全事故的因果對數(shù)量分布
在單個航空安全事故內(nèi),將每個結(jié)果句和與之不在同一因果對的其他原因句以及事故標(biāo)題句進(jìn)行同指消解。同指消解效果評估指標(biāo)值包括準(zhǔn)確率P(Precision)、召回率R(Recall)和F1值(F1 measure),其中:P是同指消解結(jié)果中正確消解數(shù)量占實(shí)際消解數(shù)量的百分比,反映了同指消解的準(zhǔn)確程度;R是同指消解結(jié)果中正確消解數(shù)量占應(yīng)消解總數(shù)的百分比,反映了同指消解的完備性;F1值是結(jié)合二者的綜合評估指標(biāo),采用式(2)計(jì)算。
如表3所示,Siamese-BERT-wwm模型的效果比Word2vec更好,因?yàn)樗鉀Q了Word2vec存在的多義詞的問題,關(guān)聯(lián)了上下文充分描述句子語義,基于Siamese-BERT-wwm模型再加入字符串匹配后還能識別單個事故中廣泛描述句和具體描述句的同指關(guān)系。

表3 航空安全事故因果事件同指消解結(jié)果(%)
航空安全事故的因果事件同指消解后,同一個事件都只能由相同的句子描述。以標(biāo)題t是“2013年1月29日Scat航空CRJ2阿拉木圖附近撞地墜毀”的事故T為例,它的12個因果對如表4所示。

表4 事故T的因果對句子表示
事故T的所有結(jié)果句Ei在標(biāo)題句t和原因句Cj(j≠i)中對同指的句子進(jìn)行消解,過程如下:
1)E1與C2同指,C2替換為E1,flag[2]=1。
2)E2與C3同指,C3替換為E2,flag[3]=1。
3)E3與C4同指,C4替換為E3,flag[4]=1。
4)E4與t同指,E4替換為t;E4(t)與C11同指,C11替換為t,flag[11]=1。
5)E5與C6同指,C6替換為E5,flag[6]=1。
6)E6與C4(E3)同指,因flag[4]=1,E6替換為E3。
7)E7與C8同指,C8替換為E7,flag[8]=1;E7與C9同指,C9替換為E7,flag[9]=1。
8)E8與C10同指,C10替換為E8,flag[10]=1。
9)E9沒有同指句。
10)E10與t同指,E10替換為t;E10(t)與C11(t)同指,因flag[11]=1,C11(t)替換為E10(t)。
11)E11沒有同指句。
12)E12沒有同指句。
同指消解前后的因果對如表5所示。相同事件的句子描述被統(tǒng)一,使得原本包括標(biāo)題句在內(nèi)的25個事件句簡化為了14個事件句。

表5 事故T同指消解前后的因果對
同指消解后的因果對雖然可以構(gòu)成因果鏈,但是仍存在冗余,從事故終點(diǎn)句t開始,逆遍歷所有能夠直接或間接導(dǎo)致t的事件,將它們加入列表list,遍歷完之后仍不在list中的就是需要刪除的冗余。去冗余流程如圖6所示。

圖6 因果鏈去冗余流程
事故T中,同指消解后由相同節(jié)點(diǎn)和因果對關(guān)系構(gòu)成因果鏈如圖7所示,E9、E11、C12、E12是刪除的冗余事件。通過同指消解和去冗余,最初的12個因果對和包括標(biāo)題在內(nèi)的25個事件句,簡化為因果鏈中的9個因果對和包括標(biāo)題句在內(nèi)的10個事件句。直接或間接導(dǎo)致最終結(jié)果的事件都被保留,因果鏈仍能有效描述事故發(fā)展過程。

圖7 事故T的因果鏈構(gòu)建過程
860個航空安全事故的因果對數(shù)量統(tǒng)計(jì)結(jié)果如圖8所示,因果對總量由7 979減至4 725,減少了40.8%,有效降低了因果鏈的信息冗余。

圖8 860個航空安全事故處理前后的因果對數(shù)量分布對比
本文提出的Siamese-BERT-wwm模型,通過在孿生神經(jīng)網(wǎng)絡(luò)中使用BERT-wwm獲取句向量,將事件句的語義表示由詞級提升至句子級并減少計(jì)算開銷。與原有的航空安全事故因果事件同指消解方法相比,綜合評估指標(biāo)F1值提高了12.67百分點(diǎn),進(jìn)一步增強(qiáng)了事故因果鏈的可解釋性,為多航空安全事故的因果鏈的構(gòu)建和關(guān)聯(lián)分析奠定了基礎(chǔ)。