Python字符串相似性的摘要/哈希
我在寻找一种算法,可以从较长的字符串生成一个短的(比如16个字符,具体长度不重要)哈希码或摘要。
主要要求是,几乎相同的字符串应该生成相同的摘要。
比如这两封几乎相同的邮件:
嗨,马丁。这是一些...垃圾邮件给你。祝好,XYZ。
> AAAA AAAA AAAA AAAA
嗨,博。这是一些...垃圾邮件给你。祝好,EFG。
> AAAA AAAA AAAA AAAA
这两封邮件返回的摘要是相同的(或者几乎相同),而另一封不同的邮件:
你好,芬。这是一封测试邮件。
> CCCC CCCC CCCC CCCC
则会返回一个不同的摘要。
这个算法将用于垃圾邮件过滤器。过滤器会记住那些它确定是垃圾邮件的邮件摘要。如果在一些不确定的邮件中出现了相同的摘要,这个相同的摘要会导致过滤器增加垃圾邮件的评分。
我知道Levenshtein算法,但它需要我事先知道字符串。在这种情况下,我没有这些信息。我可能会有这些信息,但那样的话,过滤器就需要存储所有的垃圾邮件并逐一检查,这样会非常慢。
也许可以尝试一些松散的压缩算法,再结合计算两个字符串之间的Levenshtein距离。
任何建议都非常感谢。