有没有一种方法可以计算字符串的一般“相似度分数”?在某种程度上,我不是将两个字符串比较在一起,而是为每个字符串获取一些数字/分数(哈希),这些数字/分数可以稍后告诉我两个字符串是否相似。两个相似的字符串应该具有相似(接近)的分数/哈希值。
让我们以这些字符串和分数为例:
你好世界1000
你好世界! 1010
你好地球1125
富酒吧 3250
富巴巴 3750
福酒吧! 3300
福世界! 2350
你可以看到Hello world!和 Hello world 相似,得分也接近。
这样,找到与给定字符串最相似的字符串可以通过从其他分数中减去给定字符串分数然后对它们的绝对值进行排序来完成。
我的最终目标是:会有流日志消息(仅纯消息),我想找到这些消息的模式(某种正则表达式类型)。但是只有当我可以存储类似的字符串时,这才开始。我再次强调我应该为每个字符串获取一些数字/分数(哈希),稍后可以告诉我两个字符串是否相似
看一下局部敏感哈希 http://en.wikipedia.org/wiki/Locality_sensitive_hashing.
基本思想是对输入项进行哈希处理,以便相似的项以高概率映射到相同的桶(桶的数量远小于可能输入项的范围)。
有一个很好的解释here http://d3s.mff.cuni.cz/~holub/sw/shash/以及一些示例代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)