pythonLevenshtein比率计算

2024-05-14 17:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两条线:

a = 'bjork gudmundsdottir'
b = 'b. gudmundsson gunnar'

两者之间的Levenshtein距离是12。当我对Levenshtein距离使用以下公式时,我得到0.01与{}库之间的差异:

^{pr2}$

是什么造成了这种差异?我的计算有什么不对。请注意,我已经回顾了这个How python-Levenshtein.ratio is computed类似的问题,它并没有完全回答我的问题。在

有人能解释一下用来计算上述比率的公式吗?在


Tags: 距离is差异how公式levenshtein比率ratio
1条回答
网友
1楼 · 发布于 2024-05-14 17:53:03

根据Lukas的评论,这是因为ratio()对替换操作使用了2的成本,而不是Levenshtein距离的正常成本1。下面是一个计算示例:

a = 'bjork gudmundsdottir'
b = 'b. gudmundsson gunnar'

>>> Levenshtein.editops(a,b)
[('delete', 1, 1), ('delete', 2, 1), ('delete', 3, 1), ('replace', 4, 1), ('replace', 14, 11), ('insert', 16, 13), ('insert', 16, 14), ('insert', 16, 15), ('insert', 16, 16), ('replace', 16, 17), ('replace', 17, 18), ('replace', 18, 19)]

>>> ldist = sum([2 for item in Levenshtein.editops(a,b) if item[0] == 'replace']) 
          + sum([1 for item in Levenshtein.editops(a,b) if item[0] != 'replace']) # 17
ln = len(a) + len(b) # 41

>>> (41.0-17.0)/41.0
0.5853658536585366
>>> Levenshtein.ratio(a,b)
0.5853658536585366

相关问题 更多 >

    热门问题