石彩霞,李書琴,劉 斌
(西北農林科技大學信息工程學院,陜西楊凌 712100)
文本相似度計算是文本處理領域的關鍵性技術,廣泛應用于自然語言處理(Natural Language Processing,NLP)的信息檢索、文本分類、自動問答和文本重復性檢測等多種任務中[1]。近年來,文本相似度計算在電子商務、新聞推送、推薦系統(tǒng)等熱門領域也受到極大關注[2]。
目前,文本相似度計算方法主要分為三類,一是基于字符串的計算方法,如通過統(tǒng)計文本共有字詞數(shù)量計算相似度的N-gram[3]和Jaccard[4]算法,二是基于語料庫的計算方法,如忽略詞序、句法結構等關鍵性要素利用詞向量[5]基于詞袋模型計算相似度的VSM[6]和LSA[7]等,三是基于深度學習的計算方法,如基于深度學習語義匹配模型的DSSM[8]、通過神經(jīng)網(wǎng)絡生成詞向量以計算相似度的Word2vec[9]和Glove[10]等。文獻[11]基于CNN并引入多注意力機制,通過關注詞匯間和句子間的語義信息來計算句子相似度。文獻[12]提出一種Siamese LSTM方法,其利用記憶單元使LSTM能夠存儲長序列信息,從而解決RNN長期依賴的問題。
現(xiàn)有多數(shù)文本相似度計算相關研究僅考慮單一文本特征而進行相似度計算。馬慧芳等人[13]融合詞項共現(xiàn)距離相關度和類別特征來計算短文本相似度。鄧涵等人[14]從句子結構角度對句法和依存關系進行分析計算。YANG等人[15]將淺層句法結構化特征用依賴樹表示并計算相似度,但該方法不能分析句子的深層語義信息。張小川等人[16]融合主題相似度因子和詞語共現(xiàn)度因子提出基于LDA的短文本相似度計算算法,但其未考慮文本的語義、詞序和主題關聯(lián)性等特征。
短文本具有句子簡短、詞語較少、語義豐富和特征稀疏的特點,本文綜合考慮短文本的多種特征因素,如共現(xiàn)詞、詞頻及語義信息等對文本相似度的影響,在分析傳統(tǒng)文本相似度計算方法的基礎上,利用基于深度學習的方法計算相似度,通過閾值對相似度值進行檢驗篩選,并將改進的Damerau-Levenshtein距離算法、考慮詞頻的語義相似度計算算法、基于Word2vec與LSTM的相似度計算算法3種考慮單因素的計算方法進行加權融合,應用于短文本相似度計算,從而使得計算結果更加準確合理。
Levenshtein距離[17]于1965年由蘇聯(lián)數(shù)學家Vladimir Levenshtein提出,其又被稱為編輯距離(Edit Distance),主要用于比較2個字符串的相似度。Levenshtein距離是指將一個字符串序列通過插入、刪除和替換等單字符操作轉變?yōu)榱硪粋€字符串所需的最小操作數(shù)量。
短文本具有句子簡短的特點,相似文本之間會有較多的共現(xiàn)詞,適合通過編輯距離計算相似度。Frederickj Damau提出了改進Levenshtein距離的Damerau-Levenshtein距離[18],其考慮置換操作對編輯距離的影響,但本質依然是編輯距離。Damerau-Levenshtein距離的計算方式如下:
設有2個字符串S和T,其中,S為長度為m的源字符串,T為長度為n的目標字符串,用dlS,T表示S和T之間的Damerau-Levenshtein距離,則可以構造(m+1)×(n+1)階矩陣Di,j=D(s1,s2,…,si,t1,t2,…,tj),0≤i≤m,0 ≤j≤n,通過式(1)來計算2個字符串之間的Damerau-Levenshtein距離:
由式(1)計算得到的Damerau-Levenshtein是一個正整數(shù),如果用其衡量相似度,將缺少一個限定值作為界定是否相似的標準,因此,本文提出DLR(Damerau-Levenshtein-Ratio),其將2個文本的編輯距離轉化為比值形式,通過式(2)計算DLR以表示2個文本之間的相似度:
其中,Lmax表示字符串S和T長度的最大值。DLR的計算過程偽代碼如算法1所示。
算法1Damerau-Levenshtein-Ratio計算算法
傳統(tǒng)基于句子形態(tài)的文本相似度計算算法[19]利用詞形、句長和詞序特征計算相似度,但它們忽略了文本的語義信息,導致效果不佳且對短文本不適用。短文本會因詞語數(shù)量較少而引起語義稀疏性,因此,本文在計算語義信息的基礎上,通過詞頻對詞語賦予權重,并且考慮未收錄詞和文本語義不全對相似度的影響,分別計算只有關鍵詞和含有非關鍵詞2種情況下的文本相似度,取兩者較大值作為文本的相似度值。
定義S1、S2為2個待計算相似度的句子,令KS1={w1,w2,…,wm}為句子S1的關鍵詞集合,其中,wk表示從S1中提取到的關鍵詞,同樣地,KS2={w1,w2,…,wn}為句子S2的關鍵詞集合,則利用傳統(tǒng)基于知網(wǎng)知識庫的方式計算句子S1和S2關鍵詞的語義相似度如下:
短文本具有句短詞少的特點,使得詞頻大的詞語對句子相似度計算有較大影響,因此,本文根據(jù)詞頻對詞語賦予權重,句子S1中的詞語w1對句子S2的相似度為w1對S2中全部詞語相似度的最大值。改進后S1對S2的關鍵詞集合的相似度計算如式(4)、式(5)所示:
其中,tfi表示詞語i在短文本中的詞頻。
在知網(wǎng)知識庫中,一個詞語具有多個義項,而每個義項又由多個義原組成。知網(wǎng)中2個詞語的義項相似度是通過第一基本義原、其他義原、關系義原和關系符號義原組合后加權表示的[20],義項相似度計算如式(6)所示。假設詞語w1和詞語w2的義項分別表示為w1={s11,s12,…,s1m}、w2={s21,s22,…,s2n},則詞語w1和詞語w2的相似度為詞語w1和詞語w2義原相似度的最大值,如式(7)所示。
在式(6)中,β1≥β2≥β3≥β4,sim(s1,s2)表示義項s1和義項s2的第一義原相似度,以此類推。4種因子按照文獻[21]取值,β1=0.4,β2=0.3,β3=0.2,β4=0.1。吳健等人[22]認為節(jié)點深度對義原相似度有一定影響,通常通過2個義原之間的路徑距離來計算義原相似度,如下:
其中,d表示2個義原在層次結構中的路徑距離,α是調節(jié)參數(shù),取值為1.6。
令句子S1和句子S2的相似度KTSim為KSim和TSim的最大值,如式(9)所示。KSim表示僅有關鍵詞時句子的相似度,計算公式如式(10)所示,TSim表示含有非關鍵詞時句子的相似度,計算公式如式(11)所示。TSim的計算方式與KSim相同,只是兩者參與計算的詞語數(shù)量不同。
Word2vec即為詞向量,是由Google公司開源的一款深度學習模型[9],作用是將自然語言中的詞語或者文字轉化為計算機可以理解和處理的向量形式。Word2vec可分為CBOW(Continue Bag-of-Word)和Skip-gram 2種模型。CBOW輸入某個特征詞的上下文關聯(lián)詞的詞向量,輸出該特征詞的詞向量,而Skip-gram相反,其輸入特征詞對應的詞向量,輸出特征詞的上下文對應詞的詞向量。
HOCHREITER等人[23]提出長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡,其為一種特殊的RNN,使用記憶單元替換原RNN中的隱層節(jié)點,以達到學習長期依賴信息的目的。LSTM的計算過程如式(12)~式(17)所示,其中,式(12)和式(13)表示更新記憶細胞的狀態(tài),式(14)~式(16)分別為增加歷史信息的輸入門、遺忘歷史信息的遺忘門和輸出門,式(17)表示利用tanh作用于當前記憶細胞狀態(tài),再由輸出門輸出最后信息。
其中,Wxy為權重矩陣,表示從神經(jīng)元x到y(tǒng)的權重,ct表示當前細胞狀態(tài)表示候選值,x表示記憶單元的輸入,h表示輸出,b表示偏置權重。
Skip-gram相較于CBOW模型有更高的語義準確率,其可以通過跳躍詞匯來構造詞組,避免因窗口大小限制而丟失文本的語義信息。因此,本文采用Skip-gram模型作為訓練框架,訓練窗口設置為5,詞向量維度設置為100。以LSTM為基礎,由輸入層將輸入的句子按照單個詞語在詞典中的特定位置關系得到編號序列,嵌入層利用Word2vec模型將由輸入層得到的詞語編號序列映射為詞向量,再將得到的詞向量作為LSTM層的輸入,將LSTM層輸出的結果進行拼接并作為全連接層的輸入,利用Dropout防止過擬合,最終由輸出層輸出2個文本的相似度值?;赪ord2vec與LSTM的相似度計算模型結構如圖1所示。
圖1 基于Word2vec與LSTM的相似度計算模型結構Fig.1 Structure of similarity calculation model based on Word2vec and LSTM
基于改進Damerau-Levenshtein距離的相似度計算(DLRSim)算法考慮2個短文本之間的詞序和共有詞,從短文本句短詞少的結構特征角度計算相似度;基于語義的相似度計算(KTSim)算法為解決短文本的特征稀疏性問題,加入詞頻并考慮關鍵詞和非關鍵詞對短文本相似度的影響,結合知網(wǎng)義原信息從詞語的義原層面計算句子的相似度;基于Word2vec與LSTM的相似度計算(WLSim)算法從深度學習的角度構建模型,將文本轉化為詞向量然后對語義等特征進行學習從而計算相似度。
為將上述3種相似度計算算法進行有效融合并應用于短文本的相似度計算,本文提出多重檢驗加權融合的相似度計算(MCWFS)方法,通過實驗對以上3種相似度計算方法分別確定一個相似度閾值,當2個文本間的3個相似度值中至少有2個大于對應閾值時,認為兩者可能相似,則進行加權融合以及相似度計算,否則認為兩者不相似。上述操作可以避免文獻[24]中因一種相似度小于閾值而被認為不相似從而無法參與下一階段運算的情況,最終使得相似度計算結果更加準確。本文通過線性加權融合方法計算相似度值的公式如下:
其中,權重因子滿足α+β+γ=1,通過實驗調節(jié)權重因子從而確定它們的最佳取值組合。
相似度計算過程偽代碼如算法2所示,MCWFS方法的計算流程如圖2所示。
算法2相似度計算算法
圖2 MCWFS方法計算流程Fig.2 Calculation flow of MCWFS method
為驗證本文方法的有效性,采用螞蟻金融NLP挑戰(zhàn)數(shù)據(jù)集(https://pan.baidu.com/s/1yEeThJi_HHxwQjbrG3O ArQ),該數(shù)據(jù)集信息如表1所示,每行由序號、2句短文本和1個相似性標志位組成,共包含102 477組句子對。首先對數(shù)據(jù)集進行預處理,去除格式不正確的句子對,采用百度停用詞表對文本去除停用詞,并使用HanLP工具包進行分詞并統(tǒng)計詞頻。在預處理后剩余的102 373組句子對中,正樣本為18 668組,負樣本為83 705組。本文選取80%的數(shù)據(jù)作為訓練集,20%的數(shù)據(jù)作為測試集,以進行模型訓練。
表1 實驗數(shù)據(jù)集信息Table 1 Experimental dataset information
本文實驗環(huán)境為Windows7操作系統(tǒng),使用MyEclipse作為開發(fā)工具,數(shù)據(jù)庫采用MySql5.6版本,使用Java和Python2.7開發(fā)語言實現(xiàn)本文相似度計算方法,開發(fā)環(huán)境采用JDK1.8。
在結果分析中,本文主要采用F1值作為3種檢驗閾值的選擇標準,同時采用文本信息處理領域常用的召回率(Recall)和準確率(Accuracy)作為相似度計算質量評價指標,將本文方法分別與傳統(tǒng)方法、無檢驗的相似度計算方法、未融合的相似度計算方法進行比較,最后通過Python將實驗對比結果進行可視化展示。在評價指標中,準確率是指所有被正確預測為正和負的樣本數(shù)占總樣本數(shù)的概率,精確率(Precision)是指正確預測為正的樣本占全部預測為正的樣本的比例,召回率是指在實際為正的樣本中被預測為正樣本的概率,F(xiàn)1值是精確率和召回率的加權調和平均。4種指標的計算公式分別如式(19)~式(22)所示:
其中,TP表示實例是正類實際也被預測為正類的樣本數(shù)量,TN表示實例是負類實際也被預測為負類的樣本數(shù)量,F(xiàn)N表示實例是正類實際被預測為負類的樣本數(shù)量,F(xiàn)P表示實例是負類實際被預測為正類的樣本數(shù)量。
3.3.1 檢驗閾值選擇
實驗通過調節(jié)相似度閾值,對比DLRSim算法、KTSim算法和WLSim算法的F1值,從而確定3種相似度的檢驗閾值標準,結果如圖3所示。從圖3可以看出,在F1值取值最大時,對于DLRSim算法、KTSim算法和WLSim算法,相似度閾值分別取0.40、0.42和0.47。因此,本文將3種檢驗閾值分別設置為t1=0.40、t2=0.42、t3=0.47。
圖3 不同算法的F1值對比結果Fig.3 Comparison results of F1 values of different algorithms
3.3.2 加權因子調節(jié)
為對滿足多重檢驗標準的文本進行加權融合相似度計算,本文運用控制變量法對加權融合的加權因子進行調節(jié),選擇相似度閾值取不同值時的召回率作為評價指標,調整α、β和γ的取值組合,通過觀察召回率來確定參數(shù)的最佳取值組合。由于實驗數(shù)據(jù)較多,表2選取相似度閾值為0.42、0.44、0.46、0.48和0.50時的數(shù)據(jù)進行展示。從表2可以看出:減小DLRSim算法所占權重,召回率會明顯增大,這是因為DLRSim算法主要從文本的編輯距離角度計算相似度,影響因素主要為共有詞,因此其占比相對較??;增大KTSim算法的加權因子,召回率有所提升,因此,基于語義考慮詞語義項的KTSim算法對召回率影響較大;基于深度學習模型的WLSim算法具有學習能力,可有效保持對歷史信息的較長記憶,獲取整個文本的語義特征信息,在序列化數(shù)據(jù)處理時有一定優(yōu)勢,因此,其影響力更大一些。通過對比最終確定加權因子取值為:α=0.21,β=0.36,γ=0.43。
表2 不同加權因子取值組合下的召回率對比結果Table 2 Comparison results of recall under different combination of weighted factors
3.3.3 不同方法的實驗結果對比
本節(jié)將從以下4個方面對不同方法的實驗結果進行對比:
1)詞頻對短文本相似度的影響
為驗證詞頻對短文本相似度的影響,將KTSim算法與文獻[21]中的HowNet算法進行實驗對比,選取詞頻不同的2組短文本,分別用2種算法計算相似度,數(shù)據(jù)結果如表3所示。從表3可以看出,對于詞頻不為1的文本,2種算法相似度計算結果差異較大,而對于詞頻都為1的文本,2種算法計算結果的差異較小,但KTSim算法的計算結果優(yōu)于HowNet算法。
表3 詞頻對相似度計算結果的影響Table 3 Influence of word frequency on similarity calculation results
2)檢驗方法對比
為驗證本文多重檢驗方法的準確性,以不同閾值下的準確率作為評價標準,將本文多重檢驗融合(MCWFS)方法與無檢驗融合(NCWFS)方法和層層檢驗融合(ECWFS)方法進行實驗對比。NCWFS即無閾值檢驗而直接加權計算,ECWFS中只要有一種相似度值不滿足閾值則認為不相似,不進行加權運算。從圖4可以看出,MCWFS方法的效果優(yōu)于NCWFS方法,這是因為無檢驗融合方法無法對只有一種相似度值過大的情況進行篩選,從而將異常值引入運算,將實際不相似的文本判定為相似,降低了準確率。ECWFS方法的效果相對較差,原因是層層檢驗會因為一種相似度值不滿足閾值而無法參與加權運算,使得計算中將較多相似文本判定為不相似,降低了準確率。隨著閾值的增大,方法的準確率增勢趨于平緩后開始下降,這是因為不相似的短文本數(shù)逐漸趨于實際值,然后又大于實際值,而判斷正確的相似文本數(shù)在減少。相比ECWFS方法和NCWFS方法,MCWFS方法在準確率上平均分別提高16.01%和7.39%,即多重檢驗融合方法具有明顯優(yōu)勢。
圖4 3種檢驗方法的準確率對比結果Fig.4 Accuracy comparison results of three test methods
3)融合方法對比
為驗證加權融合方法的有效性,將其與未融合的DLRSim、KTSim和WLSim算法進行對比,以不用閾值時的召回率作為衡量標準,結果如圖5所示。從圖5可以看出,在相同閾值情況下,MCWFS方法的召回率最大,其具有明顯優(yōu)勢,原因是該方法對3種對比算法所考慮的不同角度的文本特征進行了加權計算并篩選異常值,從而提高了召回率。
圖5 融合和未融合方法的召回率對比結果Fig.5 Comparison results of recall between fusion method and non-fusion methods
4)與傳統(tǒng)相似度計算方法的對比
將本文多重檢驗加權融合計算方法與傳統(tǒng)的Jaccard相似度計算方法、基于Word2vec的余弦相似度計算方法[25]和利用WordNet[26]計算詞語和句子相似度的方法進行實驗對比,以不同閾值下的F1值作為評價標準,結果如圖6所示。
圖6 不同方法的F1值對比結果Fig.6 Comparison results of F1 values of different methods
從圖6可以看出,4種方法的F1值變化趨勢大致相同,MCWFS方法在相似度閾值為0.46時F1取得最大值70.21%,而Word2vec方法和WordNet方法分別在閾值為0.41和0.42時F1取得最大值,分別為58.26%和66.25%,Jaccard方法在閾值為0.38時F1取得最大值53.26%。Jaccard方法的主要影響因素為2個文本之間的共有詞,其無法利用更豐富的信息進行計算,因此,F(xiàn)1值最小。WordNet方法需要大規(guī)模的語料庫,無法計算詞庫未收錄的詞語的相似度值,Word2vec方法雖然解決了文本的數(shù)據(jù)稀疏問題,但是其將詞向量進行余弦運算,并不能代表語義關系,容易出現(xiàn)將相似詞語較多但語義相悖的文本計算為相似文本的問題。而本文MCWFS方法具有明顯優(yōu)勢,因為其既考慮了文本的表型特征,也考慮了語義等信息,同時對異常值進行篩選,使相似度計算更加準確。
利用4種方法計算短文本相似度的數(shù)據(jù)結果如表4所示,從表4可以看出,本文方法計算性能最優(yōu)。
表4 不同方法的相似度計算結果對比Table 4 Comparison of similarity calculation results of different methods
針對傳統(tǒng)文本相似度計算方法準確率較低的問題,本文結合短文本句子簡短、特征稀疏和語義豐富等特點,提出一種多重檢驗加權融合的短文本相似度計算方法。該方法通過改進編輯距離從句子表型特征計算短文本相似度,考慮文本簡短對相似度的影響而加入詞頻作為詞語權重,從語義角度計算相似度,同時利用深度學習模型進行計算,解決語義相似度對大規(guī)模語料庫的依賴問題。在此基礎上,將滿足多重檢驗標準的3種相似度值進行加權融合并用于短文本相似度計算,以降低異常值對相似度值的影響并提高計算結果的準確率。實驗結果表明,該方法的計算性能優(yōu)于WordNet、Word2vec等方法。
受中文短文本數(shù)據(jù)集較少的影響,本文的閾值和加權因子的取值選擇對數(shù)據(jù)具有依賴性和針對性,下一步將利用不同領域的數(shù)據(jù)集,通過機器學習的方式對參數(shù)進行選取。此外,基于深度學習的LSTM模型在處理短文本時具有一定優(yōu)勢,但對于較長文本而言其存在局限性,因此,后續(xù)考慮加入Attention機制使該模型更加靈活高效。