徐菲菲 馮東升
(上海電力大學計算機科學與技術學院 上海 200090)
信息搜索最核心的技術是文本抽取和信息檢索,應用場景包括:搜索引擎、文檔歸類與聚類、提取文本摘要等。其中,衡量文本間的相似性便是一項重要的技術[1-2]。在文本檢索中,為提高文本搜索的準確率,也需要計算有效文本信息的相似度[3];在文本翻譯和分類等應用場景下,文本相似度技術同樣不可或缺。目前,文本相似度的計算方法主要有以下幾種:
一種是根據統計學的方法,通常對文本中詞匯進行統計,計算其文本的頻率與數量,通過向量空間模型(VSM)建立單詞頻率信息的空間矢量,以矢量之間的角度表示相似度[4]。由于此方法沒有考慮詞語在文本中的語序關系和組織結構,使得計算出的結果不準確。因此,學者們對此模型進行了諸多改進。文獻[5]在VSM模型上引入語義特征和語句句法,使得計算語句相似度的準確率顯著提高。文獻[6]使用分層次的聚類方法來構建一棵二叉樹,將詞語關鍵詞的相似度和文本主體語義的相似度進行加權計算,得到最終結果。文獻[7]將潛在語義索引和TF-IDF加權向量空間模型(T_VSM)合并獲得了更有效的融合模型,提高了文本分類的效果。
另一種是基于語義的方法。引入兩種詞典分別是HowNet和知網詞典,它們能更好地解釋詞語語義以及語句層次結構關系,并結合文本語義進行計算。一些學者提出了一種將知網詞典與向量空間模型相結合的計算方法,可以防止語義信息的丟失且確保了文本中表達的信息的完整性[8];文獻[9]通過詞匯間的語義相似度表示各短文本向量之間的相關性,提出了將詞語語義信息加權到余弦公式上計算相似度數值。
近年來,在眾多領域深度學習都有著很好的運用,因此,基于神經網絡的機器學習方法層出不窮。現在主流的神經網絡模型主要有CNN、RNN[10]和長短時記憶網絡LSTM[11]等。一些學者提出將LSTM網絡與文本相似度模型相結合的問答系統[12]。文獻[13]提出的LSTM網絡模型,它將多層注意力和文本間關系融合在一起,把不同類型的注意力機制加入到雙向LSTM網絡的不同位置上,獲得深度語義的信息。
在深入分析眾多應用于短文本相似性分析的神經網絡模型基礎上,針對現有模型的缺陷,提出一種基于注意力機制的Siamese-BiLSTM孿生神經網絡(SBA)來進行短文本相似度的計算。首先使用Word2vec對短文本進行向量化的表示;再構建一種共享權重的孿生神經網絡,此網絡內部使用雙向的LSTM提取短文本的語義;最后引入注意力機制進一步獲取短文本中重要的信息,輸出兩個包含文本語義的向量表示,利用皮爾遜相關系數度量兩短文本間的相似度。
在短文本內容分析前,短文本必須要經過預處理,而分詞是預處理的重要一步。分詞就是對短文本進行詞語粒度級別的切割,將短文本切分為多個獨立的詞語,并標注每個詞語的詞性。分詞的準確性會很大程度地影響相似度計算。本文使用PKUSEG分詞工具,它可以劃分領域的分詞以及處理特殊領域的分詞,針對不同類型的數據可以使用不同的訓練模型。經過PKUSEG短文本分詞系統處理后,短文本會被分割為一個個獨立的單詞,單詞間有空格隔開。停用詞是指某些高頻出現的詞,但不影響文本含義,低頻詞是極少出現在文中的詞,這些詞在相似度計算中將導致誤差。因此,為了提高計算結果的精確性,還需要從分段文本中刪除停用字和低頻詞,一般依據停用詞表去除停用詞。停用詞表是人為搜集整理出來的,若某個單詞出現在詞表中,則將其從文本中去除。
對于短文本特征表示,比較傳統的方法有TF-IDF、WordNet和獨熱編碼。WordNet通過編碼不同的詞性,組成一個詞語語義網絡[14]。WordNet編碼雖然保留了詞語的語義,但不能衡量同義詞的差別,并且由于主觀構建,所以新增詞匯和維護成本較高[15];獨熱編碼[16]把短文本中的詞語編碼成一個個的稀疏向量,但這種稀疏向量無法體現整體文本的語義;TF-IDF能夠用詞匯的特征來表示文本的重要性[17],但文本的語義仍然無法被準確表達。2013年,Mikolov等[18]提出了Word2vec模型,此模型會對詞匯間和詞匯語義關系建模,將單詞映射到低維空間,在這個低維空間中相似語義的單詞可以認為是相同的,因此被廣泛運用在諸如聚類、標注和詞性分析等任務中[19]。
Word2vec是從海量文本語料庫中獲取文本嵌入的模型,它對分詞后的文本進行特征表示,文本中的單詞能快速便捷地被映射成低維向量。文本集合組成詞向量空間,在這個龐大的空間中,每個單詞向量會被映射成向量點,然后根據向量點間的間隔來計算單詞間的相似性。此模型有兩種訓練方式:CBOW和Skip-gram。由于短文本的文本體量較小,文本語境信息也較少,因此,使用Skip-gram方法可以得到一個包含有關單詞語義信息的單詞向量。Skip-gram預測上文詞匯概率的表示公式為:
P(wn-c,wn-c+1,…,wn+c-1,wn+c|wn)
(1)
式中:c表示滑動窗口大小;wn是語料庫中的一個單詞;wn-c,wn-c+1,…,wn+c-1,wn+c是根據wn預測的前后2c個詞匯。
假設短文本dm是短文本集合D={d1,d2,…,dm,…,dM}中的任意一個文本,而dm有其詞匯集合W={w1,w2,…,wn,…,wN},通過Word2vec模型訓練獲得單詞向量,利用詞向量對dm進行量化表示,dm轉化成N×V的二維矩陣,則短文本集合D可表示成M×N×V的三維矩陣。對應的表達式為:
(2)
D=[d1,d2,…,dm,…,dM]
(3)
式中:短文本集合中文本總數用M表示;N表示每個短文本中的單詞數量;V表示單詞向量維度。
Word2vec模型將單詞映射成V維的詞向量,避免了詞匯天塹問題,且顯著地降低特征維度。然后將得到的詞向量分別輸入兩個神經網絡子網絡從而映射得到包含上下文詞義信息的詞向量。
孿生網絡[20]是一種特殊的神經網絡構造,它由兩個或更多相同的子網絡構成,子網絡具有一致的配置,即一致的參數和權重,參數的更新是同步進行在子網上的。利用同質的子網絡,得到兩個短文本的向量表達,以計算向量表達式來度量相似度。
目前關于孿生網絡結構已有一些研究。最早應用在文本相似度計算領域的孿生網絡是深度結構化語義模型(DSSM)[21]。DSSM首先對文本主題和查找內容進行建模,它們由5層網絡分別進行向量化,最后,用余弦距離計算兩個短文本的相似度。DSSM的子網絡結構由兩個部分構成,一是利用哈希方式將文本中的單詞和查找內容映射成詞級向量,二是利用三層全連接網絡來表達整個文本的主題向量。由于該網絡參數繁瑣且沒有考慮文本中的詞序關系,Shen等[22-23]在DSSM上添加一層全連接網絡,非線性特征通過卷積池化提取,提出卷積深度結構化語義模型(CDSSM),該模型與DSSM模型主要有以下兩點區別:CDSSM模型將全連接層替換成卷積層和池化層;CDSSM模型將文本中每個單詞和查找信息都表示成一個詞向量。雖然訓練參數變少了,但不能捕獲長距離語句間的語義關系。考慮到LSTM網絡可以有效地使用遠程信息,Palangi等[24]提出基于LSTM網絡的短文本相似度算法,其查詢內容與短文本分別經過LSTM網絡得到向量表達。Neculoiu等[25]提出基于雙向LSTM網絡的文本相似度算法(BiLSTM),其每個網絡分支均是雙向的LSTM網絡。
在研究短文本相似度算法時,基于特征工程的方法不能處理那些無相同單詞重現卻表達相同語義的文本,獲取的只是表層語義,不能完全有效地理解短文本的語義。相比于傳統機器學習方法,深度學習是處理短文本相似度效果更好的方法。本文采用注意力機制完善短文本的向量表示。根據短文本的特點,在建立短文本表達時,首先建立單詞向量表達,然后把它們聚合成短文本向量表達。其次,句子中的每個單詞的重要性程度也不一樣,因此引入注意力機制,根據句子中單詞的不同重要度進行評分,將得到的單詞向量以及其權重作為相似度計算的輸入。為了檢驗改進的基于孿生網絡計算結構的有效性,以基于BiLSTM網絡的相似度計算方法作為基準系統。
卷積神經網絡不能捕捉遠距離語句之間的語義關系,全連接神經網絡的參數繁多,導致訓練時間增加,遞歸神經網絡可以有效地使用遠距離語句信息。因此在孿生網絡結構中加入長短時記憶網絡,設計了一種基于雙向LSTM模型的相似度計算的基準系統。
2.1.1孿生網絡結構
基于孿生網絡的相似度計算結構如圖1所示,短文本數據在預處理后,經向量化表示,輸入一致的兩個子網絡可得兩個對象的向量表達,計算兩個向量表達式之間的相似度來度量短文本間的相似度。

圖1 基于孿生網絡的相似度計算結構
2.1.2基于雙向LSTM網絡的計算方法
Neculoiu等[25]提出了一種基于雙向LSTM孿生網絡結構的相似度計算方法,該網絡模型由兩部分組成:首先,采用兩個雙向LSTM網絡來抽取特征;然后由全連接詞組成擬合層,通過函數實現將兩個分支網絡組合。選擇余弦相似度作為函數實現,函數輸出的實數作為相似度的度量值,如式(4)所示。
(4)
式中:fw(x1)和fw(x2)分別代表文本1和文本2的特征表達向量。
模型的輸入分別是文本序列x=(x0,x1,x2,…,xn),y=(y0,y1,y2,…,yn)。使用詞嵌入矩陣We,把詞映射成向量表示(Ii=Wexi,Ji=Weyi)。假設有一數據集X={x1,x2,y},標簽y=0表示x1與x2屬于不同類型,y=1表示x1與x2屬于相同類型。因此設計損失函數為:當y=0時,兩文本不相似,文本間距離越大,那么損失越小。當y=1時,兩文本相似,文本間距離越大,那么損失也就越大。用L+(X1,X2)表示y=1時的損失,L-(X1,X2)表示y=0時的損失,則單個文本的損失函數可以寫成:
Lw=(1-y)L-(X1,X2)+yL+(X1,X2)
(5)
則N個文本的總的損失函數可以寫為:
(6)

目前基于孿生網絡模型的相似度算法大多是基于整個文本進行研究的。從文本長度來看,長短不一,它可以是詞語,可以是語句,但在模型訓練時,是把整個文本當作一個序列輸入到同質子網絡中。這種方法存在一定的缺陷,由于是兩個有著相同參數規模的網絡分支,若文本間長度相差懸殊,則會出現數據稀疏問題。根據經驗可知,文本中不同的詞語和語句,其重要程度是不同的。基于以上,提出基于注意力機制的孿生網絡模型(Siamese-BiLSTM based Attention,SBA)。在構建短文本表達時,首先構建詞語的向量表達,然后把詞語聚合成一個短文本表達,在短文本的句子級別,引入注意力機制,改進的孿生網絡結構如圖2所示。

圖2 結合注意力機制改進的Siamese-BiLSTM網絡架構
該孿生網絡是一個4層的神經網絡結構。首先通過Word2vec層得到短文本單詞的編碼,輸入到雙向 LSTM層得到包含潛在語義信息的單詞編碼,輸出到注意力機制層,得到包含短文本主要信息的向量表示。其中編碼層和注意力層分別經由兩個共享權值的子網絡,注意力層是基于詞級別的,經此層得到的向量鏈接前向循環網絡即是整個短文本的向量表達,此向量有128個維度。
2.2.1編碼層
在編碼層中使用了Word2vec層和雙向LSTM模型,輸入LSTM模型的二維向量是由短文本中每個單詞通過Word2vec層詞嵌入矩陣映射得到的。給定一短文本是由一組文本序列構成,記作wit,t∈[0,T],T代表文本長度,經詞向量嵌入矩陣We映射得到詞向量Xij=Wewij。

(7)
(8)
式中:L表示句子數量。
2.2.2注意力機制層
自然語言處理中有兩類LSTM模型,其一是使用模型中每個時刻的輸出求出的平均值,其二是直接用模型的最后時刻的輸出值。但兩類方法均有一定的弊端,前者求平均的方法未能反映出不同時刻信息的不同重要性,后者則是缺少了前面諸多時刻的信息。然而雙向LSTM模型仍無法區分單詞在短文本中的重要程度,短文本中每個單詞的重要程度不相同。同樣地,不同的句子在短文本中的位置不一樣,重要性也不一樣。為了解決此問題,采用注意力機制獲取編碼后短文本中的重要信息。本文提出的注意力機制表示為:
uit=tanh(Wwhit+bw)
(9)
(10)
(11)
式(9)-式(11)的含義是:將向量hit輸入雙向LSTM,獲得hit的隱藏層表示uit,uit和uw的相似度表示該詞匯的重要性;注意力矩陣αit可以通過Softmax函數歸一化得到;最終,再將輸入向量hit經注意力矩陣加權求和,得到包含文本語義的向量表示si。
2.2.3皮爾遜相關系數計算方法
皮爾遜相關系數是歐氏距離上的部分優化,首先對向量的值去中心化,即對兩向量的所有維度均減去平均值,而后對去中心化后向量的值求余弦相似度。相較于原始余弦相似度,它能更好地反映兩變量間的線性相關性,其取值在[-1,1]之間。當相關系數r趨于0時,相關性較弱,而趨于1或-1時,相關性較強。計算相關系數公式可表示為:
(12)

實驗環境主要基于TensorFlow和Python3.6。實驗按7 ∶3的比例隨機分割標注數據集,得到訓練集和測試集。本實驗使用的數據集如表1所示,包括來自Kaggle上的Quora短文本對數據集和螞蟻金服句對數據集。Kaggle是一個知識分享網站,有不同的人會提出不同的問題,而這些問題有時會很類似,如:“我心目中的最佳足球進攻手是?”和“你最崇拜的足球射手是?”,這樣的語句對會被認為是相似的,被標記為1。Quora數據集包含404 291個短文本對,每個問題長度大約是20~30個單詞,每對的格式是“序號,文本一序號,文本二序號,文本一,文本二,是否相似”,當是否相似為1時表示兩個短文本相似,相似的短文本對是149 286對。中文訓練數據為螞蟻金服句對數據,是螞蟻金服官方開放的數據集,也是一組短文本對,每對的格式是“文本一,文本二,是否相似”,共包含39 347對短文本,其中相似的短文本對是8 563對,正負樣本比例約為1 ∶3.6。

表1 數據集表示
實驗中的一些參數設置如表2所示,參數值的設定根據經驗和實驗驗證。

表2 參數設置
為了判斷計算方法的有效性,將數據集中提供的文本和實驗結果進行對比,得到相似度量值的相似性和差異性,實驗采用皮爾遜系數(r)和F1值來衡量相似性和差異性。r取值范圍為[-1,1],r>0表示實驗結果與標注數據集所提供短文本對的相似度量值正相關。F1值是對準確率和召回率作加權平均計算得到的值,值越高表示預測模型具有更好的性能。
實驗將提出的基于注意力機制的Siamese-BiLSTM模型(SBA)分別與基于BiLSTM的孿生網絡、基于LSTM的孿生網絡以及傳統向量空間模型VSM進行如下的對比實驗研究。
TensorBoard中,基于注意力機制的Siamese-BiLSTM模型(SBA)、基于Siamese-BiLSTM模型(S-BILSTM)和基于Siamese-LSTM模型(S-LSTM)訓練完成后,模型訓練的精確度和損失值隨迭代次數的變化如圖3所示。

圖3 各模型的準確度和損失對比
可以看出,在使用梯度下降方法進行訓練時,函數的損失值逐步減小,并最終收斂趨向穩定狀態。由于模型復雜度的增加,在引入注意力機制后的BiLSTM模型相比較于原始模型,起始損失值下降較慢,但損失值收斂到0.1以下的速度是有所增加的,且最終得到的損失函數值也是最小的。由此可見,注意機制的引入可以有效地提高模型的相似度計算能力。通過對比分類準確率圖也可以發現,本文提出的SBA模型準確率是三種方法中最好的,可以達到0.91以上。
在Quora數據集上,各個模型性能結果如圖4和圖5所示,可以看出深度學習的方法都優于傳統的向量空間模型方法,Bi-LSTM在此自然語言處理任務上的效果略強于CNN,而結合attention機制的孿生網絡模型(ATT-based Siamese-Net) 能提升孿生網絡的效果,且優于CNN和BiLSTM。與孿生網絡相比,本文SBA模型的準確率和F1值都有著較為明顯的提升。
由此可見結合了注意力機制能夠有效提取短文本的局部特征和總體特征,對句子的語義表達更加豐富。

圖4 Quora數據集上各模型準確率

圖5 Quora數據集上各模型F1值
在螞蟻金服句對數據集上,實驗結果如圖6及圖7所示,通過與其他模型對比,可以看出本文提出的方法效果最好。由于中文語言及語義的復雜性,對短文本提取語義信息時會出現誤差,所以在中文數據集上模型的準確率均低于英文數據集。基于Siamese-Net模型與BiLSTM模型相比,并沒有提升相似性度量的準確率,而加入注意力機制后能夠明顯提升準確率和F1值。相比較而言,傳統的VSM模型僅僅把短文本中的單詞作為向量特征表示,丟失了文本語義信息,在短文本的相似性度量上效果較差。

圖6 螞蟻金服數據集上各模型準確率

圖7 螞蟻金服數據集上各模型F1值
短文本相似度計算是文本處理中的重要研究方向。傳統的計算方法未考慮短文本本身所包含的語義信息,因此,本文提出了一種基于注意力機制改進的孿生網絡結構的方法,該方法考慮到詞語語義信息對相似度計算的重要性,通過雙向LSTM網絡提取短文本的語義信息,并引入注意力機制,構建詞向量的權重,得到包含重要語義信息的文本特征表示,最后采用皮爾遜相關系數來衡量短文本相似度。對所提出的算法和現有算法在不同的數據集上進行實驗研究,結果顯示,所提算法在相似度計算的準確率和 F1值均高于其他算法,證明了該算法的可行性和有效性。下一步工作將再對此網絡結構進行優化,加入主題模型,提升相似性度量效果,以便能夠提升文本標題與短文本之間的匹配程度。