相似度計算用於衡量物件之間的相似程度,在資料探勘、自然語言處理中是乙個基礎性計算。其中的關鍵技術主要是兩個部分,物件的特徵表示,特徵集合之間的相似關係。在資訊檢索、網頁判重、推薦系統等,都涉及到物件之間或者物件和物件集合的相似性的計算。而針對不同的應用場景,受限於資料規模、時空開銷等的限制,相似度計算方法的選擇又會有所區別和不同。下面章節會針對不同特點的應用,進行一些常用的相似度計算方法進行介紹。
向量空間模型(vector space model)是應用最廣泛的乙個基礎相似度計算模型,在該模型中,每個物件對映為乙個特徵向量:
作為乙個應用廣泛的模型,向量空間模型在現有的很多應用中仍然起著至關重要的作用,也是很多擴充套件方法的基礎。
基於hash的相似度計算方法,是一種基於概率的高維度資料的維度削減的方法,主要用於大規模資料的壓縮與實時或者快速的計算場景下,基於hash方法的相似度計算經常用於高維度大資料量的情況下,將利用原始資訊不可儲存與計算的問題轉化為對映空間的可儲存計算問題,在海量文字重複性判斷方面,近似文字查詢方面有比較多的應用,google的網頁去重[1],google news的協同過濾[2,3]等都是採用hash方法進行近似相似度的計算,比較常見的應用場景near-duplicate detection、image similarity identification、nearest neighbor search,常用的一些方法包括i-match,shingling、locality-sensitive hashing族等方法,下面針對幾種常見的hash方法進行介紹。
minhash方法是locality-sensitive hashing[4,5]演算法族裡的乙個常用方法,基本的思想是,對於每乙個物件的itemlist,將輸入的item進行hash,這樣相似的item具有很高的相似度被對映到相同的buckets裡面,這樣盡量保證了hash之後兩個物件之間的相似程度和原來是高相似的,而buckets的數量是遠遠小於輸入的item的,因此又達到降低複雜度的目的。
minhash方法用jaccard進行相似度的計算方法,則對於兩個集合
當兩個集合越相似,則該值越接近1,否則越接近0。用minhash方法,將乙個集合對映到[0-r-1]之間的值,以相同的概率隨機的抽取乙個[0-r-1[的乙個排列,依次排列查詢第一次出現1的行。
設隨機排列為43201(edcab),對於c1列,第一次出現1的行是r4,所以h(c1) = 3,同理有h(c2)=2, h(c3)=4, h(c4)=3。
通過多次抽取隨機排列得到n個minhash函式h1,h2,…,hn,依此對每一列都計算n個minhash值。對於兩個集合,看看n個值裡面對應相等的比例,即可估計出兩集合的jaccard相似度。可以把每個集合的n個minhash值列為一列,得到乙個n行c列的簽名矩陣。因為n可遠小於r,這樣在壓縮了資料規模的同時,並且仍能近似計算出相似度。
simhash方法是在大文字重複識別常用的乙個方法,該方法主要是通過將物件的原始特徵集合對映為乙個固定長度的簽名,將物件之間的相似度的度量轉化為簽名的漢明距離,通過這樣的方式,極大限度地進行了降低了計算和儲存的消耗。
該方法通過對輸入特徵集合的計算步驟可以描述如下:
NLP計算文件相似度之LSH
coding utf 8 使用lsh來處理 字首樹 from sklearn.feature extraction.text import tfidfvectorizer import jieba.posseg as pseg from sklearn.neighbors import lshfor...
相似度計算方法
pearson 相關係數是用協方差除以兩個變數的標準差得到的,雖然協方差能反映兩個隨機變數的相關程度 協方差大於0的時候表示兩者正相關,小於0的時候表示兩者負相關 但其數值上受量綱的影響很大,不能簡單地從協方差的數值大小給出變數相關程度的判斷。為了消除這種量綱的影響,於是就有了相關係數的概念。由上圖...
相似度計算方法
1.余弦相似度 在平面系 a向量與b向量的夾角越小,說明相似度越大,余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 在三維也是乙個道理 x,y,z 確定的一點與點 a,b,c 一點的夾角 高中學過向量a與向量b的乘積定義為 所以兩者的夾角為 cos a b a b 分...