王 紅 王 陽 吳浩正
(中國民航大學計算機科學與技術學院 天津 300300)
事件同指消解[1]是將指向現實世界中同一個事件的描述句鏈接到同一個事件鏈的任務。早期的事件同指消解大都基于已知事件,可以充分利用事件的標注屬性[2-4],而基于未知事件的同指消解由于無法使用標注信息,因而任務難度大,相關研究也較少。Krause等[5]首次使用神經網絡的方法對文檔內事件進行同指消解,基于CNN對句子和觸發(fā)詞上下文進行特征抽取,并通過特征之間的余弦相似度判斷事件是否同指。此后,基于未知事件的同指消解研究也大部分都是使用簡單淺層網絡[6-8]和基于特征抽取[9-10]的方法進行事件同指消解。
在航空安全事故管理[11]中,航空安全事故調查報告[12]對事故原因的產生與發(fā)展過程的描述一般較為復雜。航空安全事故因果事件同指消解屬于未知事件的同指消解,用于識別因果關系抽取結果中的同指事件并構建因果鏈。目前針對航空安全事故因果事件同指消解的研究主要是祝寒[13]采用Word2vec[14]詞向量相似度計算方法實現的句子主語之間、觸發(fā)詞之間、賓語之間的同指消解,該方法可以較好地處理單詞之間的相似度,但是它無法得到句子級的語義相似度且不能解決多義詞的問題。
BERT模型[15]是一種關聯上下文的深層雙向編碼器,不僅能區(qū)分多義詞,而且將負采樣提升至句子級別,充分描述字符級、詞級、句子級甚至句間關系特征。中文BERT-wwm模型[16]基于中文BERT模型在預訓練中增加了全詞遮罩WWM(Whole Word Masking),將句子的切分粒度由字變成了詞,在多個中文數據集上超過了中文BERT模型的效果。但是,在計算語義相似時它需要將兩個句子一起放入網絡,大量的計算開銷使其不適合語義相似搜索之類的無監(jiān)督任務。如果僅將單句放入網絡,使用在句子前插入的[CLS]符號對應的輸出向量作為整個句子的語義表示,會導致效果變差[17]。孿生神經網絡[18]是一種用兩個網絡結構分別來表征句子對中的句子然后計算其相似度的方法,適用于類別數多但每個類別的樣本數量少的情況,可以降低計算開銷。
為此,本文將孿生神經網絡與中文BERT-wwm相結合,通過構建Siamese-BERT-wwm模型,對航空安全事故因果事件進行同指消解,旨在進一步提高事故因果鏈的語義效果和可解釋性。
因果事件由句子描述,例如:事件C為“飛行員沒有維持目視飛行程序”,事件E為“飛機在最低安全高度下面飛行”。如果事件C導致事件E,則稱二者是一個因果對
圖1 研究思路
(1) 句子預處理。利用正則表達式清洗句子使其具有語義,并用字符串匹配刪除相同因果對。
(2) 因果事件同指消解。針對單個事故,計算每個結果句和與之不成對的原因句以及標題句是否同指,將同指的句子消解,獲得有價值的因果對。
(3) 因果鏈去冗余。將事故標題句作為終點句,通過逆遍歷刪除與終點句無關的事件,并根據消解和去冗余后的因果對構建航空安全事故因果鏈。
BERT-wwm是雙向Transformer[19]的編碼器,它不僅通過雙向Transformer關聯了上下文,還通過全詞遮罩任務和下一句預測任務進行了數據的預訓練,從而能夠在大規(guī)模中文語料上進行無監(jiān)督學習,有效解決句子級的語義相似度計算問題。
Siamese-BERT-wwm模型如圖2所示。
圖2 Siamese-BERT-wwm模型結構
用Siamese-BERT-wwm模型比較任意兩個句子是否語義相似時,先將它們分別輸入到共享權重的兩個BERT-wmm中,再通過平均池化可以得到固定大小的句向量u和v,然后采用下式進行Softmax[20]分類:
o=softmax(W(u,v,|u-v|))
(1)
式中:權重W∈R3n×k;n是句向量的維度;k是分類標簽個數。
訓練Siamese-BERT-wwm模型時,考慮到效率和泛化性,設置批量大小(batch-size)為16,使用adam優(yōu)化器,先在10%的數據上進行學習率預熱(warm-up)使模型慢慢趨于穩(wěn)定,再沿用BERT-wwm模型句對匹配的最佳學習率2E-5,在中文維基百科數據集中進行4輪(epoch)訓練。
LCQMC[21]是哈工大深圳研究生院智能計算研究中心發(fā)布的句對分類數據集,由text_a、text_b和label組成,label為1時說明text_a與text_b相似,為0時則不相似。為了驗證Siamese-BERT-wwm模型的有效性,將其與word2vec和CLS在LCQMC中分別進行測試。其中,word2vec是通過詞向量來計算句子相似度的方法,用于航空安全事故因果事件同指消解[13],CLS是直接使用BERT-wwm的[CLS]標記得到句向量的相似度計算方法。LCQMC的評測指標是正確率(Accuracy),即正確判斷的數量占樣本總量的百分比,實驗結果如表1所示。
表1 LCQMC評測結果(%)
由表1可見,Siamese-BERT-wwm的正確率高于Word2vec,因為Word2vec的語義是詞級的而且不能區(qū)別多義詞,而Siamese-BERT-wwm不僅關聯上下文將語義提升至句子級別,還可以區(qū)別多義詞。CLS的正確率比Word2vec還低是因為用它得到的任意句向量之間的距離都很近。
在對單個航空安全事故的因果事件進行同指消解時,為避免標題句t被覆蓋,對E中所有結果句Ei,先與t進行同指判斷,再在所有與之不同對的原因句Cj(j≠i)中進行語義相似搜索,相似即為同指。
(1) 結果句和標題句同指消解過程。結果句和標題句的同指消解過程如圖3所示。
圖3 結果句和標題句同指消解過程
單個航空安全事故中,只用Siamese-BERT-wwm模型判斷兩句話是否同指會遺漏一些同指情況。比如“美國航空公司MD-82飛機圣路易斯發(fā)動機起火”和“發(fā)動機起火”在這起事故中是同指的,“Learjet60哥倫比亞機場沖出跑道”與“事故”也是同指的,但如果只用Siamese-BERT-wwm模型判斷,一句描述具體事件,一句描述一類事件,不能被認為同指。航空安全事故中不存在因句子結構劃分而存在歧義的情況,因此,在Siamese-BERT-wwm模型判斷相似前,先通過字符串匹配判斷句子字面包含關系來識別單個事故中廣泛描述句和具體描述句是否同指。
如果標題句t包含結果句Ei、結果句Ei包含“事故”二字,或者通過Siamese-BERT-wwm模型判斷出兩句相似,則兩句同指,將結果句改為與標題句相同的句子。
(2) 結果句和原因句同指消解過程。結果句和與之不同對的原因句的同指消解過程如圖4所示,也是先判斷句子字面包含關系,再用Siamese-BERT-wwm模型判斷相似。
圖4 結果句和原因句同指消解過程
如果結果句Ei和原因句Cj(j≠i)有包含關系,或者通過Siamese-BERT-wwm模型判斷出兩句相似,則兩句同指。其中,flag[j]用來記錄原因句Cj是否修改過,初始值為0表示未修改,為1時則表示修改過。對同指的兩句進行消解時,如果原因句未修改過,將原因句改為與結果句相同的句子,否則將結果句改為與原因句相同的句子。
原始數據是從世界航空安全事故調查報告的860個事故中抽取的10 782個因果對。用正則表達式刪除句子中不必要的詞,生成具有語義的句子,需刪詞語的正則表示如表2所示。再通過字符串匹配刪除重復的因果對,最終得到7 979個符合要求的因果對作為實驗數據。
表2 需刪詞語的正則表示
含有不同因果對數量的事故個數如圖5所示,每個航空安全事故都包含至少1個因果對,至多34個因果對。大部分航空安全事故的因果對數量都在20以內,占事故總量的93.14%。
圖5 860個航空安全事故的因果對數量分布
在單個航空安全事故內,將每個結果句和與之不在同一因果對的其他原因句以及事故標題句進行同指消解。同指消解效果評估指標值包括準確率P(Precision)、召回率R(Recall)和F1值(F1 measure),其中:P是同指消解結果中正確消解數量占實際消解數量的百分比,反映了同指消解的準確程度;R是同指消解結果中正確消解數量占應消解總數的百分比,反映了同指消解的完備性;F1值是結合二者的綜合評估指標,采用式(2)計算。
如表3所示,Siamese-BERT-wwm模型的效果比Word2vec更好,因為它解決了Word2vec存在的多義詞的問題,關聯了上下文充分描述句子語義,基于Siamese-BERT-wwm模型再加入字符串匹配后還能識別單個事故中廣泛描述句和具體描述句的同指關系。
表3 航空安全事故因果事件同指消解結果(%)
航空安全事故的因果事件同指消解后,同一個事件都只能由相同的句子描述。以標題t是“2013年1月29日Scat航空CRJ2阿拉木圖附近撞地墜毀”的事故T為例,它的12個因果對如表4所示。
表4 事故T的因果對句子表示
事故T的所有結果句Ei在標題句t和原因句Cj(j≠i)中對同指的句子進行消解,過程如下:
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所示。相同事件的句子描述被統一,使得原本包括標題句在內的25個事件句簡化為了14個事件句。
表5 事故T同指消解前后的因果對
同指消解后的因果對雖然可以構成因果鏈,但是仍存在冗余,從事故終點句t開始,逆遍歷所有能夠直接或間接導致t的事件,將它們加入列表list,遍歷完之后仍不在list中的就是需要刪除的冗余。去冗余流程如圖6所示。
圖6 因果鏈去冗余流程
事故T中,同指消解后由相同節(jié)點和因果對關系構成因果鏈如圖7所示,E9、E11、C12、E12是刪除的冗余事件。通過同指消解和去冗余,最初的12個因果對和包括標題在內的25個事件句,簡化為因果鏈中的9個因果對和包括標題句在內的10個事件句。直接或間接導致最終結果的事件都被保留,因果鏈仍能有效描述事故發(fā)展過程。
圖7 事故T的因果鏈構建過程
860個航空安全事故的因果對數量統計結果如圖8所示,因果對總量由7 979減至4 725,減少了40.8%,有效降低了因果鏈的信息冗余。
圖8 860個航空安全事故處理前后的因果對數量分布對比
本文提出的Siamese-BERT-wwm模型,通過在孿生神經網絡中使用BERT-wwm獲取句向量,將事件句的語義表示由詞級提升至句子級并減少計算開銷。與原有的航空安全事故因果事件同指消解方法相比,綜合評估指標F1值提高了12.67百分點,進一步增強了事故因果鏈的可解釋性,為多航空安全事故的因果鏈的構建和關聯分析奠定了基礎。