海量文本Simhash去重,毫秒级去重判断 | 抽屉原理

一.背景

互联网上,一篇文章被抄袭来抄袭去,转载来转载去。

被抄袭的文章一般不改,或者少量改动就发表了,所以判重并不是等于的关系,而是相似判断,这个判别的算法就是simhash。

二.simhash计算

给定一篇文章内容,利用simhash算法可以计算出一个哈希值(64位整形)。

判别两篇文章是相似的方法,就是两个simhash值的距离<=3,这里距离计算采用汉明距离,也就是2个simhash做一下异或运算,数一下比特位=1的有N位,那么距离就是N。

现在问题就是,如何计算文本的simhash?(局部敏感hash)

 

三.实现原理:

第一步:分词+权重

     首先需要将文章作分词,得到若干个(词组,权重)。

     分词我们知道很多库都可以实现,最常见的就是结巴分词。权重是怎么得来的呢?

     权重一般用TF/IDF算法,TF表示词组在本文章内的频次比例,出现越多则对这篇文章来说越重要,文章分词后TF可以立马计算出来。

     IDF是词组在所有文章中的出现比例,出现越多说明词组对文章的区分度越低越不重要,但是IDF因为需要基于所有文章统计,所以一般是离线去批量计算出一个IDF字典。

     结巴分词支持加载IDF词

你可能感兴趣的:(算法)