有没有比Levenshtein距离“更好”的字符串比较算法?

时间:2011-02-13 16:22:31

标签: .net algorithm string-comparison

我一直在使用它来处理我正在进行的项目,但有些结果并不是我想要的。例如:

将“日期”与

进行比较时
  1. “状态”它的距离为2
  2. “今天的日期”它的列弗距离为9
  3. 这就是我们对算法的期望当然,但我很好奇是否有人知道那些能够与任何与源字符串(日期)完全匹配的比较字符串更接近匹配的东西?意思是“今天的日期”会有更高的排名,因为它有“日期”。

    如果您能找到实现此功能的.NET库,则可获得奖励。

3 个答案:

答案 0 :(得分:2)

您可能想找到Longest common subsequence

答案 1 :(得分:1)

我认为在使用Levenshtein之前,这意味着你要对这个词进行标记。作为替代方案,也有Jaro-Winker距离。

有一个.net库SimMetrics似乎涵盖了a few alternatives

答案 2 :(得分:0)

要做得好,你需要一些使用上下文

如果您尝试进行地址查找,那么“Nosuch STREET”可能与“Nosuch ROAD”完美匹配,或者在禁飞列表中,您希望Gadaffi的所有20种拼写都匹配。

如果你试图通过复制来分析一段历史文本的变化那么你需要一个不同的算法,