邵 恒, 馮興樂, 包 芬
(長安大學(xué) 信息工程學(xué)院 陜西 西安 710000)
隨著信息技術(shù)的迅猛發(fā)展,文本數(shù)據(jù)的數(shù)量正在以指數(shù)級的速度增長,如何從海量的文本信息中捕獲到有意義、相關(guān)性強、具有針對性的信息,進而對這些文本信息進行合理的應(yīng)用與管理是當(dāng)前需要解決的問題。文本挖掘技術(shù)在此階段迅速發(fā)展,而作為文本挖掘的關(guān)鍵技術(shù),文本相似度反映了兩個文本或多個文本之間匹配程度,其取值大小反映了文本相似程度的高低。對于文本相似度的研究,文獻[1]分析了基于向量空間模型的文本相似度計算算法存在的不足,提出了一種考慮文本長度參數(shù)、空間參數(shù)、特征詞互信息等特征的改進算法,提高了文本相似度計算的準確性。文獻[2]在詞向量空間中計算出將文檔中所有的詞移動到另一文檔對應(yīng)的詞需要移動的最小距離,進而分析兩個文本的相似度,取得了較好的效果。文獻[3]基于Siamese結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)構(gòu)建文本表達模型,引入了詞匯語義特征、階躍卷積、k-max均值采樣三種優(yōu)化策略,分別在詞匯粒度、短語粒度、句子粒度上抽取豐富的語義特征,并在計算文本相似度問題上取得了較好的效果。文獻[4]提出了基于深層稀疏自動編碼器的句子語義特征提取及相似度計算方法,提高了相似度計算的準確率,降低了計算的時間復(fù)雜度,但是算法在文本分類的任務(wù)中表現(xiàn)不佳。文獻[5]提出了一種基于池化計算和層次遞歸自動編碼器的短文本表示方法,進行文本相似度計算,并將此算法應(yīng)用在生物醫(yī)學(xué)信息檢索系統(tǒng)中,取得了較好的效果。文獻[6]提出了一種名為KATE的競爭自動編碼器,利用隱藏層中的神經(jīng)元之間的競爭,專門識別特定數(shù)據(jù)模式,并且能夠?qū)W習(xí)文本數(shù)據(jù)有意義的表示。此模型能夠?qū)W習(xí)到更好的文本特征并表示出來,在多個文本分析任務(wù)中的效果優(yōu)于其他模型。文獻[7]將傳統(tǒng)的向量空間模型轉(zhuǎn)化為雙向量空間模型,此模型有效提高了計算精度。文獻[8]提出了一種類似詞袋模型的空間高效表征方式用于處理輸入數(shù)據(jù),并加入了無監(jiān)督的“區(qū)域嵌入”,用卷積神經(jīng)網(wǎng)絡(luò)預(yù)測上下文。該模型在情感分類和主題分類任務(wù)上取得了比以往方法更好的效果。文獻[9]用字符級卷積神經(jīng)網(wǎng)絡(luò)的輸出當(dāng)作長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)每個時間步的輸入,該模型能夠從字符級的輸入中得到語義信息。文獻[10]通過迭代調(diào)用“基于類標信息的聚類算法”獲得了更強的文本分類能力。
為了進一步挖掘中文文本中字、詞、句及上下文蘊含的深層次信息,本文在上述研究的基礎(chǔ)上提出了一種新的文本相似度計算方法。利用深度學(xué)習(xí)的思想,將句子輸入到改進的堆疊降噪自動編碼器中學(xué)習(xí)字、詞、句的語義信息,并將其表示成低維度的向量。設(shè)計兩種不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò),選用不同尺寸的卷積核,分別學(xué)習(xí)文本語義、上下文結(jié)構(gòu)和句間關(guān)系的特征。最后應(yīng)用特征融合技術(shù),將不同方法得到的特征融合后用全連接的多層感知機計算出文本相似度,提出基于改進的自動編碼器(auto encoder, AE)與卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)結(jié)合的AE+CNN算法。實驗表明,本文提出的模型能夠較好地學(xué)習(xí)字、詞、句及上下文結(jié)構(gòu)特征信息,有效提高了文本相似度計算的準確率。
用one-hot[11]方法表示句子向量需要的訓(xùn)練數(shù)據(jù)量較少,效率較高。但是由于句子具有不完整、高度稀疏和碎片化的特性,若僅采用此方法表示,文本會丟失語義信息,特征維度會變得更加稀疏,帶來“維數(shù)災(zāi)難”。為解決此問題,本文在one-hot表示的基礎(chǔ)上,引入了改進的堆疊降噪自動編碼器,學(xué)習(xí)句子本質(zhì)特征的表達。利用改進的降噪堆疊自動編碼器提取句子向量,將文本中的句子替換并拼接成文本矩陣,每一行為一個句子向量。然后把若干個文本矩陣兩兩組合,對于每個組合的矩陣,分別計算句子向量的余弦相似度,得到兩個文本的相似度矩陣。接著為相似度矩陣和文本特征矩陣設(shè)計不同的深度卷積網(wǎng)絡(luò),利用深度卷積神經(jīng)網(wǎng)絡(luò)[12]中的卷積和池化技術(shù)提取出特征,將特征展平融合后傳入全連接的多層感知機,最后輸出為相似度。
自動編碼器屬于多層前傳神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)中常用的模型之一,其主要依據(jù)是人工神經(jīng)網(wǎng)絡(luò)具有網(wǎng)絡(luò)層次結(jié)構(gòu)的特點,通過最小化重建輸入數(shù)據(jù)的誤差對數(shù)據(jù)進行特征提取?;镜淖詣泳幋a器由編碼器、解碼器以及隱含層3個部分組成。輸入端輸入一個向量x后,首先用編碼器將其映射到隱含層得到特征y,然后用解碼器將特征y映射到輸出層z,并選用leaky-relu(rectified linear unit)函數(shù)作為激活函數(shù)。計算公式為
y=leaky-relu(Wxx+bx),
(1)
z=leaky-relu(Wyy+by),
(2)
式中:Wx、Wy為權(quán)重矩陣;bx、by為偏移向量;leaky-relu激活函數(shù)表達式為
(3)
leaky-relu激活函數(shù)能夠保留反向傳遞的梯度,運算量小,減少參數(shù)間相互依存關(guān)系,緩解過擬合問題的發(fā)生。
由于文本具有維度高和稀疏性等特點,基本的自動編碼器在文本分析領(lǐng)域的應(yīng)用效果并不理想,存在模型的魯棒性較差、在訓(xùn)練過程中比較容易出現(xiàn)過擬合等問題。為了能夠?qū)崿F(xiàn)端到端的從數(shù)據(jù)中提取有用的特征,同時提高模型的魯棒性并緩解過擬合現(xiàn)象,本文在基本自動編碼器的輸入端加入隨機噪聲,由此構(gòu)成降噪自動編碼器。
(4)
目標函數(shù)為
(5)
淺層的自動編碼器的學(xué)習(xí)能力較差,難以提取出層次化的深層特征。為了從高維度數(shù)據(jù)中提取出更深層次的特征,本文在單層降噪自動編碼器的基礎(chǔ)上,將多個降噪自動編碼器堆疊在一起,構(gòu)造出深度網(wǎng)絡(luò)用來提取數(shù)據(jù)的特征,提出了堆疊降噪自動編碼器。通過上一層自動編碼器提取出的特征作為下一層自動編碼器數(shù)據(jù)輸入的方式逐層訓(xùn)練多個降噪自動編碼器。再將逐層訓(xùn)練的自動編碼器的隱藏層疊加起來,構(gòu)造出具有多個隱層的堆疊降噪自動編碼器。堆疊降噪自動編碼器學(xué)到的特征具有盡可能多的魯棒性,能夠在一定程度上對抗原始數(shù)據(jù)的污染、缺失,這一切都是端到端的自動學(xué)習(xí)。
經(jīng)過上述堆疊降噪自動編碼器處理的句子向量,組成文本特征矩陣,再經(jīng)處理后傳入卷積神經(jīng)網(wǎng)絡(luò)進行文本的相似度計算。
針對中文文本向量表示維度過高的問題,本文選取了中文文本中3 500個常用字構(gòu)造向量空間。而選用3 500個字的原因是:漢字數(shù)量很大,但實際上我們經(jīng)常使用的漢字非常有限,3 500個常用字就覆蓋了現(xiàn)代出版物用字的99.48%。先根據(jù)停用詞表將停用詞去除后,從常用詞表中選取最常用的3 490個字,對于文本中出現(xiàn)的數(shù)字,用第3 490到3 499來表示。將特殊字符和未出現(xiàn)的字符直接刪除。最后用標點符號進行句子分割,文本中的每個句子都能表示為空間中的一個向量x,表示方式為
x=(t1,t2,…,ti,…,tm),
(6)
式中:m表示字庫中的總數(shù);ti表示該句是否包含第i個字,如果包含該字,則ti=1,否則,ti=0。由此,每個文本組成一個行數(shù)為句子數(shù)、列數(shù)為3 500的文本矩陣。將此矩陣作為自動編碼器的輸入。
基于卷積神經(jīng)網(wǎng)絡(luò)的文本相似度計算方法有兩類,一類是基于Siamese結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)模型,先分別學(xué)習(xí)輸入的文本對的句子向量表達,再基于句子向量計算相似度。另一類是直接以詞語粒度的相似度矩陣作為輸入,學(xué)習(xí)特征并計算文本相似度。本文已經(jīng)構(gòu)建了基于語義的句子特征向量,為保證模型能夠利用更多更有效的特征,將兩種計算方法融合進行相似度計算。基本模型的卷積、池化和全連接層如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)模型Figure 1 Convolutional neural network model
通過堆疊降噪自動編碼器學(xué)習(xí)對句子的語義向量特征表示,組成文本相似度矩陣,進一步應(yīng)用于文本相似度計算的任務(wù)中。相似度矩陣的構(gòu)建方法為:首先將所有文本表示成文本矩陣,矩陣的每一行為一個句子,用改進的自動編碼器計算得到的句子特征向量替換每一個句子,得到特征矩陣。接著將文本矩陣兩兩組合,分別計算矩陣中句子向量的余弦相似度,并組合成兩個文本的相似度矩陣。
找到已有所有的相似度矩陣的行數(shù)和列數(shù)的最大值,平鋪成形如式(7)的相似度矩陣。使其具有相同的列數(shù),即為同一維度的相似度矩陣。
(7)
本文構(gòu)造的卷積神經(jīng)網(wǎng)絡(luò)的卷積層由不同的濾波器f1,f2,…,fn構(gòu)成,將其排列成F,F(xiàn)∈Rn×h×w,并增加了一個偏差向量b。其中,n、w和h分別表示濾波器的數(shù)量、寬度和高度。選定滑動窗口尺寸和濾波器尺寸相同,將窗口里的數(shù)據(jù)x1,x2,…,xn拼接為X,X∈Rxh×xw,濾波器組F的卷積輸出計算為
(8)
式中:*為卷積運算;i為索引濾波器的數(shù)量;j和k為沿著寬度和高度軸生成的滑動操作范圍,步長為1;tanh為激活函數(shù)。
卷積的方式有兩種:寬卷積和窄卷積。寬卷積的方式能夠獲得更好的效果,故本次模型使用寬卷積,并使用補零的方式處理矩陣邊緣數(shù)據(jù)。最后,得到的輸出為Y∈Rn×(xh-h+1)×(xw-w+1)。
然后,將來自卷積層的輸出傳入池化層,其目標是聚合信息并減少表示。目前最常用的池化方式有4種,即平均值池化、最大值池化、動態(tài)池化和k-max池化[14]。k-max池化可以對分散在不同位置的k個最活躍的特征進行池化。k-max池化能夠保留特征間的順序關(guān)系,但是對于特征的具體位置不敏感,而且還能很好地識別出特征被顯著激活的次數(shù)。故本文采用k-max池化的方案。
將上文中改進的自動編碼器與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,提出AE+CNN算法。即用自動編碼器提取的向量計算出相似度矩陣和對應(yīng)的文本矩陣,分別通過不同參數(shù)的深度卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,再經(jīng)過特征融合和全連接的多層感知機計算相似度。
本文使用的實驗設(shè)備是一臺CPU為i5 7400、GPU為GTX 1050 Ti、內(nèi)存為32 G的PC,操作系統(tǒng)為Ubuntu 16.0.4,深度學(xué)習(xí)框架為Keras 2.2.4。
為了對比算法的有效性,本文使用數(shù)據(jù)集Ⅰ和數(shù)據(jù)集Ⅱ。數(shù)據(jù)集Ⅰ為中科院自動化所信息語料庫,包含鳳凰、新浪、網(wǎng)易、騰訊等網(wǎng)站的新聞數(shù)據(jù)。因為不同網(wǎng)站會報告相同的新聞事件,且內(nèi)容語義相似,故可根據(jù)其標題是否相似作為文本是否相似的標簽,選取相似度最高的3 000對文本作為正類,選取相似度最低的3 000對文本作為負類,進行訓(xùn)練和測評。
數(shù)據(jù)集Ⅱ為隨機從中科院自動化所新聞?wù)Z料庫中選取標題相似度極低的3 000篇新聞數(shù)據(jù),然后用不同的翻譯工具,通過API接口,多次翻譯,生成3 000對相似的文本對,作為正類,再相互隨機組合3 000組不相似文本對作為負類。在訓(xùn)練堆疊自動編碼器時,用中科院自動化所信息語料庫中的所有數(shù)據(jù)。訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)時,隨機選取每個數(shù)據(jù)集的75%作為訓(xùn)練集,剩余的25%作為測試集。
在實驗結(jié)果的評測方面,實驗采用常用的精度(precison)、召回率(recall)以及F1得分3個指標作為評價指標,
(9)
(10)
(11)
式中:TP表示真正例數(shù)量;FP表示假正例數(shù)量;TN表示真反例數(shù)量;FN表示假反例數(shù)量。
Step1 通過one-hot字庫表示文本的句子向量。
Step2 將句子向量組成文本矩陣并利用改進的降噪堆疊自動編碼器提取低維度句子向量。
Step3 將文本的句子向量組成文本矩陣,并計算兩文本各句子的相似度,拼成相似度矩陣。
Step4 用不同參數(shù)的深度卷積神經(jīng)網(wǎng)絡(luò)提取出相似度矩陣和文本矩陣的特征,通過特征融合成一維的特征。
Step5 將Step4得到的一維特征經(jīng)過一個全連接的多層感知機進行有監(jiān)督的模型訓(xùn)練。
Step6 對模型的文本相似度計算結(jié)果進行評估。
在模型訓(xùn)練階段,使用隨機梯度下降法來優(yōu)化網(wǎng)絡(luò),使用AdaDelta算法自動調(diào)整學(xué)習(xí)率。為了獲得更高的性能,在開發(fā)集上進行超參數(shù)選擇,并且在每個卷積層之后添加批量標準化層以加速網(wǎng)絡(luò)優(yōu)化。此外,在隱藏層應(yīng)用了Dropout技術(shù)防止過擬合。最終,堆疊降噪編碼器選擇三層疊加的方式,每次降低1 000維,最后生成句子特征向量為500維,降噪編碼器的破壞率選為0.1。
在參數(shù)選擇的問題上,每個文本選取64個句子進行計算,此時文本相似度矩陣的維度為64×64,卷積核大小為3×3、5×5和7×7,每個卷積核由高斯函數(shù)隨機生成。池化層為2×2大小的max pooling方式。后一層的每一個卷積核對前一層的池化層做卷積,然后加權(quán)求和得到和卷積核數(shù)目相同的卷積矩陣,經(jīng)過深度為3的卷積網(wǎng)絡(luò),最終展開為長度256的特征向量。文本特征矩陣的維度為64×500,卷積核大小為3×500、4×500、5×500、6×500。卷積計算后再經(jīng)過2-max pooling層,最終組合為長度64的特征向量。將兩特征向量連接后輸入到多層感知機里進行有監(jiān)督的訓(xùn)練。
作為對比方案,本文還實現(xiàn)了用word2vec+TF-IDF計算文本相似度的算法。其中,word2vec是一種由詞到向量的方法。TF-IDF (term frequency-inverse document frequency)是詞頻-逆文本頻率,用以估計一個詞對于語料庫中一個文本的重要程度。具體步驟如下。
Step1 將中科院自動化所信息語料庫的文本數(shù)據(jù)進行分詞和去停用詞、低頻詞。
Step2 用Step1的語料庫訓(xùn)練word2vec模型并計算出每個詞的向量表示。
Step3 用TF-IDF算法分別計算出數(shù)據(jù)集Ⅰ和數(shù)據(jù)集Ⅱ中的每個文本對應(yīng)的5個關(guān)鍵詞,
(12)
式中:|D|為文本總數(shù);nt為包含詞語t的文本數(shù);N為一個文章中出現(xiàn)最多的詞的次數(shù)。
Step4 將提取出的每個文本的5個關(guān)鍵詞求平均值得到每個文本的向量表示。
Step5 計算每兩個文本間向量夾角的余弦值作為文本的相似度。
Step6 設(shè)定相似度閾值,得出文本是否相似。
表1為使用AE+CNN(自動編碼器+卷積神經(jīng)網(wǎng)絡(luò))、word2vec+TF-IDF和word2vec+CNN三種算法在數(shù)據(jù)集Ⅰ和數(shù)據(jù)集Ⅱ上的測評結(jié)果。
表1 數(shù)據(jù)集Ⅰ和Ⅱ的測評結(jié)果Table 1 Evaluation result for datasets Ⅰ and Ⅱ
在數(shù)據(jù)集Ⅰ上的實驗結(jié)果表明,本文提出的AE+CNN算法能夠有效計算出文本相似度,找出相似的文本,在準確度、召回率和F1值上都取得了較好的結(jié)果。數(shù)據(jù)集Ⅱ的各項評測指標都高于數(shù)據(jù)集Ⅰ,這是因為數(shù)據(jù)集Ⅱ的正類是由翻譯工具多次翻譯得來的,使得共現(xiàn)詞、關(guān)鍵詞、語義、上下文語境等都具有很大相似度,而負類是完全不相關(guān)的文本。
word2vec+TF-IDF算法評測結(jié)果較AE+CNN算法評測結(jié)果差的原因是此方法雖然能找出相似的文本,但忽略了文本的語義和上下文的結(jié)構(gòu)特征,將具有類似關(guān)鍵詞的文本但實際內(nèi)容不相關(guān)的文本對都給出了較高的相似度分數(shù)。
word2vec+CNN算法從每個文本中選出50個詞組成文本矩陣,并相互組成相似度矩陣,訓(xùn)練時選擇與AE+CNN同樣的模型。但最終結(jié)果較差,原因是word2vec算法僅僅學(xué)習(xí)了詞語的語義特征,忽略了文本的句子語義和上下文結(jié)構(gòu)的特征。因此,word2vec+CNN的組合雖然在計算句子的相似度上能夠取得較好的效果,但在文本相似度計算的任務(wù)上表現(xiàn)不佳。
從以上對比實驗結(jié)果可以得出,本文提出的算法能夠很好地計算文本間相似度,AE模塊學(xué)習(xí)到了語句的語義特征,兩個CNN模塊通過特征融合,提取出了文本的結(jié)構(gòu)特征和兩文本間的相互關(guān)系。
本文提出的基于堆疊降噪自動編碼器和卷積神經(jīng)網(wǎng)絡(luò)的文本相似度算法,在計算文本間相似度的應(yīng)用中取得了較好的效果。但是算法的準確度很大程度上受改進的自動編碼器準確度的影響,因此進一步改進堆疊降噪自動編碼器的模型,將會提高文本相似度計算的整體準確度。本文提出的算法可應(yīng)用于推薦系統(tǒng)中,也可以應(yīng)用于檢索系統(tǒng)中,即將檢索關(guān)鍵詞通過維基百科的文本拓展,再根據(jù)文本相似度計算出文本相似度,提取出最高的幾個文本作為檢索結(jié)果。我們下一步的工作將集中在算法準確度的提高和具體工程應(yīng)用方面。