繁体   English   中英

Levenshtein与人物争夺的距离?

[英]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 ,改变一个nt ,一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM