小编典典

Python摘要/哈希用于字符串相似度

algorithm

我正在寻找一种算法,该算法可以从较长的字符串生成较短的(fx 16个字符(不重要)哈希码/摘要)。

主要要求是几乎相同的字符串应产生相同的摘要。

Fx 2几乎相同的邮件:

嗨,马丁。这是一些…垃圾邮件给您。关于XYZ。=> AAAA AAAA AAAA AAAA

嗨,波 这是一些…垃圾邮件给您。关于EFG。=> AAAA AAAA AAAA AAAA

返回相同的数字(或几乎相同),其中作为不同的邮件:

你好,芬恩。这是一封测试邮件。=> CCCC CCCC CCCC CCCC

将返回不同的摘要。

该算法将成为垃圾邮件过滤器的一部分。过滤器将记住确定为垃圾邮件的邮件摘要。如果在有疑问的邮件中显示相同的摘要,则相同的摘要将导致过滤器增加垃圾邮件分数。

我知道Levenshtein,但是这需要我预先了解琴弦。在这种情况下,我没有此信息。我可能有此信息,但是这将需要过滤器来存储所有垃圾邮件,并对照每一封进行检查,这将是一个非常缓慢的过程。

也许一些松散的压缩算法加上两者之间的Levenshtein距离的计算可能会起作用。

任何指针表示赞赏。


阅读 257

收藏
2020-07-28

共1个答案

小编典典

看起来您想要局部敏感的散列。考虑使用minhashshingling。Rajaraman和Ullman的著作
Mining Massive Datasets

都有很好的解释。您会在python搜索博客中找到上述关键字的众多简短实现。

似乎还有其他方法(我不太了解),但是您可能会感兴趣,因为它们是专门针对垃圾邮件而设计的,尤其是nilsimsa哈希:

2020-07-28