本發(fā)明涉及自然語(yǔ)言處理領(lǐng)域,特別涉及一種句子語(yǔ)義相似度計(jì)算方法。
背景技術(shù):
語(yǔ)義相似度計(jì)算是文本處理中最基礎(chǔ)使用最廣泛的技術(shù)。從單詞層面來(lái)看,存在一詞多義、歧義等問(wèn)題;從句子層面來(lái)看,句子的句式靈活多變,并不是單詞堆積這么簡(jiǎn)單。因此,研究語(yǔ)義相似度計(jì)算有助于更好地進(jìn)行語(yǔ)義理解。語(yǔ)義理解歷來(lái)是自然語(yǔ)言處理領(lǐng)域的一個(gè)難題,在很多的研究中都發(fā)揮著至關(guān)重要的作用。比如,信息檢索、文本聚類、轉(zhuǎn)述識(shí)別、機(jī)器翻譯、自動(dòng)問(wèn)答、用戶意圖理解等等。在搜索領(lǐng)域(google、baidu等搜索引擎),社區(qū)問(wèn)答領(lǐng)域(yahoo!answer、quora、百度知道、知乎等),語(yǔ)義理解的準(zhǔn)確性直接關(guān)乎答案質(zhì)量和用戶體驗(yàn)。因此,對(duì)于自然語(yǔ)言處理領(lǐng)域,研究語(yǔ)義相似度計(jì)算十分重要。
句子的語(yǔ)義相似度計(jì)算就是要根據(jù)句子的構(gòu)成和語(yǔ)義信息來(lái)計(jì)算兩個(gè)句子的相似程度。它在信息檢索、問(wèn)答系統(tǒng)、文本分類、文本查重等自然語(yǔ)言處理的任務(wù)中都發(fā)揮著重要作用。例如,在搜索引擎和問(wèn)答系統(tǒng)中,計(jì)算機(jī)需要在海量的互聯(lián)網(wǎng)數(shù)據(jù)中搜尋到符合用戶意圖的答案,單純的依靠關(guān)鍵字查詢返回與之相關(guān)的網(wǎng)頁(yè)往往會(huì)存在許多相同的內(nèi)容,而且有的詞存在多個(gè)涵義,返回的內(nèi)容可能并不是用戶意圖想要的。而利用句子語(yǔ)義相似度計(jì)算可以對(duì)句子進(jìn)行語(yǔ)義分析,提取特征,理解用戶的真正需求,計(jì)算找到的候選集與用戶意圖的相似度,相似度最大的就是最佳答案。這樣返回的答案就更加準(zhǔn)確。因此,句子的語(yǔ)義相似度計(jì)算在多個(gè)領(lǐng)域都有重要的研究意義。
目前,句子的語(yǔ)義相似度計(jì)算一般有兩種方式:一種是傳統(tǒng)的基于特征工程的方法,它需要人為地進(jìn)行特征提取來(lái)表示句子,進(jìn)而進(jìn)行相似度計(jì)算;另一種是基于深度學(xué)習(xí)的方法,由機(jī)器自動(dòng)進(jìn)行特征提取。這兩種方法各有利弊,人為的進(jìn)行特征提取優(yōu)點(diǎn)是可以提取的特征更加準(zhǔn)確,畢竟人比機(jī)器更加了解語(yǔ)言,缺點(diǎn)是對(duì)人的要求很高,提取的特征可能不全面,不能很好地表示句子。而基于深度學(xué)習(xí)的方法優(yōu)點(diǎn)是不用人力,機(jī)器可以自動(dòng)進(jìn)行,節(jié)約資源,缺點(diǎn)是提取的特點(diǎn)針對(duì)性不是很好,而且神經(jīng)網(wǎng)絡(luò)模型的可解釋性欠佳?,F(xiàn)有的語(yǔ)義相似度計(jì)算方法只偏向于使用其中一種,將兩類方法得到的向量結(jié)合起來(lái)的方法很少,原因在于結(jié)合實(shí)現(xiàn)代碼比較復(fù)雜,實(shí)現(xiàn)起來(lái)非常困難。
因此,亟需一種基于深度學(xué)習(xí)和特征工程的句子語(yǔ)義相似度計(jì)算方法。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明的目的:為了解決現(xiàn)有句子語(yǔ)義相似度計(jì)算方法存在的技術(shù)問(wèn)題,提供一種句子語(yǔ)義相似度計(jì)算方法,本發(fā)明結(jié)合深度學(xué)習(xí)模型與傳統(tǒng)特征工程方法,將基于特征工程和基于深度學(xué)習(xí)的方法結(jié)合起來(lái)進(jìn)行句子的特征提取兩種方法互相彌補(bǔ),使得特征提取更加全面和準(zhǔn)確。
為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案是:提供了一種句子語(yǔ)義相似度計(jì)算方法,包括以下過(guò)程:
步驟1:通過(guò)深度學(xué)習(xí)模型分別對(duì)第一句子、第二句子進(jìn)行特征提取,得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量;通過(guò)特征工程分別對(duì)第一句子的單詞、第二句子的單詞進(jìn)行特征提取,得到第一句子局部語(yǔ)義向量和第二句子局部語(yǔ)義向量;
步驟2:將第一句子全局語(yǔ)義向量與第一句子局部語(yǔ)義向量進(jìn)行拼接,得到第一句子的一維特征向量;將第二句子全局語(yǔ)義向量與第二句子局部語(yǔ)義向量進(jìn)行拼接,得到第二句子的一維特征向量;
步驟3:計(jì)算第一句子的一維特征向量與第二句子的一維特征向量之間的向量距離,根據(jù)向量距離得到第一句子與第二句子之間的相似度值。
進(jìn)一步地,所述通過(guò)深度學(xué)習(xí)模型分別對(duì)第一句子、第二句子進(jìn)行特征提取,得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量,包括以下過(guò)程:
將句子進(jìn)行詞向量化表示,得到句子的詞向量;所述句子為第一句子或第二句子;
將句子的詞向量輸入到bilstm中,得到bilstm隱藏層的m維向量,即句子的高維特征向量,公式為:
hm(t)=[h(t),h(t+1),...,h(t+m-1)]
其中,hm(t)表示m維向量,h表示隱藏層的函數(shù),t表示t時(shí)刻,m表示向量維度;
m維向量通過(guò)cnn卷積層的過(guò)濾器進(jìn)行過(guò)濾,得到過(guò)濾結(jié)果,公式為:
f=[f(0)...f(m-1)]
其中,f表示過(guò)濾器,m表示過(guò)濾器的個(gè)數(shù),of(t)表示過(guò)濾結(jié)果,tanh表示激活函數(shù),
將過(guò)濾結(jié)果進(jìn)行池化操作,分別得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量。
進(jìn)一步地,通過(guò)特征工程分別對(duì)第一句子的單詞、第二句子的單詞進(jìn)行特征提取,得到第一句子局部語(yǔ)義向量和第二句子局部語(yǔ)義向量,包括以下過(guò)程:
將第一句子每個(gè)單詞與第二句子每個(gè)單詞分別進(jìn)行相似度計(jì)算,得到相似度矩陣;
基于相似度矩陣計(jì)算第一句子每個(gè)單詞與第二句子每個(gè)單詞的對(duì)齊參數(shù);
利用對(duì)齊參數(shù)與單詞的特征參數(shù)來(lái)計(jì)算第一句子和第二句子的對(duì)齊特征,公式為:
fs1=∑ialigni*feai/∑ifeai
ft1=∑jalignj*feaj/∑jfeaj
其中,fs1表示第一句子的對(duì)齊特征,∑i表示對(duì)含有參數(shù)i的項(xiàng)進(jìn)行求和,aligni表示第一句子中單詞i的對(duì)齊參數(shù),feai表示第一句子任一單詞si的特征;ft1表示第二句子的對(duì)齊特征,∑j表示對(duì)含有參數(shù)j的項(xiàng)進(jìn)行求和,alignj表示第二句子中單詞j的對(duì)齊分?jǐn)?shù),feaj表示第二句子任一單詞tj的特征;
利用第一句子中沒(méi)有對(duì)齊的單詞和第二句子中沒(méi)有對(duì)齊的單詞,分別計(jì)算第一句子的不對(duì)齊特征和第二句子的不對(duì)齊特征,公式為:
其中,fs2表示第一句子的不對(duì)齊特征,unaliнni表示將第一句子中沒(méi)有對(duì)齊的單詞,feai表示第一句子任一單詞si的特征,∑i表示對(duì)含有參數(shù)i的項(xiàng)進(jìn)行求和;ft2表示第二句子的不對(duì)齊特征,unalignj表示將第二句子中沒(méi)有對(duì)齊的單詞,feaj表示第二句子任一單詞tj的特征,∑j表示對(duì)含有參數(shù)j的項(xiàng)進(jìn)行求和;
將第一句子的對(duì)齊特征和不對(duì)齊特征進(jìn)行拼接,得到第一句子局部語(yǔ)義向量;將第二句子的對(duì)齊特征和不對(duì)齊特征進(jìn)行拼接,得到第二句子的局部語(yǔ)義向量。
進(jìn)一步地,所述將第一句子每個(gè)單詞與第二句子每個(gè)單詞分別進(jìn)行相似度計(jì)算,得到相似度矩陣,包括以下過(guò)程:
構(gòu)建句子單詞的共生矩陣,根據(jù)矩陣窗口大小在語(yǔ)料庫(kù)中遍歷對(duì)應(yīng)單詞的共現(xiàn)次數(shù),并將共現(xiàn)次數(shù)轉(zhuǎn)換成相應(yīng)的log形式放到矩陣的相應(yīng)位置,得到句子單詞的新矩陣;所述句子為第一句子或第二句子;
對(duì)句子單詞的新矩陣進(jìn)行svd奇異值分解并降維,并分別取第一句子、第二句子的前p個(gè)特征值,p為任意數(shù);
根據(jù)特征值計(jì)算第一句子單詞與第二句子單詞的cosine相似度,公式為:
其中,cosine(si,tj)表示第一句子任一單詞si與第二句子任一單詞tj的余弦相似度,svi表示第一句子p個(gè)特征值中任一特征對(duì)應(yīng)的單詞si,t表示單詞si特征表示的轉(zhuǎn)置,tvj表示第二句子p個(gè)特征值中任一特征對(duì)應(yīng)的單詞;
根據(jù)第一句子單詞與第二句子單詞的相似度,構(gòu)建相似度矩陣。相似度矩陣中每個(gè)元素都表示對(duì)應(yīng)位置的兩個(gè)單詞間的相似度,如:用a表示相似度矩陣,那么第一句子第i個(gè)單詞與第二句子第j個(gè)單詞的相似度為矩陣a中對(duì)應(yīng)元素aij的值,可以方便后續(xù)的查詢。
進(jìn)一步地,所述基于相似度矩陣計(jì)算第一句子每個(gè)單詞與第二句子每個(gè)單詞的對(duì)齊參數(shù),具體為:對(duì)于句子中的每個(gè)單詞,在相似度矩陣中尋找它與另一個(gè)句子中所有單詞的相似度,最大的那個(gè)相似度就記作這個(gè)單詞的對(duì)齊參數(shù),所述句子為第一句子或第二句子。
進(jìn)一步地,所述單詞的特征參數(shù)通過(guò)以下過(guò)程計(jì)算得到:
對(duì)于句子中的單詞,計(jì)算另一個(gè)句子中的單詞與它的匹配值,用匹配值表示單詞的特征參數(shù),計(jì)算公式為:
其中,
進(jìn)一步地,所述單詞的特征參數(shù)通過(guò)以下過(guò)程計(jì)算得到:
用單詞的tfidf值表示單詞的特征參數(shù),所述第一句子單詞的tfidf值計(jì)算公式如下:
tfidfis=tfi,s×idfi,s
其中,tfidfis表示第一句子單詞的tfidf值,tfi,s表示第一句子任一單詞si在句子中的詞頻,idfi,s表示第一句子任一單詞si在句子中的逆向文件頻率,ni,s表示第一句子任一單詞si在句子中出現(xiàn)的次數(shù),∑knk,s表示第一句子中所有單詞出現(xiàn)的次數(shù)之和,|d|表示總的句子數(shù),|{j:ti∈dj|表示包含單詞的句子數(shù)目;
參考上述過(guò)程,可以計(jì)算出第二句子中單詞的tfidf值,即得到第二句子單詞的特征參數(shù)。
進(jìn)一步地,所述計(jì)算第一句子的一維特征向量與第二句子的一維特征向量之間的向量距離,根據(jù)向量距離得到第一句子與第二句子之間的相似度,包括以下過(guò)程:
計(jì)算第一句子的一維特征向量與第二句子的一維特征向量的cosine相似度,公式為:
其中,cos(s,t)表示第一句子的一維特征向量與第二句子的一維特征向量的cosine相似度,s表示第一句子的一維特征向量,stt表示特征向量的轉(zhuǎn)置,t表示第二句子的一維特征向量;
計(jì)算第一句子的一維特征向量與第二句子的一維特征向量的歐氏距離sim(s,t),公式為:
將得到的cosine相似度與歐氏距離取平均,得到第一句子與第二句子之間的相似度。
本發(fā)明的有益效果是:本發(fā)明文將深度學(xué)習(xí)模型提取出的句子的全局語(yǔ)義向量與基于特征工程的句子的局部語(yǔ)義向量聯(lián)合起來(lái),共同作為句子的特征向量,進(jìn)而對(duì)兩個(gè)句子進(jìn)行相似度計(jì)算,提取的特征更加全面、深入,具有一定的針對(duì)性,計(jì)算得到的相似度準(zhǔn)確性更高。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例1句子語(yǔ)義相似度計(jì)算方法的實(shí)現(xiàn)流程圖。
具體實(shí)施方式
為使本發(fā)明解決的技術(shù)問(wèn)題、采用的技術(shù)方案和達(dá)到的技術(shù)效果更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。
實(shí)施例1
參照?qǐng)D1,本實(shí)施例公開(kāi)了一種句子語(yǔ)義相似度計(jì)算方法,包括以下過(guò)程:
步驟1:分別通過(guò)深度學(xué)習(xí)模型、特征工程對(duì)第一句子和第二句子進(jìn)行特征提取,得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量,以及第一句子局部語(yǔ)義向量和第二句子局部語(yǔ)義向量;
步驟1.1:通過(guò)深度學(xué)習(xí)模型分別對(duì)第一句子、第二句子進(jìn)行特征提取,得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量,具體過(guò)程如下:
步驟1.1.1:將句子進(jìn)行詞向量化表示,得到句子的詞向量;所述句子為第一句子或第二句子;
步驟1.1.2:將句子的詞向量輸入到bilstm中,得到bilstm隱藏層的m維向量,即句子的高維特征向量,公式為:
hm(t)=[h(t),h(t+1),...,h(t+m-1)]
其中,hm(t)表示m維向量,h表示隱藏層的函數(shù),t表示t時(shí)刻,m表示向量維度;
對(duì)于句子中的單詞來(lái)說(shuō),處于不同的上下文就會(huì)有不同的語(yǔ)義。因此,要得到單詞基于句子的語(yǔ)義就要基于它的上下文信息。單向lstm可以利用到單詞的上文信息,它在處理序列的當(dāng)前元素時(shí),其隱藏單元中就包含關(guān)于該序列的所有過(guò)去元素的歷史信息的“狀態(tài)向量”。而雙向的lstm能同時(shí)利用上文信息和下文信息,能夠綜合句子的總體信息,得到全局范圍上的特征。所以我們先使用bilstm對(duì)句子進(jìn)行特征提取。
步驟1.1.3:m維向量通過(guò)cnn卷積層的過(guò)濾器進(jìn)行過(guò)濾,得到過(guò)濾結(jié)果,公式為:
f=[f(0)...f(m-1)]
其中,f表示過(guò)濾器,m表示過(guò)濾器的個(gè)數(shù),of(t)表示過(guò)濾結(jié)果,tanh表示激活函數(shù),
由于卷積神經(jīng)網(wǎng)絡(luò)(cnn)能夠很好的進(jìn)行局部感知,而理解句子語(yǔ)義時(shí),有時(shí)需要將幾個(gè)單詞組合在一起形成短語(yǔ)一起才能正確理解它的真正的含義。因此對(duì)于bilstm的輸出,我們?cè)偻ㄟ^(guò)卷積神經(jīng)網(wǎng)絡(luò)對(duì)局部特征進(jìn)行二次提取,得到局部相關(guān)的特征。
bilstm側(cè)重序列性,結(jié)合了句子的上下文信息,而cnn卷積側(cè)重句子的局部特征,可以得到局部相關(guān)性,兩者結(jié)合使特征提取更加完備。
步驟1.1.4:將過(guò)濾結(jié)果進(jìn)行池化操作,分別得到第一句子全局語(yǔ)義向量和第二句子全局語(yǔ)義向量。
由于基于神經(jīng)網(wǎng)絡(luò)的特征提取能夠很好的從全局和局部上下文對(duì)句子語(yǔ)義特征進(jìn)行提取,而傳統(tǒng)特征工程可以很好的得到句子組成單詞的語(yǔ)義。因此,下面我們將利用特征工程對(duì)句子進(jìn)行特征提取,對(duì)基于深度學(xué)習(xí)的特征提取方法進(jìn)行語(yǔ)義補(bǔ)充。
步驟1.2:通過(guò)特征工程分別對(duì)第一句子的單詞、第二句子的單詞進(jìn)行特征提取,得到第一句子局部語(yǔ)義向量和第二句子局部語(yǔ)義向量,具體過(guò)程如下:
步驟1.2.1:將第一句子每個(gè)單詞與第二句子每個(gè)單詞分別進(jìn)行相似度計(jì)算,得到相似度矩陣,可以采用lsa法和/或外部資源法計(jì)算得到;
所述lsa(latentsemanticanalysis)法,包括以下過(guò)程:
1)構(gòu)建句子單詞的共生矩陣(co-occurence,該矩陣可以表示單詞的共現(xiàn)信息),根據(jù)矩陣窗口大小在語(yǔ)料庫(kù)中遍歷對(duì)應(yīng)單詞的共現(xiàn)次數(shù)(例如:當(dāng)窗口大小為2時(shí),即在語(yǔ)料庫(kù)中遍歷查找兩個(gè)詞共同出現(xiàn)的次數(shù)),并將共現(xiàn)次數(shù)轉(zhuǎn)換成相應(yīng)的log形式放到矩陣的相應(yīng)位置(例如:相似度矩陣為a,計(jì)算單詞i和單詞j的共現(xiàn)次數(shù),并轉(zhuǎn)化成相應(yīng)log形式后的值為a,那么矩陣中的元素aij=a),得到句子單詞的新矩陣;所述句子為第一句子或第二句子;
2)對(duì)句子單詞的新矩陣進(jìn)行svd奇異值分解并降維,句子中的每個(gè)單詞用300維向量表示,向量的每一維表示一個(gè)特征值,分別取第一句子、第二句子的前p個(gè)特征值,p=300,此時(shí)第一句子s=[sv1,sv2,…,svm],第二句子t=[tv1,tv2,…,tvn];
3)根據(jù)特征值計(jì)算第一句子單詞與第二句子單詞的cosine相似度,公式為:
其中,cosine(si,tj)表示第一句子任一單詞si與第二句子任一單詞tj的余弦相似度,svi表示第一句子300個(gè)特征值中任一特征對(duì)應(yīng)的單詞si,t表示單詞si特征表示的轉(zhuǎn)置,tvj表示第二句子300個(gè)特征值中任一特征對(duì)應(yīng)的單詞;
4)根據(jù)第一句子單詞與第二句子單詞的相似度,構(gòu)建相似度矩陣。相似度矩陣中每個(gè)元素都表示對(duì)應(yīng)位置的兩個(gè)單詞間的相似度,如:用a表示相似度矩陣,那么第一句子第i個(gè)單詞與第二句子第j個(gè)單詞的相似度為矩陣a中對(duì)應(yīng)元素aij的值,可以方便后續(xù)的查詢。
所述外部資源法,主要基于knowleged的方法,使用wordnet::similarity包計(jì)算單詞間的相似度,包括:leacock&chodorow相似度和/或thewu&palmer相似度、lesk相似度、theresnik相似度、thelin相似度、thejiang&conrath相似度;
1)leacock&chodorow相似度simlch,計(jì)算公式為:
其中,length表示兩個(gè)單詞對(duì)應(yīng)的兩個(gè)概念間使用node-counting得到的最近路徑,d表示在wordnet庫(kù)中自帶的分類的最大深度(wordnet對(duì)所有的英文單詞都進(jìn)行了分類,并且形成了一棵語(yǔ)義樹(shù))。
2)thewu&palmer相似度simwp,公式為:
其中,depth表示兩個(gè)單詞對(duì)應(yīng)概念在wordnet詞典中的深度,lcs表示兩個(gè)單詞對(duì)應(yīng)概念的最不常見(jiàn)子集(兩個(gè)概念詞最近的公共父結(jié)點(diǎn)對(duì)應(yīng)的概念詞),
3)lesk相似度定義為兩個(gè)單詞對(duì)應(yīng)概念的“overlap”的函數(shù),它顯示出了wordnet中兩個(gè)概念相互重疊的gloss以及以及他們相近的關(guān)系。
4)theresnik相似度simres,公式為:
simres=ic(lcs)
ic(c)=-logp(c)
其中,ic表示信息內(nèi)容函數(shù),lcs表示兩個(gè)單詞對(duì)應(yīng)概念的最不常見(jiàn)子集,ic(c)表示任意單詞c的信息內(nèi)容,p(c)表示在大型語(yǔ)料庫(kù)中遇到概念c的實(shí)例的概率。
5)thelin相似度simlin,公式為:
ic(c)=-logp(c)
其中,ic表示信息內(nèi)容函數(shù),lcs表示兩個(gè)單詞對(duì)應(yīng)概念的最不常見(jiàn)子集,ic(c)表示任意單詞c的信息內(nèi)容,p(c)表示在大型語(yǔ)料庫(kù)中遇到概念c的實(shí)例的概率,concept1表示第一句子任一單詞si對(duì)應(yīng)的概念,concept2表示第二句子任一單詞tj對(duì)應(yīng)的概念;
6)thejiang&conrath相似度simjnc:
ic(c)=-logp(c)
其中,ic表示信息內(nèi)容函數(shù),concept1表示第一句子任一單詞si對(duì)應(yīng)的概念,concept2表示單詞tj對(duì)應(yīng)的概念;lcs表示兩個(gè)單詞對(duì)應(yīng)概念的最不常見(jiàn)子集,p(c)表示在大型語(yǔ)料庫(kù)中遇到概念c的實(shí)例的概率。
步驟1.2.2:基于相似度矩陣計(jì)算第一句子每個(gè)單詞與第二句子每個(gè)單詞的對(duì)齊參數(shù),具體為:對(duì)于句子中的每個(gè)單詞,在相似度矩陣中尋找它與另一個(gè)句子中所有單詞的相似度,最大的那個(gè)相似度就記作這個(gè)單詞的對(duì)齊參數(shù),所述句子為第一句子或第二句子。
步驟1.2.3:利用對(duì)齊參數(shù)與單詞的特征參數(shù)來(lái)計(jì)算第一句子和第二句子的對(duì)齊特征,公式為:
fs1=∑ialigni*feai/∑ifeai
ft1=∑jalignj*feaj/∑jfeaj
其中,fs1表示第一句子的對(duì)齊特征,∑i表示對(duì)含有參數(shù)i的項(xiàng)進(jìn)行求和,aligni表示第一句子中單詞i的對(duì)齊參數(shù),feai表示第一句子任一單詞si本的特征;ft1表示第二句子的對(duì)齊特征,∑j表示對(duì)含有參數(shù)j的項(xiàng)進(jìn)行求和,alignj表示第二句子中單詞j的對(duì)齊分?jǐn)?shù),feaj表示第二句子任一單詞tj的特征;
所述單詞的特征參數(shù)有兩種計(jì)算方法:
1)計(jì)算句子中單詞的匹配值。對(duì)于句子中的單詞,計(jì)算另一個(gè)句子中的單詞與它的匹配值,這個(gè)匹配值表示在一個(gè)句子中的單詞相對(duì)于另一個(gè)句子的覆蓋程度,公式為:
其中,
第一句子任一單詞si和第二句子任一單詞tj的相似度計(jì)算公式為:
其中,si表示第一句子任一單詞,tj表示第二句子任一單詞,t表示單詞si特征表示的轉(zhuǎn)置。
2)計(jì)算句子中單詞的tfidf值。tf-idf是一種統(tǒng)計(jì)方法,用以評(píng)估一個(gè)單詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度。計(jì)算公式為:
tfidfis=tfi,s×idfi,s
其中,tfidfis表示第一句子單詞的tfidf值,tfi,s表示第一句子任一單詞si在句子中的詞頻,idfi,s表示第一句子任一單詞si在句子中的逆向文件頻率,ni,s表示第一句子任一單詞si在句子中出現(xiàn)的次數(shù),∑knk,s表示第一句子中所有單詞出現(xiàn)的次數(shù)之和,|d|表示總的句子數(shù),|{j:ti∈dj|表示包含單詞的句子數(shù)目;
參考上述過(guò)程,可以計(jì)算出第二句子t中單詞的tfidf值。
通過(guò)計(jì)算句子中單詞的匹配值和tfidf值,就得到2個(gè)單詞的特征參數(shù)。
步驟1.2.4:利用第一句子中沒(méi)有對(duì)齊的單詞和第二句子中沒(méi)有對(duì)齊的單詞,分別計(jì)算第一句子的不對(duì)齊特征和第二句子的不對(duì)齊特征,公式為:
其中,fs2表示第一句子的不對(duì)齊特征,unaligni表示將第一句子中沒(méi)有對(duì)齊的單詞,feai表示第一句子任一單詞si的特征,∑i表示對(duì)含有參數(shù)i的項(xiàng)進(jìn)行求和;ft2表示第二句子的不對(duì)齊特征,unalignj表示將第二句子中沒(méi)有對(duì)齊的單詞,feaj表示第二句子任一單詞tj的特征,∑j表示對(duì)含有參數(shù)j的項(xiàng)進(jìn)行求和;
步驟1.2.5:將第一句子的對(duì)齊特征和不對(duì)齊特征進(jìn)行拼接,得到第一句子局部語(yǔ)義向量;將第二句子的對(duì)齊特征和不對(duì)齊特征進(jìn)行拼接,得到第二句子的局部語(yǔ)義向量,具體地:
fs=fs1+fs2
ft=ft1+ft2
其中,fs表示第一句子局部語(yǔ)義向量,ft表示第二句子局部語(yǔ)義向量。
對(duì)于句子的對(duì)齊特征(參考步驟1.2.3公式),我們有兩類計(jì)算對(duì)齊參數(shù)的方法,分別是lsa法和外部資源法。在lsa法中,使用3種不同的窗口大小(窗口大小分別為1、2、3),可以得到3個(gè)對(duì)齊參數(shù);在外部資源法中,有6種計(jì)算方法,可以得到6個(gè)對(duì)齊參數(shù),這樣一共得到9個(gè)對(duì)齊參數(shù)。而對(duì)于單詞的特征參數(shù),我們采用重要程度(tf-idf值)和匹配程度
對(duì)于句子的不對(duì)齊特征(參考步驟1.2.4公式),我們分別用重要程度(tf-idf值)和匹配程度
將第一句子的18個(gè)對(duì)齊特征和2個(gè)不對(duì)齊特征進(jìn)行拼接,可以得到第一句子的局部語(yǔ)義向量,將第二句子的18個(gè)對(duì)齊特征和2個(gè)不對(duì)齊特征進(jìn)行拼接,可以得到第二句子的局部語(yǔ)義向量。
基于深度學(xué)習(xí)的特征提取和基于特征工程的特征提取完成后,下一步將兩個(gè)特征表示結(jié)合起來(lái),共同作為句子的向量表示。這樣得到的句子特征就更加完整:既有考慮到全局層面上的語(yǔ)義信息,又有精確到單詞層面上的語(yǔ)義信息。
步驟2:將第一句子全局語(yǔ)義向量與第一句子局部語(yǔ)義向量進(jìn)行拼接,得到第一句子的一維特征向量;將第二句子全局語(yǔ)義向量與第二句子局部語(yǔ)義向量進(jìn)行拼接,得到第二句子的一維特征向量,具體地:
s=hs+fs
t=ht+ft
其中,s表示第一句子的一維特征向量,t表示第二句子的一維特征向量,hs表示第一句子全局語(yǔ)義向量,ht表示第二句子全局語(yǔ)義向量。
步驟3:計(jì)算第一句子的一維特征向量與第二句子的一維特征向量之間的向量距離,根據(jù)向量距離得到第一句子與第二句子之間的相似度值,包括以下過(guò)程:
步驟3.1:計(jì)算第一句子的一維特征向量與第二句子的一維特征向量的cosine相似度,公式為:
其中,cos(s,t)表示第一句子的一維特征向量與第二句子的一維特征向量的余弦相似度,stt表示特征向量的轉(zhuǎn)置;
步驟3.2:計(jì)算第一句子的一維特征向量與第二句子的一維特征向量的歐氏距離sim(s,t),公式為:
步驟3.3:將得到的cosine相似度與歐氏距離取平均,得到最終的相似度分值;分值越接近1,說(shuō)明相似度越高,分值越接近0,說(shuō)明相似度越低。
本發(fā)明首先采用深度學(xué)習(xí)和特征工程兩種方法得到句子的向量表示,然后把兩種表示聯(lián)合起來(lái)作為最終句子的特征表示,最后在向量空間進(jìn)行相似度計(jì)算。將深度學(xué)習(xí)與特征工程方法相結(jié)合,缺點(diǎn)相互彌補(bǔ),使得特征提取更全面,更能表示句子的語(yǔ)義,計(jì)算得到的相似度更加準(zhǔn)確。
性能測(cè)試
本發(fā)明方法在microsoftresearchparaphrasecorpus(msrp)數(shù)據(jù)集上進(jìn)行了性能測(cè)試,所述msrp數(shù)據(jù)集是從新聞數(shù)據(jù)中構(gòu)建得來(lái)的(dolanetal.,2004),它包含5801個(gè)句子對(duì),其中4076個(gè)用來(lái)訓(xùn)練,1725個(gè)用來(lái)測(cè)試。每個(gè)句子對(duì)都有一個(gè)二值標(biāo)注,表明這兩個(gè)句子是否是釋義關(guān)系。
實(shí)驗(yàn)設(shè)置:在基于深度學(xué)習(xí)的特征提取中,batch_size=50,nb_epoch=20,embedding_dims=50,lstm_output_size=55,在bilstm中,nb_filter=150,在cnn中filter_length=3,hidden_dims=250。單詞嵌入初始化是通過(guò)在英語(yǔ)維基百科上運(yùn)行word2vec工具在包含大約3.75億字的aquaint語(yǔ)料庫(kù)進(jìn)行的。所得到的模型包含大約350萬(wàn)字的50維向量。word2vec模型中不存在的單詞的嵌入隨著從均勻分布u[-0.25,0.25]采樣的每個(gè)分量隨機(jī)初始化。在人工進(jìn)行特征提取時(shí),基于knowledge的方法,我們使用wordnet::similarity包來(lái)進(jìn)行計(jì)算。
實(shí)驗(yàn)結(jié)果與分析
我們使用準(zhǔn)確率和召回率來(lái)評(píng)估模型的性能,并與現(xiàn)有模型的性能進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果見(jiàn)表1:
表1本方法得到的模型與現(xiàn)有方法得到的模型的性能對(duì)比結(jié)果
上表中,“pmi-ir”和“l(fā)sa”是經(jīng)典的傳統(tǒng)特征工程方法,“madnanietal.,2012”是一種基于特征工程的綜合方法,“heetal.(2015)”是基于深度學(xué)習(xí)的模型。
實(shí)驗(yàn)結(jié)果表示,本發(fā)明方法得到的綜合模型比單一方法得到的模型性能效果更佳。相對(duì)于pmi-ir和lsa來(lái)說(shuō),綜合模型的準(zhǔn)確率提高約10%,召回率提高約3.5%,f1值提高約8%。相對(duì)于madnanietal.,2012模型,綜合模型在準(zhǔn)確率上提高了2.2%,召回率上提高了6.4%,f1值提高了4%。相對(duì)于heetal.(2015)(withoutpara.embeddings)模型而言,綜合模型準(zhǔn)確率提高了2.5%,召回率提高了2.1%,f1值提高了2.6%。
由此可見(jiàn),綜合兩類方法的模型在特征提取上更加全面和準(zhǔn)確。本發(fā)明的模型在句子特征提取時(shí)既考慮到了句子全局的語(yǔ)義特征,也考慮到了句子中單詞的相似度特征,特征提取更加全面,因此相似度計(jì)算也就更加準(zhǔn)確。
注意,上述內(nèi)容僅為本發(fā)明的較佳實(shí)施例。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其它等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。