繁体   English   中英

Damerau-Levenshtein距离代码抛出错误?

[英]Damerau-Levenshtein distance code throwing errors?

出于某种原因,当我尝试实现以下代码(我正在使用Sublime Text 2)时,在第18行出现错误“无效语法”。我不确定为什么会这样,我在这里找到了代码显然应该起作用,所以我不知道为什么不起作用。 有小费吗? 这是代码:

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]    

有一个错误应该是:

,#insertion

看来您已经解决了这个问题,但是如果您不想自己实现所有这些,则可以使用pypi中的jellyfish包: https ://pypi.python.org/pypi/jellyfish。 过去,我已经使用它取得了巨大的成功。

它包含几个距离函数,包括Damerau-Levenshtein距离。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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