2012-05-03 66 views
2

我使用Levenshtein距离算法比较作为用户输入提供的公司名称与已知公司名称的数据库以找到最接近的匹配项。本身,算法工作正常,但我想建立一个偏差,以便编辑距离被认为是较低的,如果字符串的初始部分匹配。修改Levenshtein位置偏差的距离

例如,如果搜索条件是“ABCD”,那么“ABCD Co.”和“XYX ABCD”具有相同的编辑距离。不过,我想增加一个事实,即第一个字符串的起始部分与第二个字符串的搜索条件更紧密匹配。

这样做的一种方法可能是将字符串开头的插入/删除/替换成本修改得更高,然后降低到最后。有没有人有这个成功实施的例子?使用Levenshtein距离仍然是我尝试实现的最好方法?我对这种方法的假设是否准确?

更新:为了我的直接目的,我决定放弃上述内容,改为使用Jaro Winkler编辑距离来解决问题。不过,我会留下来进一步的投入。

+0

即时寻找同样的事情...你有你的解决方案的任何运气?也许你可以提供一些代码示例? – Leonardo

回答

0

你正在寻找看起来像史密斯 - 沃特曼局部比什么:http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm

+0

嗨,皮埃尔。这个算法看起来很有趣。但是我不确定用于基因序列匹配的东西是否也适用于匹配包含公司名称的字符串。最终,结果需要转化为表示两个字符串相似性的标准化匹配百分比,而如果初始序列匹配则称量更多。 – user1368587