使用Levenshtein距离确定数组中是否存在类似的字符串

时间:2014-01-09 12:36:29

标签: python ruby algorithm levenshtein-distance

我有一个名为referenceArray的字符串数组。我现在有一个字符串str。我想检查referenceArray中的任何元素是否与str类似。我可以计算referenceArray和str的每个元素之间的Levenshtein距离,并选择具有最小距离的元素。 但是,这种方法的问题是我还需要知道referenceArray中的所有元素是否都与str.So相似,在这种情况下,选择具有最小L距离的元素将是错误的。

例如,

referenceArray = ['saint louis','new york']
str='st. louis'

在这种情况下,我选择'saint louis' since it has minimum L distance of 4.

但是如果是str='toronto',那个minimum L distance is 'new york',但字符串是完全不同的。如何确定referenceArray中的元素是否与str匹配或者是否存在类似的字符串?

谢谢

2 个答案:

答案 0 :(得分:4)

如何设定可接受距离的阈值?比如说,只有当此距离低于10sqrt(len(str))或类似的距离时,才接受具有最小距离的字符串。

答案 1 :(得分:1)

尝试设置len(str)/x的上限阈值,其中x是适当的常量。我会尝试使用2-4的x。

尝试一些样本输入,看看最适合你的。