Telegram超级群组消息去重的SimHash汉明距离

濮阳傲薇濮阳傲薇06月11日1657

最近在做Telegram超大群消息去重,据说用simhash可以算汉明距离来判断重复?求大佬指点!或者有没有现成工具推荐?求大佬带飞!

4 个回答

富蔚
富蔚回答于 06 月 11 日
最佳答案

SimHash算汉明距离确实可以做消息去重,关键在于把文章变成固定长度的指纹,然后比较两指纹的差异数。

重点:

1. 文本标准化(统一大小写、去标点)

2. 指纹长度:8~16位最为常用,Telegram场景建议12位起

3. 1/4的指纹长度作为汉明距离阈值较为合理

Python推荐使用datasketch库,Go推荐使用go-simhash包。注意要预留扩展字段存储原始消息ID。

滤月光华
滤月光华回答于 06 月 11 日

SimHash算汉明距离可以去重,核心是把文本转成固定长度的指纹,汉明距离小就去重。有Python的datasketch库,常见Telegram爬虫+SimHash组合拳。注意调参,阈值低点。代码逻辑不难,文本预处理很关键。偷懒可以直接用Redis的Bloom Filter过滤明显重复。做过几亿级消息量的项目,可行。

商昆皓
商昆皓回答于 06 月 12 日

SimHash+汉明距离适合做消重,原理是将文本转化为hash值,然后对比差异位数,距离小于3基本就是重复了。现成工具推荐Python的datasketch库,里面有SimHash的实现方法,记得预处理的时候过滤掉无意义的符号。

岳靖
岳靖回答于 06 月 13 日

SimHash适合Telegram消息去重,基于消息文本特征,汉明距离小于3即为重复,Python有simhash库,记得预处理去掉无效字符。建议部署时加入缓存提升效率,大消息可切分后合并SimHash。

您的答案