使用模糊匹配聚合字符串

时间:2013-02-26 11:39:01

标签: similarity fuzzy-comparison

假设我有一个错误日志,我希望得到每个类型错误的计数。我已经通过错误消息分组执行了一个天真的计数,但是很多消息包含特定于上下文的信息,这意味着尽管由同一个错误引起,我不能简单地按消息文本分组。

一些示例,其中斜体段因错误实例而异:

  • 无法在 / primate / gorilla
  • 页面上检索用户 188a9e12-6797-4d9b-8adf-4588b2435326 的结果
  • 无法在 / primate / monkey
  • 页面上检索用户 08c610d2-27d2-4f97-bf60-d5b3010e8dd6 的结果

我想使用一些模糊逻辑对所有这些消息进行分组。我理解Levenshtein距离算法对于这种类型的处理是有价值的,但我猜原始距离没有价值,因为它没有根据字符串的长度加权(在1000字符的字符串中,30的距离不太重要,而在100)。

所以我的目标是遍历消息列表并获得某种模糊匹配的计数。可能存在为每个模糊匹配的消息生成某种一致密钥的方面问题?我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

我会试试q-gram distance 。然后,两个字符串之间的距离由它们共有的N-grams个数决定。 N必须足够大,以使N-gram代表相关细节。 N = 4可能是一个很好的起点。

进一步的弦距离来自N-gram的概念:f.x。余弦和雅克卡距离。

This text在R的上下文中解释了不同类型的字符串距离算法。