simhash和minhash实现理解

Posted 白云辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的网页去重

以上是关于simhash和minhash实现理解的主要内容,如果未能解决你的问题,请参考以下文章

文档去重算法:SimHash和MinHash

MinHash算法原理与应用(Java版)

MinHash算法原理与应用(Java版)

关于SimHash去重原理的理解(能力工场小马哥)

推荐随笔

minhash算法用于文本查重