當前位置:成語大全網 - 成語詞典 - 文本相似度計算(壹):距離方法

文本相似度計算(壹):距離方法

距離方法

1、文本的表示

1.1、VSM表示

1.2、詞向量表示

1.3、遷移方法

2、距離計算方法

2.1、歐氏距離 (L 2 範數)、曼哈頓距離 (L 1 範數)、 明氏距離

2.2、漢明距離

2.3、Jaccard相似系數、 Jaccard距離( 1-Jaccard相似系數)

2.4、余弦距離

2.5、皮爾森相關系數

2.5、編輯距離

場景舉例:

1)計算 Query 和文檔的相關度、2)問答系統中計算問題和答案的相似度、3)廣告系統中計算 Query 和廣告詞的匹配程度、4)推薦系統中 要給某個用戶推薦某件物品,計算這件物品和這個用戶興趣的相似度

更多地,判斷兩個query表達的意思是否相同也可以看作屬於文本相似度的範疇。

相似度壹定是指兩個東西(姑且分別用 P 和 Q 表示)的相似程度,而這兩個東西可以是任何形式的,例如文本、圖片、聲音等等。最終要計算相似度,那必須把這些東西抽象成數學形式,說白了 ,就是怎麽用數字把 這些 東西表示出來, 壹 般會表示成向量或者矩陣。那如果表示成了向量, 計算相似度就可以使用大家在數學課上學的知識了。

這裏希望可以比較清晰全面地介紹壹下文本相似度的計算方法,目前來說,大致分為距離、hash、深度學習三種方法。

這些所謂的距離其實都是壹些 固定 的公式而己,關鍵在於如何應用。實際應用中可以使用tf-idf、word2vec、LDA等方法實現相似度的距離計算。

很多相似度的第壹步其實都是文本的表示問題,即把文本用數字的形式表示出來,這壹步目前主要有 VSM(vector space model) ,和 詞向量表示 兩種方式。

這種方法其實靈活性較大,可以基於分詞,對於中文基於字符或n-grams的表示也有壹定效果。

1) tf-idf/bow表示 :在給定文檔集合C和詞典D的條件下,將某篇文檔通過詞袋模型表示成壹個個的詞,而後根據 TF-IDF 為每個詞計算出壹個實數值;

由於詞典D的大小為M,因此 將這篇文檔轉化成壹個M維向量 ,如果詞典中某個詞未出現在文檔中,則這個詞的在向量中對應的元素為0,若某個詞出現在文檔中,則這個詞在向量中 對應的元素值為這個詞的tf-idf值 。這樣,就把文檔表示成向量了,而這就是 向量空間模型(vector space model) 。從這裏也可看出:向量空間模型並沒有catch住詞(term)與詞(term)之間的關系,它假設各個term之間是相互獨立的。

而有了文檔向量,就可以計算文檔之間的相似度了。

這種表示方法與詞典大小相關,往往會使文本的表示比較稀疏且高維,可以通過PCA緩解這壹問題。

2) 主題模型表示 :實際上VSM可以作為壹種文本表示的思想:把對文本內容的處理簡化為向量空間中的向量運算,並且它以空間上的相似度表達語義的相似度。

在這個角度,使用LDA,LSA等主題模型同樣可以完成文本的VSM表示:將文本表示為topic的向量空間。

這種方法維度可自定義(topic數),且不稀疏,但是可能存在文本對之間距離相似度分布空間密集的情況導致效果不佳。

這種方法壹般直接將文本分詞後 將詞向量相加除以句子長度就可得到 。也可以使用如 smooth inverse frequency的加權方法 將詞向量加權:每個詞嵌入都由a/(a + p(w))進行加權,其中a的值經常被設置為0.01,而p(w)是詞語在語料中預計出現的頻率。

壹般來說word2vec的詞向量方法 強於glove方法 ,而對於word2vec,cbow方法強於skip-gram(具體原因並不復雜,感興趣可以從訓練方法角度思考壹下~)

更多地,上述文本表示方法其實會損失或無法捕捉到語義信息,通過bert、elmo等預訓練方法的表示更加靠譜,也可以用於無監督的文本相似度計算。

歐氏距離:

曼哈頓距離:

表示兩個(相同長度)字對應位不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字符串進行異或運算,並統計結果為1的個數,那麽這個數就是漢明距離。

(1)雅各相似系數:

兩個集合A和B的交集元素在A,B的並集中所占的比例,稱為兩個集合的傑卡德相似系數,用符號J(A,B)表示。 

傑卡德相似系數是衡量兩個集合的相似度壹種指標。

實際使用中,可以用去重與不去重兩種方式計算,更多地,可以轉換為交集的tf-idf值之和除以並集的tf-idf值之和

(2) 傑卡德距離

?與傑卡德相似系數相反的概念是傑卡德距離(Jaccard distance)。

傑卡德距離可用如下公式表示:

傑卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。

夾角余弦取值範圍為[-1,1]。夾角余弦越大表示兩個向量的夾角越小,夾角余弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角余弦取最大值1,當兩個向量的方向完全相反夾角余弦取最小值-1。文本的相似度壹般取絕對值。

皮爾森相關系數在推薦系統用的較多,它的公式如下 :

指兩個字符串,由壹個變成另壹個所需的最少的編輯次數,這個編 就包括替換、插入、刪除操作。

文本相似度的計算壹般使用VSM/cbow+cos距離/歐式距離,或jaccard距離

Dice 系數可以計算兩個字符串的相似度:Dice(s1,s2)=2*comm(s1,s2)/(leng(s1)+leng(s2))。

/weixin_43526820/article/details/89883640?spm=1001.2014.3001.5501