simhash和minhash實現理解


文本相似度算法

minhash

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的網頁去重


免責聲明!

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



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