文本内容相似度算法 simhash

  |   0 评论   |   0 浏览

背景

如何比较两篇文本的相似度,避免信息抄来抄去。Google提出了simhash算法。

理想当中的hash函数,需要对几乎相同的输入内容,产生相同或者相近的hash值,换言之,hash值的相似程度要能直接反映输入内容的相似程度,故md5等传统hash方法也无法满足我们的需求。

原理

simhash是一种能计算文档相似度的hash算法。通过simhash能将一篇文章映射成64bit,再比较两篇文章的64bit的海明距离,就能知道文章的相似程序。若两篇文章的海明距离<=3,可认为这两篇文章很相近,可认为它们是重复的文章。

simhash作为locality sensitive hash(局部敏感哈希)的一种,其主要思想是降维,将高维的特征向量映射成低维的特征向量(把文档降维到hash数字),通过两个向量的海明距离来确定文章是否重复或者高度近似。

其他算法

  • 百度的去重算法(直接找出此文章的最长的n句话,做一遍hash签名。n一般取3。 工程实现巨简单,据说准确率和召回率都能到达80%以上。)
  • shingle算法
  • Minhash and LSH

参考

  1. 文本内容相似度计算方法:simhash
  2. MinHash和SimHash