2013-02-26 50 views
1

假设我有一个错误日志,我希望得到每个类型的错误的计数。我已经通过错误消息进行了分组,但是很多消息都包含特定于上下文的信息,这意味着尽管是由同一个错误引起的,我不能简单地按消息文本进行分组。使用模糊匹配的聚合字符串

一些例子,其中斜体段每个实例变化误差的:

  • 未能检索用户188a9e12-6797-4d9b-8adf-4588b2435326/灵长类/大猩猩
  • 结果
  • 未能网页检索用户08c610d2-27d2-4f97-bf60-d5b3010e8dd6结果/灵长类/猴

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

所以我的目的是迭代消息列表并获得某种模糊的匹配计数。为每个模糊匹配的消息生成某种一致的密钥可能存在问题?我将如何去做这件事?

+0

你不能使用正则表达式来分类邮件,并捕获非变化部分R的背景下不同类型的字符串距离算法? – 2013-02-26 11:53:10

+0

不幸的是,没有为消息类型绘制正则表达式。对于每种类型的消息,不同的部分可能会有所不同,因此需要进行模糊匹配 – WickyNilliams 2013-02-26 12:16:16

回答

0

我会给q-gram distance试试。然后两个琴弦之间的距离由它们共有的N-grams的数量决定。 N必须足够大以至于N-gram代表相关的细节。 N = 4可能是一个不错的首发。

更多的字符串距离来自N-gram的概念:f.x.余弦和Jaccard距离。

This text解释

+1

我忘了我曾问过这个问题,但我不记得我正在尝试做什么!你的答案似乎知道,并有很多有用的链接,所以我将它标记为答案 – WickyNilliams 2013-12-02 16:32:10