文本語義相似度衡量方法——詞移距離(Word Mover's Distance,WMD)

什麼是詞移距離

詞移距離(Word Mover’s Distance,WMD)顧名思義就是詞彙移動的距離,它的提出本質上是用於衡量任意兩個文本之間的語義相似度所提出的。當然從名字就可以瞭解到,它本身其實就是一個距離,本質上與歐氏距離和曼哈頓距離沒有區別。

同時,也符合距離越大相似度越低,距離越小相似度越高的原則。

如何解釋詞彙移動的距離呢

兩個文檔A和B,A中的詞彙從歐式空間上分別移動到B中詞彙的位置的距離總和就可以認爲是一種詞移距離。
在這裏插入圖片描述
上圖就可以理解爲詞移距離的示意圖。
doc1中的word1移動到doc2中所有詞彙的歐式距離之和,將所有doc1中的詞彙均進行計算,就可以得到對應的詞移距離。
WMD(doc1,doc2)=i,j=1nTijc(i,j)WMD(doc1,doc2)=\sum_{i,j=1}^nT_{ij}c(i,j)
其中的ijij代表了doc1與doc2中不同的詞彙,TijT_{ij}代表了不同詞彙之間的一個權重。

爲什麼採用詞移距離衡量文本相似度

由於SimHash,編輯距離、最長公共子序列,最長公共子串,等等。包括用向量表示後的文本進行歐氏距離和餘弦相似度的計算等均是沒有直接針對詞進行計算,並且反應的是文本本身的語義相似度。
詞移距離的出現無疑是填補了這個空缺,它從本質上要優於字面相似度的方法,也比利用詞袋模型表示後的文本相似度有較好的語義度量。

怎麼算詞移距離

計算兩篇文檔的詞移距離,需要將兩篇文檔的所有詞向量準備出來。
其中利用doc1doc1doc2doc2代表兩篇文檔,word1iword_{1i}word2jword_{2j}分別代表文檔1和文檔2中的詞彙。

計算的方法如下:
WMD(doc1,doc2)=i,j=0n,mTij×euclidean_distance(word1i,word2j)WMD(doc1,doc2)=\sum_{i,j=0}^{n,m}T_{ij}\times euclidean\_distance(word_{1i},word_{2j})

其中TijT_{ij}代表word1iword_{1i}word2jword_{2j}計算的距離權重,其中euclidean_distance(word1i,word2j)euclidean\_distance(word_{1i},word_{2j})代表計算兩個詞彙的歐式距離,爲什麼採用歐氏距離,這是由於歐氏距離本身就可以代表空間中的移動距離。

其中每兩個詞彙的權重可以由word1iword_{1i}word2jword_{2j}的語義相似度進行計算,即計算二者的餘弦相似度。同樣可以用移向的詞彙的TF-IDF值來計算,或者其他方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章