WMD詞移距離-計算文檔相似度


WMD


Paper: From Word Embeddings To Document Distances

2015年,提出詞移距離WMD(Word Mover's Distance):詞移距離是在詞向量的基礎上發展而來的用來衡量文檔相似性的度量, 是一種計算句子之間距離的方法,距離越小,相似度越高。

1. 為什么提出?

計算句子/文檔相似度的一些方法有:

  • 無監督的句子相似度計算——Jaccard相似系數:

    Jaccard相似系數用來衡量兩個集合之間的相似性,被定義為兩個集合交集的元素個數除以並集的元素個數。

    \[SIM(s_1,s_2) = \frac{\text{intersection}(words1, words2)}{\text{union}(words1, words2)} \]

    Jaccard相似系數值越大,句子相似度越高。

    Jaccard距離用來度量兩個集合之間的差異性,它是Jaccard的相似系數的補集,被定義為1減去Jaccard相似系數。

    \[d(s_1,s_2)=1-SIM(s_1,s_2) = 1-\frac{\text{intersection}(words1, words2)}{\text{union}(words1, words2)} \]

    Jaccard距離越大,句子相似度越小。

  • 使用向量空間模型,對句子進行向量表征,再計算兩兩之間的歐式距離、余弦相似度等度量指標。

    基於Word2Vec,使用預先訓練好的word-embdding向量,對於一個句子,將詞向量的每一位進行加和或求平均。

    對句子建模,方法包括skip-gram,cbow的doc2vector建模方法,基於autoencoder的建模方法,基於skip-thought的句子建模方法等。基於sentence-vector的方法能夠更好的保留句子的語義信息,能夠在一定程度上彌補詞袋缺點。

首先解決文檔表示,可以通過:

  • 詞袋(BOW)/TF-IDF:不考慮文法及詞的順序,只考慮詞頻,將文本進行向量化表示。存在的問題:如果兩個句子沒有相同詞語,根據向量表示會判定為完全不相關,但兩者可能具有相同的語義。
  • LSI和LDA:將相似詞歸入主題,文檔表示為主題的概率分布。相比BOW更連貫,但不能改善BOW的性能效果。比較兩個文檔的相似度,可以比較兩個文檔主題分布的差異。
  • Word2Vec:基於word2vec把文本中的所有詞映射到一個詞向量空間。在一定程度上解決了語義問題,使用CBOW/Skip-Gram考慮上下文信息,詞向量可以反映詞與詞之間的語義差別。再將文檔/句子表征為所有詞向量的平均,通過計算兩兩之間的歐式距離、余弦相似度等衡量文檔相似度。

Word2Vec考慮詞間的距離,提出的WMD是考慮文檔間的距離。用一個距離反映文檔和文檔間的相似度,一個想法:將文檔建模成2個文檔中詞的語義距離的一個組合,比如對兩個文檔中的任意兩個詞所對應的詞向量求歐式距離然后再加權求和。

2. 如何解決問題?

WMD的求解是EMD問題的一個特例 。

2.1 定義問題

2.1.1 歸一化詞頻

歸一化詞頻(normalized bag-of-words,nBOW),如果一個詞\(i\)在文本中出現的次數為\(c_i\),它的歸一化詞頻為:

\[d_i=\frac{c_i}{\sum_{j=1}^{n}c_j} \]

單詞的重要程度與詞的出現頻率相關(並且歸一化)。

2.1.2 詞移動代價

詞移動代價(Word travel cost),由於WMD中詞語是經過word2vec表示的,而word2vec表示后的詞可以直接計算歐式距離。單詞\(i\)和單詞\(j\)的語義距離\(c(i,j)\)為歐式距離:

\[c(i,j)=||x_i-x_j||_2=\sqrt{(x_i^1-x_j^1)^2+\cdots+(x_i^d-x_j^d)^2)} \]

2.1.3 文檔距離

文檔距離(Document distance)的直觀表示:\(\sum_{i,j}T_{ij}\cdot c(i,j)\)

轉移矩陣\(T_{ij}\):文檔\(d\)中的單詞\(i\)到另一文檔\(d'\)中的單詞\(j\)的權重。

2.1.4 約束條件

結合EMD這個經典的運輸問題(Transportation problem),目標是:最小化兩個文檔的總距離(移動代價);添加約束條件調整權重:讓文檔\(d\)中的每個單詞都以不同的權重匹配到到另一文檔\(d'\)中所有單詞。

\[\min_{T\ge0}\sum_{i,j=1}^{n}T_{ij}c(i,j)\\ s.t: \sum_{j=1}^{n}T_{ij}=d_i \quad \forall i\in{1,\dots,n}\\ \sum_{i=1}^{n}T_{ij}=d_j' \quad \forall j\in{1,\dots,n}\\ \]

2.2 快速計算

解決WMD優化問題的最佳平均時間復雜度為\(O(p^3 \log p)\),其中\(p\)表示文檔中唯一詞的數量。如果數據集有大量的文檔或者有大量的唯一詞,解決WMD優化問題就很困難。

計算兩個文檔之間的WMD就要求解一個大型的線性規划問題,如果要用它來做K-NN( k個最相似文檔)就比較耗時了,因此提出了了兩個優化方案來減小計算量。

論文中提出了兩種設置Lower bounds 的方法來過濾文檔,通過犧牲部分精准度來減少時間復雜度. 兩種方法分別為 Word Centroid Distance( WCD) , Relaxed Word Moving Distance(RWMD)。

2.2.1 WCD

WCD(Word centroid distance),根據三角不等式\(|a|+|b|\ge |a\pm b|\ge ||a|-|b||\),轉化為計算WMD的下限——centroid distance:\(\parallel Xd-Xd'\parallel_2\),如下:

兩個文檔之間的“centroid”距離將會永遠比WMD距離要小。

其中\(X\in R^{d\times p}\)是詞向量組成的矩陣,算法時間復雜度為\(O(dp)\)

2.2.2 RWMD

盡管WCD的時間復雜度很低,但是邊界過於寬松,無法很好的近似WMD。因此,這里使用更加tight的下界RWMD(Relaxed word moving distance )。RWMD需要計算兩次,基於WMD目標函數,分別去掉兩個約束條件中的一個,然后求解最小值,使用兩個最小值中的最大值作為WMD的近似值。

去掉了一個條件之后,依然符合永遠小於原WMD的性質,而以下方程的最優解為,將所有的分配權重都分配到最相近的Euclidean distance的兩個單詞中。

比如去掉第二個約束條件,得到:

這個問題的最優解為,對於文檔\(d\)中的一個詞,找到另一個文檔\(d'\)中與之最相近的一個詞,全部轉移到這個詞,即:

求得WMD最小值\(l_1(d,d')\)

同理去掉第一個約束條件,可得:

\[\min_{T\ge0}\sum_{i,j=1}^{n}T_{ij}c(i,j)\\ s.t: \sum_{i=1}^{n}T_{ij}=d_j' \quad \forall j\in{1,\dots,n}\\ \]

這個問題的最優解為,對於文檔\(d'\)中的一個詞,找到另一個文檔\(d\)中與之最相近的一個詞,全部接收這個詞,即:

\[T_{ij}^*=\begin{cases} d_j'\quad \text{if} \;i=\arg\min_i c(i,j)\\ 0 \quad \text{otherwise.} \end{cases} \]

求得WMD最小值\(l_2(d,d')\)

最后求\(l_r(d,d')=\max(l_1(d,d'),\;l_2(d,d'))\)結果即為RWMD,時間復雜度為\(O(p^2)\)

2.2.3 Prefetch and prune 加速k-NN

結合以上兩個辦法來一起進行剪枝處理。為了找到查詢文檔\(q\)的k個最近鄰,我們可以使用兩個下限來大大減少我們需要進行的WMD距離計算量。

K-NN的流程如下:

  1. 用時間復雜度最小的WCD計算本文檔\(q\)與所有文檔之間的距離;
  2. 並將所有文檔按照距離從小到大排序;
  3. 然后只計算前k個文檔的WMD距離;
  4. 遍歷剩下的文檔,用RWMD計算本文檔\(q\)與剩下文檔之間的距離,如果距離大於前k個最近文檔的WMD距離的最大值,直接剪枝這個文檔;如果這個文檔的距離小於前k個WMD距離的任何一個,我們就計算這個文檔的WMD,並更新k個近鄰的文檔。

通過這個辦法,我們可以剪枝掉95%以上的數據集,非常有效。

3. 優點?

  • 效果出色:充分利用了word2vec的領域遷移能力
  • 無監督:不依賴標注數據,沒有冷啟動問題
  • 模型簡單:僅需要詞向量的結果作為輸入,沒有任何超參
  • 可解釋性:將問題轉化成線性規划,有全局最優解
  • 靈活性:可以人為干預詞的重要性
  • 檢索准確率高

4. 缺點?改進方向?

4.1 缺點

缺點:

  • 沒有保留語序信息,WMD認為“屢戰屢敗”和“屢敗屢戰”在語義上完全一致。
  • 不能很好地處理OOV問題:由於詞向量是離線訓練的,應用於在線業務時會遇到OOV問題,用戶query分出來的詞,有可能找不到對應的詞向量。
  • 處理否定詞能力差:在訓練好的詞向量中,通常語義相反的詞的詞向量是比較相近的,這會導致語義相反的兩個句子WMD距離很近。 (很多相似度計算方法的缺點 )

4.2 改進算法S-WMD

WMD距離,學習這個權重矩陣用於聚類(K-NN,那些文檔比較相近)的效果很好,但是用來分類的效果很差。

因為一些文章雖然近義詞很多, 但是表達的不是一個語義和主題. 比如: I love playing football 和 I like playing piano。雖然看起來句式差不多,可能會歸為同類,但是如果打標簽時如果是”運動”和”藝術”兩類,顯然就不能用WMD直接分類了。因為,**WMD沒有加入 football和”運動” 是強相關的信息。

論文“Supervised Word Mover’s Distance”提出的WMD算法改進:可訓練的加懲罰項的S-WMD

論文給出的解決方案就是在WMD距離中加入可以訓練類別權重的功能:

這里的\(d_i\)加入了類別權重\(w_i\)

單詞間距離也要進行調整(單詞間距離也因為類別不同需要調整距離),加入訓練參數矩陣A。

改進方向:

  • 可解釋性
  • 加懲罰項

5. WMD應用

WMD應用:

  • 作為特征輸入:一個無監督的語義相似度特征。
  • 計算文本間距離。

6. WMD代碼實現

WMD代碼實現的幾個要點:

  • 找最近的詞,
  • 優化:處理權重
  • 剪枝:topk個文檔的排序

目前開源的WMD實現有:

7. 參考

WMD tutorial:https://github.com/RaRe-Technologies/gensim/blob/c971411c09773488dbdd899754537c0d1a9fce50/docs/notebooks/WMD_tutorial.ipynb

Code:https://github.com/mkusner/wmd

https://zhuanlan.zhihu.com/p/84809907

https://blog.csdn.net/weixin_40547993/article/details/89475630

Supervised Word Mover’s Distance (可監督的詞移距離)-NIPS 2016論文精選#2

算法改進:Supervised Word Mover’s Distance


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM