文本相似度算法
minhash
1. 把文檔A分詞形成分詞向量L
2. 使用K個hash函數,然后每個hash將L里面的分詞分別進行hash,然后得到K個被hash過的集合
3. 分別得到K個集合中的最小hash,然后組成一個長度為K的hash集合
4. 最后用Jaccard index求出兩篇文檔的相似度
simhash
1. 把文檔A分詞形成分詞向量L,L中的每一個元素都包涵一個分詞C以及一個分詞的權重W
2. 對L中的每一個元素的分詞C進行hash,得到C1,然后組成一個新的向量L1
3. 初始化一個長度大於C1長度的向量V,所有元素初始化為0
4. 分別判斷L1中的每一個元素C1的第i位,如果C1i是1,那么Vi加上w,否則Vi減去w
5. 最后判斷V中的每一項,如果第i項大於0,那么第i項變成1,否則變成0
6. 兩篇文檔a,b分別得到aV,bV
6. 最后求出aV和bV的海明距離,一般距離不大於3的情況下說明兩篇文檔是相似的
中文文檔simhash值計算
simhash算法原理及實現
GoSimhash 是 中文 simhash 去重算法庫,Golang版本。
simhash算法的原理
simhash與Google的網頁去重
