改进的Levenshtein算法

时间:2011-10-20 20:49:17

标签: algorithm levenshtein-distance

我最近在我们的搜索引擎数据库中实现了levenshtein算法,但我们遇到了一个问题。

根据基本的levenshtein

Levenshtein('123456','12x456')与Levenshtein('123456','12345x')的价值相同

通常这很好,但对于我的具体问题是不正确的。当有人使用我们的网站时,这是不正确的。电子元件制造商通常制造类似的产品,最后一个字母只有不同之处。如果第一个字母不同,它通常是完全不同的类别。因此,我需要一种算法,该算法认为在单词开头附近的匹配比在后面的那些更有价值,或者换句话说,在开头附近发生的不匹配应该比后面的那些应用更大的惩罚。

如果有任何人有任何想法,请告诉我。

3 个答案:

答案 0 :(得分:2)

参见生物信息学中广泛使用的Smith-Waterman算法。它可以执行查询的本地对齐,但这将比Levenshtein慢。

答案 1 :(得分:2)

使用Jaro-Winkler Distance ......这正是您所要求的。

答案 2 :(得分:1)

我们遇到了类似的问题并使用了Brew edit distance method

我们在Perl,所以我们使用了Text::Brew库。我的同事做了一个关于使用few different algorithms的精彩演讲,包括Brew。