根据simhash找出集合中相似文档的算法

原创 2013年12月03日 22:17:32

google的simhash算法可以用来衡量原始文档的相似程度。如何判断呢?很简单,就是求2个文档的simhash的距离(即二进制数字中不相同的位的个数)。

本文不想阐述simhash如何产生、如何计算距离,而是要解决从大量文档中找出相似的文档的问题(我们认为距离为1或2时,两文档相似,为0即相等不考虑)。最笨的方法当然是两两比较了,但是当集合中文档数量很大时,两两比较将会很不现实。那该怎么办呢?我的同事ruan给出了一个算法(这个算法也许来自某本书,这里暂且不管)。

算法很简单,当距离小于3时,我们认为文档A和文档B相似,所以我们将所有simhash数值按位均分成3段,即:

A=A1  A2  A3,B=B1  B2  B3,。。。,

如果A和B相似,必然存在某一个段是相等的,也就是说A和B相似,要么A1=B1,要么A2=B2,要么A3=B3,否则A和B不相似。

所以我们按段分组,同一组内的数据再做两两比较,大大减少了比较次数,提高了效率。第一个段分组计算完后再按第二个段、第三个段分组做同样操作。

如果距离小于7时,认为是相似的,就将simhash分成7段,计算方法相同。

相关文章推荐

相似文档查找算法之 simHash

转自:介绍一个基于simhash作海量文章排重的库:simhashpy 摘要: 海量文章排重的具体实践方法,主要是介绍在工程当中如何使用。 基于simhash的海量文章排重的实...

相似文档查找算法之 simHash 简介及其 java 实现

https://my.oschina.net/leejun2005/blog/150086 传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法。产...

感知哈希算法——找出相似的图片

Google 图片搜索功能         在谷歌图片搜索中, 用户可以上传一张图片, 谷歌显示因特网中与此图片相同或者相似的图片.         比如我上传一张照片试试效果: 原理讲...

海量数据文本相似度解决方式SimHash+分词方法+基于内容推荐算法

之前找实习的时候被问到海量数据文本相似度怎么解决,当时很懵,在面试官的引导下说出了hash table+排序的方法(是的,我总能智障出新花样),当时想的是先做分词再做哈希,然后对标记哈希后的词(这时已...
  • sylar49
  • sylar49
  • 2017年07月19日 15:04
  • 294

文本分析--simhash算法进行文本相似度判断

simhash算法分析:文本相似度算法:1、TF-IDF:TF(词频),IDF(逆词频)利用tf-idf得到一个词语的权重,来计算一篇文章的关键词2、simhash:局部敏感hash局部敏感:A、B具...

相似数据检测算法(shingle,SimHash,Bloomfilter) 比较

相似数据检测算法 相似数据检测算法对给定的一对数据序列计算两者之间的相似度([0,1],1表示完全相同)或距离([0, ), 0表示完全相同),从而度量数据之间的相似程度。相似数据检测在信息...

[转]文档去重算法:SimHash和MinHash

simhash与重复信息识别来源:http://grunt1223.iteye.com/blog/964564在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种喜悦分...

simhash文本相似度

  • 2015年09月01日 18:46
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据simhash找出集合中相似文档的算法
举报原因:
原因补充:

(最多只允许输入30个字)