simhash原理及使用
1. 简介 simhash是一种 局部敏感hash 。那什么叫局部敏感呢,假定两个字符串具有一定的相似性,在hash之后,仍然能保持这种相似性,就称之为局部敏感hash。普通的hash是不具有这种属性的。simhash被Google用来在海量文本中去重。 2. 原理 算法过程大概如下: 将Doc进行关键词抽取(其中包括分词和计算权重),抽取出n个(关键词,权重)对, 即图中的多个 (feature, weight) 。 记为 feature_weight_pairs = [fw1, fw2 … fwn] ,其中 fwn = (feature_n,weight_n) 。 对每个 feature_weight_pairs 中的 feature 进行hash。 图中假设hash生成的位数bits_count = 6。 然后对 hash_weight_pairs 进行位的纵向累加,如果该位是1,则 +weight ,如果是0,则 -weight ,最后生成bits_count个数字,如图所示是 [13, 108, -22, -5, -32, 55] , 这里产生的值和hash函数所用的算法相关。 [13,108,-22,-5,-32,55] -> 110001 这个就很简单啦,正1负0。 3. 距离计算 通过simhash,我们要度量两个文档的相似度就可以通过