如何用python计算levenshteindistance_在python中实现Levenshtein距离

  • Post author:
  • Post category:python


您的“实施”有几个缺陷:

(1)它应该以def lev(a,b):开头,而不是def lev(s1,s2):.请先了解(a)运行代码之前的好习惯(b)引用您实际运行的代码(通过复制/粘贴,而不是(容易出错)重新键入).

(2)没有终止条件;对于任何参数,它最终将最终尝试评估lev(“”,“”),如果不是Python实现限制,它将永远循环:RuntimeError:超出最大递归深度.

您需要插入两行:

if not a: return len(b)

if not b: return len(a)

使它工作.

(3)Levenshtein距离是递归定义的.没有“这个”(唯一的)算法.递归代码在教室外很少见,然后只能以“稻草人”的身份出现.

(4)朴素实现需要时间和内存与len(a)* len(b)成比例……那些字符串通常不会比4到8长一点吗?

(5)你非常天真的实现更糟糕,因为它复制了输入的切片.

你可以在网上找到工作不太天真的实现… google(“levenshtein python”)…寻找使用O(max(len(a),len(b)))额外内存的实现.

你问的是什么(“与其他字符串编辑距离最短的字符串的编辑距离.”)没有意义……“字符串”??? “一个巴掌拍不响” :-)

您可能想要的(找到具有最小距离的集合中的所有字符串对),或者可能只是最小距离,是一个简单的编程练习.你尝试过什么?

顺便说一句,通过一个简单的算法找到那些对将需要执行lev()的O(N ** 2)执行,其中N是集合中的字符串数…如果这是一个真实世界的应用程序,你应该看看使用经过验证的代码而不是自己编写代码.如果这是家庭作业,你应该这样说.



版权声明:本文为weixin_39564831原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。