【发布时间】:2011-10-03 16:05:38
【问题描述】:
有没有一种方法可以计算字符串的一般“相似度分数”?在某种程度上,我不是比较两个字符串,而是我为每个字符串获得一些数字/分数(哈希),以后可以告诉我两个字符串是否相似。两个相似的字符串应该具有相似(接近)的分数/哈希。
让我们以这些字符串和分数为例:
你好世界 1000
世界你好! 1010
地球你好 1125
Foo bar 3250
FooBarbar 3750
Foo 酒吧! 3300
Foo 世界! 2350
你可以看到你好世界!和 Hello world 相似,分数也很接近。
这样,通过从其他分数中减去给定字符串分数然后对它们的绝对值进行排序来找到与给定字符串最相似的字符串。
我的最终目标是:会有流式日志消息(只有纯消息),我想找到这些消息的模式(某种正则表达式类型)。但是只有当我可以存储类似的字符串时才开始。我再次关注 我应该为每个字符串获取一些数字/分数(哈希),然后可以告诉我两个字符串是否相似
【问题讨论】:
-
String similarity algorithims? 的可能重复项(以及许多其他以前的问题)
-
@larsmans 帖子的解决方案有点偏离了我不希望的方向(即他们专注于基于比较字符串的字符串相似性)。对我来说,数据庞大且流式传输,因此比较字符串是不可能的。我只是找到一种解决方法:对每个字符串进行评分(可能是不好的哈希类型),然后可以告诉我两个字符串是否相似。
-
您好,我也对这个问题很感兴趣。你在这个问题上有什么进展吗?
-
@Bloodmoon:无法计算哈希值(整数)。由于我必须专注于工作,因此无法专注于研究。但是,我已经调整了 charikar Hash 算法以使其在某种程度上发挥作用。尽管如此,当字符串只有几个单词时,仍然存在一些理论上的限制。很难知道是否说,Hello world 类似于 Hello earth 或 Foo world 或 Foo earth?但是仍然需要研究以更好地优化具有足够单词数的字符串..
-
可以通过哈希值的距离阈值来定义相似度吗?假设函数是 f(),|f("hello world")-f("helloworth")|
标签: python string algorithm cluster-analysis hash