陳俊月,郝文寧,張紫萱,唐新德,康睿智,莫 斐
(陸軍工程大學(xué) 指揮信息系統(tǒng)學(xué)院,南京 210000)
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)的全面普及,全球數(shù)字化信息的存儲(chǔ)量爆發(fā)式增長(zhǎng)。豐富的信息資源既為人們的生活和生產(chǎn)帶來了便利,但同時(shí)也導(dǎo)致了信息重復(fù)冗余的問題。因此,文本語義相似度研究應(yīng)運(yùn)而生,其可作為承載語義信息的一種重要方式[1]。文本語義相似度計(jì)算具有廣闊的實(shí)際應(yīng)用背景,例如論文查重、搜索引擎去重等,受到研究者的廣泛關(guān)注[2-4]。
釋義識(shí)別[5-6]用于判斷任意兩個(gè)句子或短語其語義是否相同,可看作是文本語義相似度計(jì)算的子任務(wù)。目前針對(duì)句子級(jí)別的文本語義相似度即句子相似度有許多較為成熟的計(jì)算方法,例如編輯距離(Levenshtein Distance,LD)算法[7]、Jaccard系數(shù)[8]和詞頻-逆文檔頻率(Term Frequency-Inverse Document Frequency,TF-IDF)算法等,但是這些方法都有著明顯的不容忽視的局限性和缺點(diǎn):編輯距離算法僅考慮兩個(gè)句子相互轉(zhuǎn)換的操作次數(shù),忽視了操作本身引起的語義差異;基于句子間共現(xiàn)詞計(jì)算句子相似度的Jaccard系數(shù)只考慮句子的字面量,忽視了詞語的語義信息[9];TF-IDF算法需要一個(gè)大規(guī)模語料支撐統(tǒng)計(jì)運(yùn)算[6],而對(duì)于某些領(lǐng)域(如軍事領(lǐng)域),這樣的大規(guī)模語料是難以獲得的。近年來,隨著深度學(xué)習(xí)技術(shù)的興起,許多基于深度學(xué)習(xí)的文本相似度算法也隨之涌現(xiàn)。但這些算法往往需要大量的語料作為支撐,同時(shí)由于深度神經(jīng)網(wǎng)絡(luò)本身的特點(diǎn),因此其對(duì)計(jì)算時(shí)間和計(jì)算資源的要求都很高,而深度學(xué)習(xí)本身的黑箱性質(zhì)也導(dǎo)致模型難以解釋。
詞向量技術(shù)在自然語言處理(Natural Language Processing,NLP)領(lǐng)域被廣泛應(yīng)用,其通過無監(jiān)督學(xué)習(xí)從大規(guī)模語料中獲取詞的高維向量表示,能夠很好地捕捉詞語的語法和語義信息[9]并準(zhǔn)確計(jì)算詞語間的語義相似度。本文基于詞向量對(duì)Levenshtein相似度算法和Jaccard系數(shù)進(jìn)行改進(jìn),提出一種新的句子相似度算法。通過分析對(duì)比多種句子相似度算法的優(yōu)缺點(diǎn)和應(yīng)用場(chǎng)景,設(shè)計(jì)多相似度特征的組合應(yīng)用模式,并使用改進(jìn)后的句子相似度算法在MRPC[10]釋義識(shí)別數(shù)據(jù)集上進(jìn)行釋義識(shí)別實(shí)驗(yàn)。
句子相似度計(jì)算可分為基于字重疊的方法、基于語言學(xué)的方法和基于語料庫(kù)的方法3類[6]。
基于字重疊的方法主要通過兩個(gè)句子共有的詞匯量來計(jì)算句子間的相似度,典型代表為Jaccard系數(shù),其以兩個(gè)句子中詞匯交集與詞匯并集的比值作為句子相似度?;谧种丿B方法的基本思想是兩個(gè)句子的構(gòu)成短語或詞匯的重疊個(gè)數(shù)越多,其相似度就越大,但這類方法都是字面層次的文本比較,未考慮詞語本身含義,因而使用范圍受到一定限制(如無法解決同義詞問題)。
基于語言學(xué)的方法通過計(jì)算構(gòu)成兩個(gè)句子的詞之間的語義關(guān)系和語法成分來確定句子間的相似度(如基于句法分析找到句子中各部分的依存關(guān)系或語義關(guān)系,在計(jì)算相似度的同時(shí)考慮詞語相似度和關(guān)系相似度),該方法支持較為豐富的語義,但是句子本身的復(fù)雜性為框架分析帶來較大的難度和工作量。
基于語料庫(kù)的方法將文本表示為一系列詞語的組合,把基于語料庫(kù)統(tǒng)計(jì)的向量的余弦相似度作為句子對(duì)的相似度,而不考慮詞語的語序和含義,典型代表為TF-IDF算法。TF-IDF的基本思想是字詞的重要性隨其在文檔中出現(xiàn)的次數(shù)正比增加,但同時(shí)會(huì)隨其在語料庫(kù)中出現(xiàn)的頻率反比下降。這類方法需要一個(gè)大的文本語料庫(kù)做統(tǒng)計(jì)運(yùn)算,而這類語料庫(kù)在某些具體領(lǐng)域是難以獲得的,例如軍事領(lǐng)域。
隨著詞向量在自然語言學(xué)習(xí)領(lǐng)域的廣泛使用,出現(xiàn)了大量基于詞向量的句子表示學(xué)習(xí)方法,主要可分為無監(jiān)督學(xué)習(xí)和有監(jiān)督學(xué)習(xí)兩類。
無監(jiān)督學(xué)習(xí)方法包括TF-IDF加權(quán)句向量[11]、SIF加權(quán)句向量[12]、Paragraph Vector DM/DBOM[13]、FastSent[14]、Skip-Thought Vector[15]和SDAE[14]等。TF-IDF加權(quán)句向量和SIF加權(quán)句向量是基于詞袋(Bag of Words,BOW)模型的改進(jìn)方法,這類方法通過對(duì)句子中詞向量的加權(quán)組合得到句子的向量表示,忽略了詞序信息,但簡(jiǎn)單高效,在一些任務(wù)中取得了較好的結(jié)果。Paragraph Vector DM/DBOM分別基于word2vec中的CBOW模型和skip-gram模型[16]。Skip-Thought Vector模型利用word2vec中的skip-gram模型進(jìn)行從詞級(jí)別到句子級(jí)別的推廣,即對(duì)當(dāng)前句子進(jìn)行編碼后再對(duì)其周圍的句子進(jìn)行預(yù)測(cè)。該模型采用Encoder-Decoder架構(gòu),由于使用了GRU網(wǎng)絡(luò),因此模型訓(xùn)練速度慢。SDAE(Sequential Denoising AutoEncoder)采用基于LSTM的Encoder-Decoder模型,包括編碼器和解碼器兩部分,輸入信息通過編碼器產(chǎn)生編碼信息,再通過解碼器得到輸出信息,模型的目標(biāo)是使輸出信息和輸入信息越來越接近,相較于Skip-Thought Vector的優(yōu)點(diǎn)是只需要輸入單個(gè)句子,不要求句子所在的文本是有序的,而Skip-Thought的輸入必須是3個(gè)有序的句子。FastSent利用Skip-Thought Vector的設(shè)計(jì)思想以及BOW形式的編碼方式,使得模型訓(xùn)練速度得到大幅提高。此外,研究者還提出一種FastSent的變體模型FastSent+AE,其不僅預(yù)測(cè)前后兩個(gè)句子中的詞,同時(shí)還預(yù)測(cè)本身句子中的詞。
有監(jiān)督學(xué)習(xí)方法包括InferSent[17]和GenSen[18]等。InferSent采用了遷移學(xué)習(xí)的方法,其從SNIL數(shù)據(jù)集[19]訓(xùn)練得到Encoder,然后使用預(yù)訓(xùn)練的Encoder生成句向量用于其他任務(wù)。該模型能夠獲得較優(yōu)的結(jié)果,但其采用BiLSTM網(wǎng)絡(luò),訓(xùn)練速度較慢,而且對(duì)于數(shù)據(jù)集規(guī)模的要求較高。GenSen則是一種基于多任務(wù)學(xué)習(xí)的模型,其同時(shí)在多個(gè)任務(wù)和多個(gè)數(shù)據(jù)源上進(jìn)行訓(xùn)練但共享相同的Sentence Embedding,這與Skip-Thought Vector 基本一致,主要區(qū)別在于Encoder 部分使用的是Bi-GRU,因此,該模型訓(xùn)練速度同樣較慢。
文獻(xiàn)[20]提出了用于機(jī)器閱讀理解的文檔-問題(QE)全匹配特征。對(duì)于文檔中的某個(gè)詞,假設(shè)該詞在問題中出現(xiàn),則其QE全匹配特征為1,否則為0。該特征從詞的共現(xiàn)出發(fā),一般而言,文檔中包括問題詞的部分更可能含有答案。本文基于這一思路,提出句子間的全匹配相似度指標(biāo),定義如下:
定義1給定句子T、S以及預(yù)訓(xùn)練的詞向量文件emb,對(duì)于句子T中的某個(gè)詞t,其與句子T的全匹配特征為:
(1)
其中,s為句子S中的某個(gè)詞,下標(biāo)emb表示取該詞的詞向量。對(duì)于句子T,該句與S的全匹配相似度如式(2)所示:
(2)
其中,‖·‖表示句子包含的詞數(shù)。
全匹配特征能夠反映句子間詞是否共現(xiàn)。一般而言,若句子T中的詞在句子S中出現(xiàn),那么這兩個(gè)句子更可能相似??紤]到自然語言中存在大量的多詞一義現(xiàn)象,因此,本文不直接考察文本詞是否在查詢中出現(xiàn),而是通過詞向量之間的相似度度量某個(gè)文本詞的詞義是否在查詢中出現(xiàn)。
2.2.1 Jaccard系數(shù)
Jaccard系數(shù)又稱為Jaccard相似系數(shù),可用于比較有限樣本集之間的相似度與差異性,系數(shù)值越大,樣本相似度越高[9]。直觀上而言,兩個(gè)句子的相同部分越大,共現(xiàn)詞匯數(shù)目越多,它們的相似度應(yīng)該越高。因此,可以使用Jaccard系數(shù)計(jì)算兩個(gè)句子間的相似度,如式(3)所示:
(3)
其中,Inter(S,T)表示句子S和句子T之間的詞匯交集,Union(S,T)表示句子S和句子T之間的詞匯并集。
2.2.2 改進(jìn)的Jaccard系數(shù)
傳統(tǒng)的Jaccard系數(shù)未考慮詞的語義,只是單純地基于共現(xiàn)詞計(jì)算句子的相似度,無法處理多詞一義的情況,如“I hava a computer.”和“I have a PC.”,顯然兩句在語義上是相等的,而傳統(tǒng)Jaccard系數(shù)在計(jì)算過程中卻無法識(shí)別“computer”和“PC”為語義一致,所得到的Jaccard系數(shù)僅為0.6。
詞向量是每個(gè)詞語在語義層面的高維向量表示,本文結(jié)合詞向量對(duì)傳統(tǒng)的Jaccard系數(shù)進(jìn)行改進(jìn)。改進(jìn)后的Jaccard系數(shù)定義如下:
定義2給定句子T、S、預(yù)訓(xùn)練詞向量文件emb以及詞向量相似度閾值α(α≥0)。T和S間的改進(jìn)Jaccard系數(shù)如式(4)所示:
(4)
其中,下標(biāo)emb代表取該詞的詞向量,‖T‖·‖S‖表示句子T和S的長(zhǎng)度乘積。
在改進(jìn)的Jaccard系數(shù)定義式中,分子部分代表句子T和S中詞向量的相似度之和,相較于傳統(tǒng)的Jaccard系數(shù)方法,改進(jìn)后的Jaccard詞向量匹配特征由于引入了詞向量,不僅能夠反映句子間詞的共現(xiàn)情況,而且還能反映詞向量的共現(xiàn)值。分母部分實(shí)際上包括了分子部分以及句子T和S中詞向量的不共現(xiàn)度,因此,0≤Jaccard(T,S)≤1。
2.3.1 Levenshtein距離及相似度算法
Levenshtein距離是指兩個(gè)字符串之間由原字符串S轉(zhuǎn)換為新字符串T所需要的最少編輯次數(shù),允許的編輯操作包括插入、替換、刪除[21]。
基于Levenshtein距離能夠計(jì)算字符串間的相似度,如式(5)所示:
(5)
其中,l為字符串S與T間的Levenshtein距離。Lsim值越大,表示兩個(gè)字符串相似度越高;Lsim值越小,表示兩個(gè)字符串相似度越低。同樣,對(duì)于句子而言,以詞為單位進(jìn)行插入、刪除和替換操作即可得到句子級(jí)別的Levenshtein相似度。
2.3.2 基于編輯操作排序的路徑回溯算法
目前對(duì)于Levenshtein相似度的求解一般使用動(dòng)態(tài)規(guī)劃算法。假設(shè)有兩個(gè)字符串S和T,S={s1,s2,…,sN},T={t1,t2,…,tM},建立S與T的(N+1)(M+1)階LD矩陣,如式(6)所示:
(6)
在LD矩陣中,第1列代表字符串S,第1行代表字符串T,dij表示從字符串{s1,s2,…,si}到字符串{t1,t2,…,tj}所需的最少編輯次數(shù)。矩陣填充公式如下:
其中,i=1,2,…,N,j=1,2,…,M,矩陣右下角元素dNM為字符串S和T之間的Levenshtein距離,記為ld。
在LD矩陣基礎(chǔ)上,可以回溯得到編輯路徑。需要注意的是,在編輯路徑回溯時(shí)可能產(chǎn)生多條編輯路徑[16],而通過實(shí)驗(yàn)可以發(fā)現(xiàn),不同編輯路徑計(jì)算得到的Levenshtein詞向量距離是不同的。為避免回溯路徑對(duì)相似度造成影響,本文設(shè)計(jì)基于LD矩陣的編輯路徑回溯算法,通過對(duì)編輯操作的優(yōu)先級(jí)排序得到唯一的回溯路徑。算法描述如下:
算法基于編輯操作排序的編輯路徑回溯
1.Input S,T,operation_rank
//輸入源字符串、目標(biāo)字符串和編輯操作排序
2.Initialize LD matrix,i=len(S),j=len(T),list_operation=[]
//初始化LD矩陣、回溯指針及回溯路徑
3.While i>= 0 and j>=0://編輯路徑回溯
{
coordinate=[i,j]//記錄當(dāng)前編輯操作發(fā)生的位置
If i==0:operation=“insert”;
elif j==0:operation = “delete”;
Else://根據(jù)編輯距離和編輯操作排序選擇編輯操作
{
candidate_operation={“replace”:LD(i-1,j-1),“insert”:
LD(i,j-1),“delete”:LD(i-1,j)}
sorted_operation=sort(candidate_operation,by={value,operation_rank},descending=False)
operation=sorted_operation[0]
}//更新回溯指針
If operation==“delete”:j=j-1;
elif operation==“insert”:i=i-1;
else:i=i-1,j=j-1;
list_operation.append([operation,coordinate])//更新回//溯路徑
}
4.Output list_operation//輸出回溯路徑
由于算法指定了編輯操作的優(yōu)先級(jí)排序,因此在進(jìn)行LD矩陣回溯時(shí),每一步的回溯操作都是唯一的,即能夠得到唯一的回溯路徑。根據(jù)分析可知,該算法的空間復(fù)雜度和時(shí)間復(fù)雜度僅與2個(gè)字符串的長(zhǎng)度有關(guān),其中空間開銷即LD矩陣的存儲(chǔ)開銷為O(MN),時(shí)間開銷即回溯的次數(shù),若M>N,則時(shí)間復(fù)雜度為O(M),否則為O(N)。需要注意的是,“replace”本質(zhì)上并不是Levenshtein算法規(guī)定的替換操作,而是指在進(jìn)行字符串轉(zhuǎn)換時(shí)直接從原字符串復(fù)制字符到目標(biāo)字符串中,但是為了統(tǒng)一符號(hào),本文將其看作一種特殊的待替換字符與替換字符執(zhí)行相同的替換操作。
2.3.3 改進(jìn)的Levenshtein相似度算法
傳統(tǒng)的Levenshtein相似度算法從字符串互相轉(zhuǎn)換的角度出發(fā)計(jì)算需要的最少編輯操作次數(shù),能夠從一定層面上反映句子間的相似性。但是僅考慮所需編輯操作次數(shù)而不考慮編輯操作本身引起的語義差異是不夠的。假設(shè)有句子S、T和Q,分別為“I have a computer.”“I have a PC.”和“I have a TV.”,根據(jù)傳統(tǒng)的Levenshtein相似度算法,3個(gè)句子兩兩之間都只需要一次替換操作即可完成轉(zhuǎn)換。實(shí)際上句子S與T的語義一致,而S與Q、T與Q的語義差異更大,這是因?yàn)椴煌木庉嫴僮鲗?duì)句子語義的改變是不同的,將“computer”替換為“PC”并未對(duì)語義造成影響,因?yàn)椤癱omputer”與“PC”是等價(jià)的,而將其替換為“TV”則會(huì)引起較大的語義改變。
針對(duì)上述問題,本文通過引入詞向量對(duì)Levenshtein距離算法進(jìn)行改進(jìn)。改進(jìn)算法的具體步驟如下:
步驟1給定句子T和S,l=max(‖T‖,‖S‖),計(jì)算兩者間的LD矩陣。
步驟2通過LD矩陣回溯編輯路徑并記錄路徑。
步驟3對(duì)于編輯路徑中的刪除和插入操作,將其轉(zhuǎn)換為特殊的替換操作,即刪除操作等價(jià)于將待刪除字符替換為空字符,插入操作等價(jià)于將空字符替換為待插入字符。
步驟4對(duì)于編輯路徑中的所有操作,通過詞向量計(jì)算替換操作兩個(gè)字符的相似度并累加,將得到結(jié)果記為L(zhǎng)emb,即Levenshtein詞向量距離。
步驟5輸出改進(jìn)的Levenshtein相似度1-Lemb/l,記為L(zhǎng)sim′。
根據(jù)改進(jìn)的Levenshtein相似度算法對(duì)例句S、T和Q計(jì)算,從S轉(zhuǎn)換到T和從S轉(zhuǎn)換到Q都只需要一次替換操作,但由于“computer”與“PC”的語義相近,“computer”與“TV”的語義相差較大,因此有:Lemb(S,T)
可以看出,改進(jìn)后的Levenshtein相似度算法相較于傳統(tǒng)Levenshtein相似度算法能夠更準(zhǔn)確地刻畫句子之間的語義相關(guān)性。
Jaccard系數(shù)和Levenshtein相似度是目前常用的句子相似度計(jì)算方法,兩者從不同的角度刻畫了句子間的相似度。Jaccard系數(shù)從集合論的思想出發(fā),利用句子間共現(xiàn)詞占全部詞的比例反映句子的相似度,但忽視了句子語序的影響,而Levenshtein相似度則通過句子間相互轉(zhuǎn)換所需操作次數(shù)來衡量句子相似度,一定程度上考慮了句子間的語序。兩種方法本質(zhì)上都是基于字面量的匹配方法,雖然取得了一定的效果,但都無法解決多詞一義問題。因此,本文引入詞向量這一詞語語義的高維表示方法對(duì)上述算法進(jìn)行改進(jìn),提出一種新的相似度算法。改進(jìn)后的Jaccard系數(shù)和Levenshtein相似度不僅能夠反映句子間字面量的相似性,而且能夠應(yīng)對(duì)多詞一義的情況。然而需要指出的是,改進(jìn)后的Jaccard系數(shù)和Levenshtein相似度由于使用了詞向量作為支撐,因此詞向量的質(zhì)量對(duì)于算法性能有較大影響,而對(duì)于一些專有名詞如人名、地名或?qū)I(yè)領(lǐng)域(如醫(yī)學(xué)、生物、建筑等)詞匯,這些詞匯往往不可替代且出現(xiàn)次數(shù)較少。因此,詞向量無法完全反映其語義信息甚至難以獲得這類詞的詞向量,而傳統(tǒng)Jaccard系數(shù)和Levenshtein相似度在面對(duì)此類句子時(shí)則較為有效。
多種句子相似度指標(biāo)的組合能夠有效結(jié)合各類指標(biāo)的優(yōu)點(diǎn)。傳統(tǒng)的Jaccard系數(shù)和Levenshtein相似度對(duì)于專有名詞表現(xiàn)更好,而改進(jìn)的Jaccard系數(shù)和Levenshtein相似度則對(duì)通用詞匯間的多詞一義現(xiàn)象更具優(yōu)勢(shì)。全匹配特征類似于Jaccard系數(shù),其直接通過詞的共現(xiàn)判斷句子相似度,但沒有采用集合論方法,因此能夠反映詞頻信息。本文將句子對(duì)的Jaccard系數(shù)、Levenshtein相似度、全匹配相似度、改進(jìn)后的Jaccard系數(shù)與Levenshtein相似度共5種相似度指標(biāo)相結(jié)合作為特征向量,共同描述句子對(duì)間的相似度關(guān)系,然后根據(jù)這一特征向量判斷句子間的語義等價(jià)關(guān)系,從而避免信息的遺漏和丟失,增強(qiáng)算法的健壯性。
本文選用微軟發(fā)布的通用語料集MRPC進(jìn)行實(shí)驗(yàn)。MRPC數(shù)據(jù)集是一個(gè)用于釋義識(shí)別任務(wù)的數(shù)據(jù)集,包含取自互聯(lián)網(wǎng)新聞文章的4 076對(duì)訓(xùn)練句子和1 725對(duì)測(cè)試句子,每個(gè)句子對(duì)由兩位評(píng)估人員判斷其語義是否等價(jià),該數(shù)據(jù)集樣本分布如表1所示。
表1 MRPC數(shù)據(jù)集樣本分布
給出如下數(shù)據(jù)集示例,其中,“#1 String”和“#2 String”是被測(cè)試的句子對(duì),Quality表示句子對(duì)是否語義等價(jià),取值為{0,1}。
Quality#1 ID#2 ID#1 String#2 String
1702876702977Amrozi accused his brother,whom he called "the witness",of deliberately distorting his evidence.Referring to him as only "the witness",Amrozi accused his brother of deliberately distorting his evidence.
021087052108831Yucaipa owned Dominick′s before selling the chain to Safeway in 1998 for $2.5 billion.Yucaipa bought Dominick′s in 1995 for $693 million and sold it to Safeway for $1.8 billion in 1998.
MRPC數(shù)據(jù)集以準(zhǔn)確率(accuracy)和F1值作為評(píng)價(jià)指標(biāo),其定義如下:
其中:TP為預(yù)測(cè)為等價(jià)并且實(shí)際上等價(jià)的樣本數(shù)量;TN為預(yù)測(cè)為不等價(jià)并且實(shí)際上不等價(jià)的樣本數(shù)量;FP為預(yù)測(cè)為等價(jià)但實(shí)際上不等價(jià)的樣本數(shù)量;FN為預(yù)測(cè)為不等價(jià)但實(shí)際上等價(jià)的樣本數(shù)量[6]。
首先對(duì)句子進(jìn)行預(yù)處理,然后計(jì)算句子對(duì)的Jaccard系數(shù)、Levenshtein相似度、全匹配相似度、改進(jìn)后的Jaccard系數(shù)與Levenshtein相似度5種相似度指標(biāo)。其中,分詞方法選用python的spacy包,詞向量選用300維的谷歌預(yù)訓(xùn)練詞向量[22](下載地址為nlp.stanford.edu/data/glove.840B.300d.zip),改進(jìn)Jaccard系數(shù)算法的參數(shù),并將Levenshtein距離計(jì)算中路徑回溯算法的編輯操作優(yōu)先級(jí)排序?yàn)閇replace,delete,insert]。
由于各類相似度取值都較為接近,簡(jiǎn)單的特征加權(quán)算法會(huì)丟失大量信息,因此在完成各類相似度計(jì)算后,采用分類模型進(jìn)行釋義識(shí)別。以5種相似度指標(biāo)值為樣本特征,以句子對(duì)是否語義等價(jià)為類別標(biāo)簽,選用多種常用機(jī)器學(xué)習(xí)分類算法對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,包括梯度提升樹(Gradient Boosting Decision Tree,GBDT)、支持向量機(jī)(Support Vector Machine,SVM)、樸素貝葉斯(Na?ve Bayes,NB)、K近鄰分類(K-Nearest Neighbor algorithm,KNN)、決策樹(Decision Tree,DT)、隨機(jī)森林(Random Forest,RF)和邏輯回歸分類(Logistic Regression,LR)。
3.3.1 分類算法對(duì)比實(shí)驗(yàn)
表2記錄了基于多相似度特征不同分類算法在MRPC數(shù)據(jù)集上的表現(xiàn),其中黑體表示最優(yōu)結(jié)果??梢钥闯?表現(xiàn)最好的是SVM算法和LR算法。SVM算法的F1值達(dá)到83.69%,準(zhǔn)確率為73.62%。LR算法雖然在F1值上略遜色于SVM算法,為82.12%,但準(zhǔn)確率的表現(xiàn)更好,達(dá)到了74.14%。KNN算法、DT算法和RF算法整體表現(xiàn)較差,筆者認(rèn)為這與數(shù)據(jù)中類別不平衡和特征相關(guān)性有關(guān)。由表1可見:MRPC數(shù)據(jù)存在一定的類別不平衡現(xiàn)象,其語義等價(jià)樣本數(shù)和語義不等價(jià)樣本數(shù)的比值約為2∶1,同時(shí)作為樣本特征的5類相似度指標(biāo)存在一定的相關(guān)性;KNN算法容易受到類別不平衡影響,決策樹算法不僅受類別不平衡影響較大,而且還容易過擬合,因此,兩者表現(xiàn)較差,而基于決策樹的隨機(jī)森林算法同樣無法避免這個(gè)問題;SVM算法基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化原則,能夠避免過擬合問題,泛化能力強(qiáng),并且SVM是一個(gè)凸優(yōu)化問題,其局部最優(yōu)解必定為全局最優(yōu)解,而LR算法不容易受到特征間相關(guān)性的影響,因此,這兩種算法取得了較好的實(shí)驗(yàn)結(jié)果。
表2 不同分類算法在MRPC數(shù)據(jù)集上的準(zhǔn)確率和F1值
由于表2所示的實(shí)驗(yàn)結(jié)果是在未做進(jìn)一步模型調(diào)參下獲得的,即使是表現(xiàn)最差的決策樹算法也依然取得了準(zhǔn)確率63.48%和F1值72.30%的結(jié)果,表明輸入特征能夠有效區(qū)分句子間的語義相似度。
3.3.2 本文算法與其他算法的對(duì)比實(shí)驗(yàn)
根據(jù)表2不同分類算法的表現(xiàn)結(jié)果,本文選擇SVM算法訓(xùn)練分類模型,同時(shí)應(yīng)用超參數(shù)搜索和交叉檢驗(yàn)等方法提升模型表現(xiàn),其與現(xiàn)有其他模型的準(zhǔn)確率和F1值比較如表3所示,其中黑體表示最優(yōu)結(jié)果,?表示在文獻(xiàn)[20]基礎(chǔ)上通過遷移學(xué)習(xí)得到的新模型??梢钥闯?本文模型準(zhǔn)確率為74.4%,F1值為82.6%,位居第三,并且與前兩名實(shí)驗(yàn)結(jié)果差距較小。
表3 使用不同句子相似度算法的釋義識(shí)別模型性能對(duì)比Table 3 Performance comparison of paraphrase recognition models using different sentence similarity algorithms %
表3中的模型都需要大規(guī)模語料庫(kù)或深度學(xué)習(xí)模型進(jìn)行支撐。如第1組和第2組中的Unigram-TFIDF、Paragraph Vec和SDAE、FastSent、Skip Thought等無監(jiān)督表示學(xué)習(xí)方法都是在Toronto book corpus (該語料庫(kù)大小約70 MB,由來自7 000多本書的有序句子組成)上訓(xùn)練得到,并且這兩組模型最好的實(shí)驗(yàn)結(jié)果分別為準(zhǔn)確率73.9%、F1值82.0%和準(zhǔn)確率73.0%、F1值82.0%,相較本文模型的實(shí)驗(yàn)結(jié)果仍有一定差距。第3組中的方法通過有監(jiān)督訓(xùn)練學(xué)習(xí)得到句子表示,然后基于句子的表示進(jìn)行釋義識(shí)別,僅有InferSent和GenSen兩種模型比本文模型表現(xiàn)得更好。但是InferSent模型的結(jié)果是基于SNLI和MultiGenre NLI(該數(shù)據(jù)集是SNLI的增強(qiáng)版本,包括433k個(gè)句子對(duì))兩個(gè)數(shù)據(jù)集[23]訓(xùn)練得到的,而當(dāng)InferSent模型在SST數(shù)據(jù)集[24](該數(shù)據(jù)集僅包括12k個(gè)樣本)上進(jìn)行訓(xùn)練時(shí)僅能得到準(zhǔn)確率72.7%和F1值80.9%的實(shí)驗(yàn)結(jié)果,相較于本文模型的實(shí)驗(yàn)結(jié)果低了2個(gè)百分點(diǎn),說明該模型的表現(xiàn)受到語料數(shù)量的限制。此外,InferSent模型使用了BiLSTM-Maxpooling作為編碼器,這導(dǎo)致其訓(xùn)練時(shí)長(zhǎng)和計(jì)算資源需求都十分巨大,根據(jù)官方代碼,該模型的參數(shù)量約為47 MB。GenSen模型基于GRU的Encoder-Decoder架構(gòu),同時(shí)使用了多任務(wù)學(xué)習(xí),這種方法同樣對(duì)于計(jì)算資源和語料的要求都十分巨大,而在不進(jìn)行多任務(wù)學(xué)習(xí)的情況下其表現(xiàn)為準(zhǔn)確率72.4%、F1值81.6%,與本文模型相比仍略有差距。
相比上述模型,本文基于改進(jìn)文本相似度的釋義識(shí)別模型僅使用了通用的預(yù)訓(xùn)練詞向量,計(jì)算過程也只包括相似度指標(biāo)計(jì)算和簡(jiǎn)單的機(jī)器學(xué)習(xí)分類模型訓(xùn)練兩部分,因而實(shí)驗(yàn)結(jié)果較優(yōu),證明了本文對(duì)文本相似度算法的改進(jìn)是有效的,并且可將該算法作為一種簡(jiǎn)單但優(yōu)秀的基線模型用于后續(xù)的釋義識(shí)別任務(wù)研究。
本文針對(duì)現(xiàn)有句子相似度算法存在的不足,結(jié)合詞向量技術(shù)對(duì)傳統(tǒng)的Levenshtein相似度算法和Jaccard系數(shù)進(jìn)行改進(jìn),提出一種新的句子相似度算法。在通用MRPC數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,該算法能夠提高準(zhǔn)確率和F1值,可作為一種簡(jiǎn)單有效的基線模型用于后續(xù)的釋義識(shí)別任務(wù)。下一步將拓展更多的句子相似度度量指標(biāo),同時(shí)加快算法的計(jì)算速度。