![](/img/trans.png)
[英]How is Levenshtein Distance calculated on Simplified Chinese characters?
[英]Levenshtein distance with scrambling of characters?
我正在寻找一个字符串比较指标ala Levenshtein,当字符串中的字符被扰乱时,它也会起作用。 有谁知道这样的指标? 如果有一个Python模块可以计算出这样的度量标准,那也会很棒。 谢谢!
您可以尝试difflib
库,或者还有一个名为pylevenshtein的外部库。
计算每种类型字符的数量(使用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,因为这个问题的很多困难是定位,你不关心。
levenstien距离的动态编程解决方案可以简单地编辑以捕获例如德里,德里的成对加扰,并且与相应的替换或添加或删除相比,给予该较小的权重。
编辑:此算法已存在,并命名为Damerau-Levenshtein距离 。 搜索此算法将为您提供可直接使用的Python包 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.