出于某种原因,当我尝试实现以下代码(我使用Sublime Text 2)时,它在第18行给出了错误“无效语法”。我不知道为什么会这样,我找到了代码here它显然应该有效,所以我不知道为什么不这样做。有小费吗? 这是代码:
def damerau_levenshtein_distance(word1, word2):
distances = {}
len_word1 = len(word1)
len_word2 = len(word2)
for i in xrange(-1, (len_word1 + 1)):
distances[(i,-1)] = i + 1
for j in xrange(-1, (len_word2 + 1)):
distances[(-1,j)] = j + 1
for i in xrange(len_word1):
if word1[i] == word2[j]:
distance_total = 0
else:
distance_total = 1
distances[(i, j)] = min(
distances[(i-1,j)] + 1, # deletion
distances[(i,j-1)] + 1 # insertion
distances[(i-1,j-1)] + distance_total #substitution
)
if i and j and word1[i] == word2[j-1] and word1[i-1] == word2[j]:
distances[(i,j)] = min(distances[(i,j)], distances[i-2,j-2] + distance_total) # transposition
return distances[len_word1-1,len_word2-1]
答案 0 :(得分:3)
应该有一个错误:
,#insertion
答案 1 :(得分:1)
看起来你已经解决了这个问题,但是如果你不想自己实现所有这些,你可以使用pypi中的水母包:https://pypi.python.org/pypi/jellyfish。我过去曾用它取得了巨大的成功。
它包含几个距离函数,包括Damerau-Levenshtein距离。