在python Levenshtein中设置编辑限制
我在列表A中有数百万个单词,在列表B中有大约100个单词。我想找到集合A中所有看起来像集合B中的项目的项目。我使用的是Python Levenshtein库,它是用C编写的,运行得非常好 但是99%的比较都是浪费时间,因为Levenshtein计算了像“苹果”和“香蕉”这样的单词之间的距离,即使很明显它们看起来不一样 我想做的是在Levenshtein距离达到3时结束函数。我可以通过从某处借用的python函数中的一行来实现这一点。但是我更喜欢使用Levenshtein库,它是用C语言构建的,应该更快在python Levenshtein中设置编辑限制,python,levenshtein-distance,Python,Levenshtein Distance,我在列表A中有数百万个单词,在列表B中有大约100个单词。我想找到集合A中所有看起来像集合B中的项目的项目。我使用的是Python Levenshtein库,它是用C编写的,运行得非常好 但是99%的比较都是浪费时间,因为Levenshtein计算了像“苹果”和“香蕉”这样的单词之间的距离,即使很明显它们看起来不一样 我想做的是在Levenshtein距离达到3时结束函数。我可以通过从某处借用的python函数中的一行来实现这一点。但是我更喜欢使用Levenshtein库,它是用C语言构建的,应
#!/usr/bin/python
def lvn(a, b):
"Calculates the Levenshtein distance between a and b."
n, m = len(a), len(b)
if n > m:
# Make sure n <= m, to use O(min(n,m)) space
a,b = b,a
n,m = m,n
current = range(n+1)
for i in range(1,m+1):
previous, current = current, [i]+[0]*n
for j in range(1,n+1):
add, delete = previous[j]+1, current[j-1]+1
change = previous[j-1]
if a[j-1] != b[i-1]:
change = change + 1
current[j] = min(add, delete, change)
if current[j]==3: return #what I want to replicate
return current[n]
#/usr/bin/python
def lvn(a、b):
“计算a和b之间的Levenshtein距离。”
n、 m=len(a),len(b)
如果n>m:
#确保n为什么不传入深度参数:
def lvn(a、b、深度)
每次递归时递增,到3时返回1000?我认为这行行不通。下一次发布问题时,请包含您实际使用的内容的详细信息,包括指向您需要帮助的库的链接。我现在已经发布了3次了,没有你正在使用的库的链接。如果你不提出一个好的问题,你永远不会得到一个好的答案。这个函数确实可以正常工作,但我想知道是否有办法使用Levenshtein库本身来做同样的事情,因为我的函数可能效率低下。哪个库?有一个C语言,一个python语言,一个lisp语言,一个java语言,一个ruby语言,其中的一些语言有不止一个实现,python语言是用C语言编写的,所以我不理解它