simhash去重算法实践

自己实践simhash算法的几点经验:

1 数据已处理,正则表达式去除各种转义符号

2 将文本中的数字和字母等去除

3 分词后去除停顿词

步骤,

1 文本预处理

代码步骤

1 jieba分词    获取features

2 hash函数计算hash值

3 计算海明距离AxoB(两个二进制串中不同位的个数)

将第一篇features建立index

objs = [(str(0), Simhash(features))]index = SimhashIndex(objs, k=hamming_distance)   
其他篇
s1 = Simhash(features)relation_list = index_s.get_near_dups(s1)if len(relation_list) == 0:	index.add(str(actual_count), s1)其中actual_count只是index中s1的词典键

百度的去重算法

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

更详细可以查看:
http://blog.csdn.net/heiyeshuwu/article/details/44117473

             


你可能感兴趣的:(算法,simhash,算法,预处理)