祖月芳,凌海風,呂永順
(陸軍工程大學 野戰(zhàn)工程學院, 南京 210004)
軍事裝備是軍隊戰(zhàn)斗力的重要組成部分,裝備運用過程中的故障可能直接影響裝備任務的完成,因此裝備故障的快速診斷維修一直是裝備技術保障工作的重點和難點。當前裝備故障診斷主要以人工現(xiàn)場診斷為主,基于當前的研究現(xiàn)狀,本文依托在裝備維修手冊、裝備履歷書以及裝備管理信息系統(tǒng)中大量存在的裝備故障和維修的經(jīng)驗等數(shù)據(jù),采用自然語言處理(NLP)技術實現(xiàn)裝備故障文本的檢索匹配,以提高裝備故障的診斷能力。
裝備故障文本的相似度計算必須將已有的結構化、半結構化以及非結構化的故障文本轉化為讓計算機理解的“自然語言”。目前常用計算文本相似度的方法是基于詞向量的方法,它不僅充分考慮了語義特征并且解決了維度災難的問題,具有良好的性能。1986年Hinton[1]提出了分布式詞向量表示,不僅能夠表示語義的相似度,而且使計算的難度大大降低了。2013年Tomas Mikolov等[2-3]推出了一款用于獲取word vector的工具包Word2vec,它是在深度學習的基礎上獲取的一種詞向量的分布式表達。
隨著詞向量模型的不斷推進[4],詞向量已經(jīng)在自然語言處理方面得到了廣泛應用,并取得了非常不錯的效果。例如,文獻[5]運用word vector訓練得到的詞向量,對搜索詞的分類聚類進行了研究;文獻[6]通過詞向量特征構建了循環(huán)神經(jīng)網(wǎng)絡語言模型;文獻[7]將詞向量與LDA相融合,解決了短文本的分類問題;文獻[8]通過求文本中詞向量平均值得到文本向量。雖然以上方法運用詞向量解決了文本的表示問題,但對文本中詞匯的詞性、語義以及文本中詞語的位置關系考慮還不夠周全。
針對以上算法中存在的不足,本文提出一種融合詞性、語義[9]及詞序因子的裝備故障文本相似度計算方法。
對于裝備故障現(xiàn)象來說,輸入的一般都是短文本,區(qū)分詞性對于故障特征的判斷具有重要的影響。裝備故障文本包含名詞、動詞、形容詞、數(shù)詞、代詞、量詞等6類實詞,其中名詞和形容詞更正表征故障的原因和部位,因此應該賦予名詞和形容詞更高的權重。例如:“發(fā)動機冒黑煙”,“發(fā)動機”和“黑煙”都是名詞,“黑煙”中的“黑”是形容詞,它們比動詞“冒”更能反映整個句子的意思。為了更清楚的表征裝備故障文本中詞語的詞性特征,現(xiàn)將故障文本中名詞、動詞、形容詞的權重調節(jié)為:
ωρi={scoremin,score-d}, 0<ωρ≤1
(1)
式(1)中:ωρi表示故障文本中詞語i的詞性權重因子;scoremin表示故障文本中詞語的詞性權重的下限值,且它的值一定大于0。根據(jù)裝備故障文本的實際特征,將不同詞性的下限值設定為:1>名詞>形容詞>動詞>其他>0;d表示詞性消減因子,用以說明故障文本中的特征詞隨詞性的變化。以“發(fā)動機冒黑煙”為例,假設d=0.2,那么按照詞性消減幅度,假定名詞權重是1,即“發(fā)動機”和“黑煙”的權重為1,若句子中包含形容詞,則形容詞權重為1-0.2=0.8,那么動詞“冒”的權重為0.6。若2個句子中詞性不完全一致,那么以第一個故障文本中已存在的詞性為基準,不存在的詞性依據(jù)設定的詞性下限值進行增減。
針對裝備故障文本的特征,在基于詞匯語義信息的文本相似度計算方法[11]的基礎上,引入詞性因子[10],以提高裝備故障文本相似度計算的精度,實現(xiàn)裝備故障文本的快速檢索和匹配。
2.2.1詞匯語義的相似度計算
詞向量訓練模型最早是由Mikolov等[2-3]在2013年提出的,包括CBOW和Skip-Gram 2種模型。由于Skip-Gram模型高效、簡便的特點,本文采用該模型對故障文本語料庫進行訓練,得到38 206個維度為200的詞向量,然后通過計算向量距離的方法獲得詞匯間的語義相似度。之前相似度計算的方法已經(jīng)被提出了很多種,這里我們采用最常用的幾種計算相似度的方法。
1) 余弦相似度。向量的夾角余弦值可以體現(xiàn)2個向量在方向上的差異,余弦相似度就是把一個向量空間中2個夾角的余弦值作為衡量2個個體之間差異的大小。將向量計算的相似度歸一化0-1,采用方法為:
simc(a,b)=0.5+0.5×cos(a,b)
2) 杰卡德相似度。杰卡德相似度一般被用來度量2個集合之間的差異大小。2個n維向量a與b間的杰卡德相似度為:
2個集合共有的元素越多,二者越相似;增加2個集合共有的元素作為分母是為了控制距離的取值范圍。將其歸一化后為:


2.2.2融合詞性、語義的文本相似度計算方法
結合裝備故障文本的特點,以故障文本中詞語的TF-IDF值[11]和詞性權重的乘積作為權重,改進裝備故障文本的相似度計算公式,使得裝備故障文本特征向量的元素之間通過詞匯語義以及詞性的相似度建立聯(lián)系。對于故障文本Di和Dj,的相似度計算公式為:
(2)
式(2)中:Sj,n表示由2.2.1節(jié)中幾種向量相似度的計算方法得到的詞匯之間的相似度;ωj和ωk是故障文本Di中的詞匯,ωm和ωn是故障文本Dj中的詞匯;T(ωj)表示ωj的TF-IDF值;ωρj表示ωj對應的詞性權重;P取值在[0,1]之間,代表詞匯相似度的閾值,sim介于[0,1]之間,表示文本的相似度值。
以下面表1中的3個句子為例,對融合詞匯語義和詞性的故障文本相似度計算方法進行介紹。

表1 文本數(shù)據(jù)處理
首先去除停用詞,利用余弦相似度計算詞匯之間的相似度,如圖1、圖2所示(每個詞和它本身的相似度為1)。圖中還給出了式(2)各部分的計算結果。這里以每個詞在句子中的詞頻代替TF-IDF權重,以名詞的權重為1,形容詞權重為0.8,動詞權重為0.6,其他類詞權重為0.4為例,標注在記錄詞匯的方框內。

圖1 文本D0與D1、D0與D2詞性語義關系示意圖

圖2 文本D1與D2詞性語義關系示意圖
由式(2)可得引入詞性語義計算結果,如表2所示。
由表2中的計算結果可知,引入詞性因子后意思相近句子的相似度在一定程度上得到了提高,同時,對完全不相關的句子D0與D2以及D1與D2,2種方法的計算結果都穩(wěn)定在0.5左右,這樣的結果顯然不符合預想的效果。鑒于這種情況,考慮加入詞序因素進一步優(yōu)化。
詞序表示詞語在句子中的先后順序。在漢語表達中,詞語位置的不同可能會改變詞匯完全相同的2個句子的意思,以下面2個句子為例。
D3:那些上海來的小朋友很熱情。
D4:那些小朋友來上海很熱情。
在漢語表達中,經(jīng)常存在類似D3與D4這樣的句子,對其進行分詞、去停用詞等數(shù)據(jù)預處理工作后,它們會因為詞序的不同,使句子的意思發(fā)生很大變化,因此在計算文本相似度時考慮詞序相似度是非常有必要的。在2.2.2 融合詞性、語義的文本相似度計算方法基礎上,引入詞序相似度,進一步優(yōu)化裝備故障文本相似度計算方法,提高故障文本匹配的精確度。
計算詞序相似度使用較多的是采用向量距離的詞序算法[12]。根據(jù)圖1、圖2中詞匯之間的相似度計算結果可以看出,在采用余弦相似度進行特征詞間的相似度時,還可以得出這樣一個結論:詞匯之間只要存在一定關聯(lián)的或相似程度比較高時,特征詞的相似度計算結果均在0.5以上。反之,如果詞匯的關聯(lián)度很小或基本不相似時,詞匯的相似度計算結果沒有超過0.5的。因此采用余弦相似度計算2個詞匯之間的語義相似度,以0.5作為閥值可以區(qū)分特征詞的語義是否相似。
結合語義的相似度計算可能存在2個文本中的特征詞完全不同,但是文本意思表達基本一致的情況,提出一種新的詞序相似度計算方法。其核心是文本D0與D1中的特征詞相似度超過0.5的詞的個數(shù)越多,并且D1達到D0的順序所交換的詞語次數(shù)越少(2個句子中的特征詞相似度超過0.5則默認2個詞應該位于同一位置,若有多個特征詞相似度超過0.5,則默認相似度最高的2個詞應該位于同一位置),則2個文本的詞序相似度越大。
詞序(Order)相似度公式為:
(3)

算法流程如下:
首先,找出待比較文本中相似度超過0.5的詞匯的順序向量。假定文本Di=(ω1,ω2,ω3,…,ωn)中的詞匯對應的順序索引為Vi=(ν1,ν2,ν3,…,νn)=(1,2,3…,n),文本Dj=(ω1,ω2,ω3,…,ωm)對應的順序索引為Vj,以Vi為標準,將文本Dj與Di中的特征詞進行相似度計算,Dj中特征詞相似度超過0.5的按照Vi的順序生成索引Vj,特征詞相似度不超過0.5的詞的位置直接去掉。以D0=(發(fā)動機,冒,黑煙)、D1=(內燃機,出現(xiàn),黑煙)為例,將D0對應的順序索引表示為V0=(1,2,3),那么D1對應的順序索引為V1=(1,3)。

(4)
由式(4)可得,句子D0、D1、D2的相似度發(fā)生了很大變化,如表3所示。
通過表3的計算結果可以看出,引入詞序相似度后,文本的相似度發(fā)生了很大變化。對于D0、D1、D23個文本,從對裝備故障現(xiàn)象的理解來看,文本D0與D1描述的故障現(xiàn)象是非常相似的;而文本D0與D2以及D1與D2幾乎沒有關聯(lián)性。這與融合詞序相似度后的計算結果是相符的,并且融合詞序后不相關句子的區(qū)分度更明顯了,引入詞性和詞序因素,計算裝備故障文本的相似度更符合人們的主觀判斷。

表3 融合詞序相似度后的計算結果
在當前的相似度計算方法研究中,大多數(shù)是針對英文短文本,結合裝備故障現(xiàn)象的特點,本文主要對比以下幾種方法的計算效果對裝備故障文本的相似度進行研究:
方法1:谷重陽等[11]提出的一種基于詞匯語義的相似度計算方法,在計算時考慮語義并加入詞頻作為權重的方法,未考慮詞性、詞序等因素;
方法2:劉繼明等[10]提出的一種基于句向量的文本相似度計算方法,在計算時從詞性和詞序方面優(yōu)化了平反頻率計算方法,未考慮詞匯的語義因素,無法識別意思相近的詞;
方法3:本文提出的融合詞性、語義及詞序的裝備故障文本相似度計算方法。
為了進一步驗證本文方法的有效性,本文從55 903條裝備故障案例庫中,選取2 000條故障文本作為訓練集、348條故障文本作為測試集,并進行人工標記,將相似的句子標記為1,不相似的標記為0。
對于故障文本匹配程度的好壞,采用精確率、召回率和F1-score值等3個常用的參數(shù)進行評價。精確率(precision)是匹配到的相關故障文本的條數(shù)占匹配到的故障文本條數(shù)的比例,衡量故障文本的查準率;召回率(recall)是匹配到的相關故障文本的條數(shù)占故障庫中所有相關故障文本條數(shù)的比例,衡量故障文本的查全率;F1-score值是把精確率和召回率結合起來的評價指標。
從裝備故障庫中進行故障文本匹配時,把文本分成4類:TP表示匹配到的相關故障文本;FP表示匹配到的不相關的故障文本;FN表示表示相關但沒有匹配到的故障文本;TN表示不相關且系統(tǒng)沒有匹配到的故障文本。則:
以發(fā)動機為例,采用不同的相似度計算方法計算詞匯相似度得到的結果如表4所示。通過實驗結果可以看出,運用余弦相似度計算詞匯的相似度更能反映裝備故障之間的差異。

表4 不同相似度計算方法計算詞匯相似度結果
通過對數(shù)據(jù)進行對比分析,將文本相似度的閾值設置為0.80,對實驗數(shù)據(jù)進一步統(tǒng)計計算,得出了3種方法的精確率、召回率以及F1-score值。3種方法的相似度結果如圖3所示,由圖3可知,在裝備故障文本的相似度計算方面,本文方法較方法1和方法2精確率和召回率都有所提高,F(xiàn)1-score值甚至達到了0.868,說明了本文方法具有較高的查準率和查全率,更適合用于計算裝備故障文本的相似度。

圖3 3種方法的相似度曲線
3種方法的相似度占比如圖4所示,將實驗數(shù)據(jù)集的相似度結果分為4個相似度區(qū)間進行進一步分析得出,方法1中,所有故障文本的相似度計算結果都在0.45以上,然而事實上約一半以上的文本都是沒有任何關聯(lián)的,它們的相似度應該存在一部分為0的情況,這樣的計算效果顯然是不符合邏輯的。方法2在區(qū)間[0]的故障文本比例達到了89%,相似度值在0.8以上的故障文本只有2%,不存在故障文本相似度在(0.6,0.8]這個區(qū)間的,這對某些故障部位相關聯(lián)的故障數(shù)據(jù)的匹配度不高,計算結果也不理想。本文方法中,區(qū)間為[0]的故障文本達到了47%,在(0.8,1.0]的文本約占3%,且在區(qū)間(0,0.6]和(0.6,0.8]之間的故障文本都存在,這樣的計算結果與實際選擇的實驗數(shù)據(jù)更相符,更符合人們的主觀判斷。

圖4 3種方法的相似度占比直方圖
綜合所述,本文的方法較方法1、方法2有更好的查全率和查準率,更符合客觀實際。同時,通過方法2和方法3對比可知,引入詞性和詞序因子不僅提高了裝備故障文本相似度計算的精確度,而且將完全不相關的句子可以更明確的區(qū)分開,這種計算方法顯然更適合運用于裝備故障文本的匹配。
本文結合裝備故障文本的特點,針對一詞多義和詞性、詞序等可能對文本造成的影響,在詞匯語義相似度計算的基礎上,引入詞性、詞序因子優(yōu)化裝備故障文本相似度計算方法,在實驗所用的語料庫中較以往的方法得到了較好的準確率和召回率,有效提高了裝備故障文本的匹配效果。