我已经写了一个函数来计算两个给定字符串之间的Levenshtein距离。然而,它似乎不能正常工作。替代成本= 2,插入成本= 1,删除成本=1
def MyLevenshtein(String1, String2):
if len(String1) and len(String2) != 0:
rows = len(String1) + 1
columns = len(String2) + 1
distance = [[0 for x in range(columns)] for x in range(rows)]
for i in range(1, rows):
distance[i][0] = i
for i in range(1, columns):
distance[0][i] = i
for column in range(1, columns):
for row in range(1, rows):
if String1[row - 1] == String2[column - 1]:
cost = 0
else:
cost = 2
distance[row][column] = min(distance[row - 1][column] + 1, # deletion
distance[row][column - 1] + 1, # insertion
distance[row - 1][column - 1] + cost) #substitution
Distance = distance[row][column]
return Distance
例如,当我使用字符串‘hamchenoonan’和'hamchenin‘调用函数时,返回5,尽管它应该返回7。
https://stackoverflow.com/questions/56101062
复制相似问题