1. 程式人生 > >系統學習NLP(七)--詞語相似度

系統學習NLP(七)--詞語相似度

目的是為了計算詞語之間的各種語義關係。分為以下幾類:

基於語義字典的方法:

      這類方法,主要使用WordNet,MeSH這樣的線上語義字典來度量兩個義項之間的距離。基於WordNet中的概念是由概念間關係連線在一起的,每個概念都通過關係和其他概念相連,而整個WordNet則是由概念和關係組成的巨大的網路。最上面圖是WordNet中部分概念網路結構圖。

       下圖是以"car"和“bag”為主體的概念,得到is_a關係樹狀分類圖

 

還有基於路徑長度的,這是最簡單的,Sim(c1,c2) = -log len(c1,c2),上面3-2是對這個路徑相似度的改進,即方式假設邊是等距離的,但明顯不適合很多場景,因此3-2做了長度歸一化。這種改進效果不大。實際上,對這種評估方式的最好改進是LCS。

也就是Resnik相似度:-log P(LCS(c1,c2)),就是對詞語在樹圖中的概念概率化,利用資訊定義概念c的資訊量。這裡作者只考慮相同資訊部分

後來Lin改進了上面的方式,同時考慮排除不同資訊:2 * IC(lcs) / (IC(s1) + IC(s2))

類似的,Jiang-Conrath距離:1/(IC(s1) + IC(s2) - 2 * IC(lcs))

基於字典的相似度:

就是擴充套件的Lesk演算法,主要思想是基於字典中兩個概念或者義項的註釋包含相同的詞語,則他們就相似。實現的時候,定義重疊函式,計算兩個概念A,B的上下位,部件及其他關係的的概念的註釋之間的交集。

基於特徵向量

這個就很多了,有手動定義的特徵向量,有自動提取的特徵向量。

度量有:

曼哈頓距離,歐氏距離,餘弦距離,Jaccard距離(最小/最大距離),Dice距離,交叉熵距離(Jenson-Shannon 散度距離)
實際上,我想大多數應用現在都是基於向量算的,這裡記錄這些,只是做個基礎瞭解。先佔個坑,後面再更新這個方向所有主流的方式。