Levenshtein与人物争夺的距离?

时间:2012-11-04 17:23:17

标签: python string string-comparison levenshtein-distance fuzzy-comparison

我正在寻找一个字符串比较指标ala Levenshtein,当字符串中的字符被扰乱时,它也会起作用。有谁知道这样的指标?如果有一个Python模块可以计算出这样的度量标准,那也会很棒。 谢谢!

3 个答案:

答案 0 :(得分:0)

您可以尝试difflib库,或者还有一个名为pylevenshtein的外部库。

答案 1 :(得分:0)

计算每种类型字符的数量(使用HashMap或等效字符),然后减去结果值并取每个减法的绝对值。将所有这些加在一起,然后除以2(因为你已经计算了每个差异的两倍)。

示例:

banana
batman

a - 3 , 2 -> |1| -> 1
b - 1 , 1 -> |0| -> 0
m - 0 , 1 -> |-1| -> 1
n - 2 , 1 -> |1| -> 1
t - 0 , 1 -> |-1| -> 1

因此您有1+1+1+1 = 4 -> 4/2 = 2

检查:在banana中,将n更改为t,将a更改为m(2次更改),并且batman

如果字符串长度不同,请计算字符串长度的差异,从差异计数中减去该数字(上图)。然后除以2,然后再添加该数字。

示例:

nab
banana

total difference count: 3
3 - 3 = 0 -> 0 / 2 = 0 -> 0 + 3 = 3

我也不会在这里使用Levenshtein,因为这个问题的很多困难是定位,你不关心。

答案 2 :(得分:0)

levenstien距离的动态编程解决方案可以简单地编辑,以捕获成对的加扰,例如delhi,dehli,与相应的替换或添加或删除相比,减少重量。

编辑:此算法已存在,并命名为Damerau–Levenshtein distance。搜索此算法将为您提供一个Python package,您可以直接使用它。