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