初雅莉 鄭 虹 侯秀萍
(長春工業(yè)大學計算機科學與工程學院 吉林 長春 130000)
語義相似度是機器學習中相似性學習的一種,也是自然語言處理領域中研究的熱點,在問答系統(tǒng)、信息檢索、機器翻譯和文本分類等若干應用程序中影響也日益增加[1]。目前已經(jīng)有許多方法用來計算句子的語義相似性,本文將其分為兩類進行闡述。
一類是通過分析句子詞法、語法和句法等多種結(jié)構(gòu)特征,結(jié)合多種距離度量方式獲取句子間的相似性。Wen等[2]對漢語句子進行分詞,得到關鍵詞和普通詞。在句子中,關鍵詞的影響要高于普通詞,設置關鍵詞的權(quán)重大于普通詞的權(quán)重,通過對加權(quán)后的詞進行匹配得到漢語句子的詞匯相似性,從而判斷AI聊天機器人的性能。Gokul等[3]結(jié)合單個單詞的同義詞、余弦相似度和Jaccard相似性計算兩句馬拉雅拉姆語的相似性。王智強等[4]提出一種基于篇章框架語義分析的答案句檢索和答案抽取方法。從語義相關的角度,融合基于知網(wǎng)語義、空間向量模型和詞袋模型計算句子間的相似度,從而檢索到與問題相似的答案句。
另一類是結(jié)合深度學習方法進行語義相似度計算。王元龍[5]提出了基于分層組合模式的句子組合模型,通過訓練樹結(jié)構(gòu)的長短時記憶網(wǎng)絡組合句子向量,得到句子的分布式向量表示,計算句子向量間的余弦相似度來得出句子間的相似性。Afzal等[6]建立了基于語義網(wǎng)模型和基于深度學習語義模型。其中,語義網(wǎng)模型用來比較句子中隱藏的語義含義,根據(jù)語義相似度和兩個句子中的詞序來計算句法相似度;基于深度學習語義模型建立在深度結(jié)構(gòu)化語義模型(Deep Structured Semantic Model,DSSM)之上,對文本片段的語義特征向量使用余弦相似性來測量該文本對之間的語義相似性,將兩個模型的結(jié)果進行線性組合,分配相等的系數(shù)值為0.5,得出最終語義文本的相似度分數(shù)。Agirre等[7]提出一種可解釋的語義文本相似度的多任務深度學習方法。Lopez-Gazpio等[8]將循環(huán)神經(jīng)網(wǎng)絡和長短期記憶神經(jīng)網(wǎng)絡應用于可解釋的語義文本相似度。Mccrae等[9]提出了一個使用BiRNN獲取依賴上下文信息的軟對齊特征和BiLSTM計算兩個句子之間語義相似性的多特征系統(tǒng)。Ye等[10]提出基于遞歸神經(jīng)網(wǎng)絡編碼器-解碼器的架構(gòu)來測量句子之間的語義相似性。模型使用單向的循環(huán)神經(jīng)網(wǎng)絡,沒有對語義進行充分的獲取;由于循環(huán)神經(jīng)網(wǎng)絡自身的短時記憶限制,使得模型對于長句子處理的性能較低;在使用傳統(tǒng)編碼器-解碼器模型的固定語義編碼進行解碼時,沒有考慮到在解碼過程中句子詞語的差異性。
基于以上幾點,本文對模型進行以下改進:
1) 編碼器-解碼器模型不再由RNN神經(jīng)網(wǎng)絡組成,改為雙向LSTM[11]神經(jīng)網(wǎng)絡,提取句子的正反兩個方向的語義特征并進行結(jié)合,得到更加全面的句子語義信息。
2) 使用動態(tài)語義編碼規(guī)則,調(diào)整語義編碼。解碼器在每個時間步運行時,不再接收固定不變的語義編碼值,而是根據(jù)當前已獲得信息,“回憶”標準句子中與當前要預測結(jié)果相關的信息,增大相似信息的影響。
3) 將動態(tài)語義編碼作為LSTM[12]基本單元輸入的一部分,使得相似信息存儲到基本單元中。
本文的任務是對中文句子對進行語義相似性的計算。在句子對中,前一句是句法、語義規(guī)范的標準句子;后一句是類似于人類的口語表達、句子規(guī)范性較差的自然句子。在進行句子語義相似度計算之前,需要對中文句子進行預處理。
首先使用“jieba”分詞工具對句子進行分詞。本文使用元組來表示分詞后的句子,其中一個元素對應一個詞語,相同的詞語也使用不同的元素進行表示,元素所在元組中的位置即詞語在句子中的位置。
標準句子表示為:
與標準句子進行語義相似性計算的自然句子表示為:
然后,對分詞后的數(shù)據(jù)進行清洗。去停用詞和去標點符號是自然語言處理中最常用的清洗方法,但是對于復雜的中文句子,去停用詞和去標點符號并不能完全適用。本文沒有對句子進行去停用詞的操作,僅去掉在中文句子中語義影響較弱的標點符號和特殊符號,根據(jù)實驗數(shù)據(jù)集的不同需求,對數(shù)據(jù)集中的字符進行不同形式的數(shù)據(jù)清洗。在漢字數(shù)據(jù)集中,保留僅含有漢字和常用標點符號的句子對;在混合數(shù)據(jù)集中,僅刪除了對句子語義影響較弱的標點符號和特殊符號;在原始數(shù)據(jù)集中,為了獲得更貼近生活中的自然表述,對數(shù)據(jù)沒有進行任何的清洗操作。
最后使用Google開源的Word2vec工具,將最終處理后的詞語映射到高維空間上,得到詞語對應的詞向量。使用Q和A分別表示標準句子、自然句子的向量形式:
Q=(q1,q2,…,qi,…,qn)
A=(a1,a2,…,at,…,am)
式中:qi∈Rwd為標準句子中第i個詞的向量表示,at∈Rwd為自然句子中第t個詞的向量表示,wd為詞向量的維度。
本文模型采用雙向LSTM神經(jīng)網(wǎng)絡結(jié)構(gòu),充分提取句子的雙向語義特征,LSTM網(wǎng)絡雖然比RNN網(wǎng)絡復雜,但可以擁有長時間記憶,有利于長句子的處理。編碼器由雙向LSTM網(wǎng)絡組成,解碼器則由帶有動態(tài)語義編碼規(guī)則(dySem)的雙向LSTM組成。模型框架如圖1所示。
圖1 動態(tài)語義編碼雙向LSTM語句相似性模型
編碼器由傳統(tǒng)的雙向LSTM神經(jīng)網(wǎng)絡組成,用來生成標準句子的雙向語義編碼。神經(jīng)網(wǎng)絡在第i個時間步的輸入為標準句子Q中第i個詞向量qi,保存該時間步雙向LSTM輸出的隱藏狀態(tài)Hi。
Hi=hi+gn-ihi,gn-i∈R1×hd
(1)
式中:hd為隱藏層單元個數(shù),hi和gn-i分別表示在i時間步前向LSTM和后向LSTM輸出的隱藏狀態(tài)值。當i=n時,hn表示句子的正向語義編碼,gn表示句子的反向語義編碼,則標準句子的雙向語義編碼為:
SQ=hn+gn
(2)
本文根據(jù)解碼器前一個時間步的隱藏輸出狀態(tài)的不同,“回憶”編碼器中相似的信息并對語義編碼進行動態(tài)調(diào)整。將調(diào)整后的語義編碼S作為LSTM基本單元中的一部分,語義編碼S不參與輸入門的信息存儲,但在輸出時同樣會遺忘掉一些相似信息,所以語義編碼S位于LSTM基本單元中輸入門和輸出門之間。改進后的LSTM基本單元在t時間步的結(jié)構(gòu)表示如圖2所示。
圖2 改進后的LSTM基本單元在t時間步結(jié)構(gòu)表示
(3)
(4)
(5)
(6)
(7)
(8)
動態(tài)語義編碼S依據(jù)動態(tài)語義編碼規(guī)則進行動態(tài)調(diào)整。動態(tài)語義編碼規(guī)則分為t=1和1 (9) (10) 式中:Dnetfw和Dnetbw分別表示解碼器中前向和后向LSTM網(wǎng)絡。將a1和am分別與標準句子的語義編碼SQ作為雙向LSTM的輸入。 2) 當1 (11) 在這里只“回憶”相似的信息,弱化不相似的信息,所以使用下面的公式計算兩個向量間的相似性: (12) (13) (14) (15) 同理反向LSTM語義編碼為: (16) (17) 最后將相似性矩陣全連接到只有兩個神經(jīng)單元的輸出層,再經(jīng)過Softmax函數(shù),即得出兩個句子的相似性和不相似性的概率值,從而得到句子對的語義相似度值。 本文使用文獻[10]開放的中文問題相似度分類數(shù)據(jù)集,數(shù)據(jù)集從百度知道和搜狗問問中爬取數(shù)據(jù)并整理成句子對,并由專家應用特定的標簽對句子對進行相似、有關和不相似標注,在句子語義相似度分類實驗中,使用相似和不相似兩類標簽數(shù)據(jù)。 數(shù)據(jù)集中每個樣本均由三部分組成:標準句子,自然句子和標簽值。標準句子和自然句子的組合稱為句子對。一個標準句子匹配一個或多個自然句子,通過標簽值標注兩個句子間語義的相似性,即句子對的相似性。在訓練集中標簽值label={y|0≤y≤1},本文設定句子對相似和不相似的閾值為0.5,label>0.5時句子對相似。在測試集中標簽testLabel={y|y=0,y=1},當testLabel=1時句子對相似。訓練集和測試集的數(shù)據(jù)格式如表1和表2所示。 表1 訓練集數(shù)據(jù)格式 表2 測試集數(shù)據(jù)格式 本文將獲得的開放數(shù)據(jù)集作為原始數(shù)據(jù)集,在原始數(shù)據(jù)集的基礎上進行處理,得到漢字數(shù)據(jù)集和混合數(shù)據(jù)集。 在進行數(shù)據(jù)清洗操作中,對所有句子去停用詞的方法并不適用。例如:“老板娘很慷慨嗎?”和“老板的娘很慷慨嗎?”。這兩個句子的語義是不同的,因為所描述的對象不同,一個是老板的妻子,另一個則是老板的母親。然而當去掉停用詞“的”的時候,兩個句子的語義就完全相同了。再者,對于標點符號也不能一概而論。在中文中,有些標點符號對句子是有一定影響的,去掉標點符號可能會導致歧義。例如:“小猴子找不著,爸爸媽媽很著急”和“小猴子找不著爸爸媽媽,很著急”。在去掉標點后,句子都是“小猴子找不著爸爸媽媽很著急”,但很明顯,原始的兩個句子的語義是不相同的。所以,需要針對不同的情形進行不同的預處理操作。本文使用這三種數(shù)據(jù)集,在相同的實驗條件和參數(shù)設置的情況下,分別進行獨立實驗并進行分析。 實驗使用TensorFlow[13]深度學習框架,數(shù)據(jù)以200維詞向量輸入到雙向LSTM的輸入層中,神經(jīng)網(wǎng)絡的隱藏層單元數(shù)hd=150,學習率learning-rate=0.001,使用Sigmoid交叉熵函數(shù)作為目標函數(shù),使用隨機梯度下降算法對神經(jīng)網(wǎng)絡進行優(yōu)化。為了與其他循環(huán)神經(jīng)網(wǎng)絡模型進行對比,我們設置相同的初始化權(quán)重值,隨機種子設置為seed=1,使用5折交叉驗證,每折驗證迭代50次。 本文使用準確率(A),精準率(P),召回率(R)和F1度量(F)評估標準對模型進行評估。具體公式如下: (18) (19) (20) (21) 式中:TP、FP、TN和FN是根據(jù)句子對的實際類別與預測類別組合的四種樣例劃分情形。TP是真正類,即預測標簽是相似,實際標簽也為相似;FP是假正類,即預測標簽是相似,實際標簽是不相似;TN是真負類,即預測標簽是不相似,實際標簽是不相似;FN是假負類,即預測標簽是不相似,實際為相似。 本文模型(dysBiLSTM EncDec)在三種不同的數(shù)據(jù)集上與3種循環(huán)神經(jīng)網(wǎng)絡編碼器-解碼器結(jié)構(gòu)進行三組對比試驗。其中模型RNN Pre-trained和GRU Pre-trained是文獻[10]中的模型。因為本文模型是在雙向LSTM上進行改進,所以本文給出在原始雙向LSTM的編碼器-解碼器結(jié)構(gòu)(BiLSTM EncDec)的實驗結(jié)果。具體實驗如下: 漢字數(shù)據(jù)集的訓練集由7 586個不同的問題,共104 123對句子對組成,標記為相似的句子對占39.31%;測試集由86個不同的問題,共2 107對句子對組成,標記為相似的句子對占41.95%。在預處理過程中,舍棄了對中文句子語義影響較弱的標點符號和特殊符號,例如:“~”、“#”、“_”和“★”等,每組句子對僅由漢字和標點符號構(gòu)成。 在漢字數(shù)據(jù)集的測試集上,不同模型的評估標準值如表3所示。 表3 漢字數(shù)據(jù)集上不同模型評估值 由表3所示,本文動態(tài)語義編碼模型dysBiLSTM EncDec在漢字數(shù)據(jù)集上的準確率比RNN Pre-trained高約4%,比GRU Pre-trained高約3%,比BiLSTM EncDec高約2%;在精準率上比RNN模型高約7%;在其他評估標準上,本文模型都得到了較好的結(jié)果。 混合數(shù)據(jù)集中的句子由漢字、數(shù)字符號、標點符號和英語單詞等在實際應用中經(jīng)常出現(xiàn)的多種符號組合而成。混合數(shù)據(jù)集的訓練集由9 679個不同的問題,共145 185對句子對組成,標記為相似的句子對占36.29%;測試集由129個不同的問題,共3 493對問題對組成,標記為相似的句子對占38.53%。在混合數(shù)據(jù)集的測試集上,不同模型的實驗結(jié)果如表4所示。 表4 混合數(shù)據(jù)集上不同模型評估值 本文模型在混合數(shù)據(jù)集上的性能整體效果沒有在漢字數(shù)據(jù)集上的效果好,在精準率上與BiLSTM EncDec模型僅差1%,召回率上與GRU Pre-trained也相差不多。原因在于混合數(shù)據(jù)集上添加了更多的干擾信息,在符號處理上雖然做了一定的刪減操作,但是有些符號不能準確地判定是否有意義。數(shù)據(jù)清洗的不全面導致了在大量數(shù)據(jù)集上的實驗效果不如在相對較少的漢字數(shù)據(jù)集上的效果。 原數(shù)據(jù)集中的句子更符合人們在實際生活中使用漢語的習慣,句子的隨意性較強,相比于書面語的規(guī)范性差距較大。實驗中,原始數(shù)據(jù)集的訓練集由9 687個不同的問題,共1 548 299對問題對組成,標記為相似的句子對占35.77%;測試集由129個不同的問題,共3 493對問題對組成,標記為相似的句子對占38.53%。在原始數(shù)據(jù)集上的實驗結(jié)果如表5所示。 表5 原始數(shù)據(jù)集上不同模型評估值 由實驗結(jié)果可知,模型在僅含有漢字和標點符號的數(shù)據(jù)集上預測能力比在含多種字符的數(shù)據(jù)集上預測的能力較強。原因在于多元字符元素的數(shù)據(jù)集較為復雜,例如在中文中包含英語單詞,在單一的訓練過程中很難確定其含義和與其他詞語間的相似性,導致了預測結(jié)果偏差較大。由于原始數(shù)據(jù)集中還包含了特殊符號和其他語言的句子對,規(guī)范性較弱,復雜度更高,所以預測的結(jié)果較其他兩個數(shù)據(jù)集的結(jié)果偏低。但在相同的數(shù)據(jù)集條件下,經(jīng)實驗驗證,本文模型預測值更接近標簽值,對比的其他模型可以得到更好的性能。 本文模型對中文句子對進行相似度計算,在解碼過程中加入了動態(tài)編碼機制,將得到的動態(tài)編碼作為解碼器中雙向LSTM輸入的一部分,經(jīng)解碼器解碼得出中文句子對的相似性矩陣,從而得出中文句子對相似程度的概率值。本文在數(shù)據(jù)集選擇和清洗時,考慮到中文句子實際應用場景,在實驗中將數(shù)據(jù)集整理為三種數(shù)據(jù)集:漢字數(shù)據(jù)集、混合數(shù)據(jù)集和原始數(shù)據(jù)集。經(jīng)實驗驗證,在相同的實驗條件和使用相同類型的數(shù)據(jù)集下,本文模型在計算中文句子對相似性的性能上優(yōu)于分別由RNN、GRU和雙向LSTM組成的編碼器-解碼器神經(jīng)網(wǎng)絡模型。 然而,模型在多種字符的數(shù)據(jù)集上的理解能力并不好,預測結(jié)果還并不理想。由于中文數(shù)據(jù)集資源和實驗條件所限,本文僅使用了中文句子對數(shù)據(jù)集進行實驗,沒有對段落和篇章類型的數(shù)據(jù)集進行實驗驗證。未來將進一步研究中文相似度的模型,在提高僅含有漢字和標點的數(shù)據(jù)集上的性能之外,還要進一步考慮如何將多種字符進行更好的理解,從而提高模型整體的效果,并且希望可以將訓練好的模型應用于主觀題 自動評分系統(tǒng)中。3 實驗評估
3.1 數(shù)據(jù)集
3.2 實驗設置及評估標準
3.3 實驗結(jié)果及分析
4 結(jié) 語