计算 2 个字符串之间的差异(Levenshtein 距离)
Calculate the difference between 2 strings (Levenshtein distance)
我正在尝试计算两个字符串之间的距离。两个字符串之间的 distance/difference 是指将一个字符串更改为另一个字符串所需的最少字符插入、删除和替换次数。
我尝试过的方法是:将两个字符串转换成列表,比较列表,检查差异,然后添加差异
first_string = "kitten"
second_string = "sitting"
list_1 = list(first_string)
list_2 = list(second_string)
print("list_1 = ", list_1)
print("list_2 = ", list_2)
print(" ")
lengths = len(list_2) - len(list_1)
new_list = set(list_1) - set(list_2)
print(lengths)
print(new_list)
difference = lengths + int(new_list)
print(difference)
我得到的输出是:
list_1 = ['k', 'i', 't', 't', 'e', 'n']
list_2 = ['s', 'i', 't', 't', 'i', 'n', 'g']
1
{'e', 'k'}
然后我试图找出如何将这些差异相加,使其等于 3。我不知道如何使输出相似以将它们相加(用 {'e' 加 1, 'k'} 等于距离 3).
看来您只需要更改这一行:
difference = lengths + int(len(new_list))
那应该给你 3 个你想要的 :)
你快到了。使用 len() 计算 new_list 的长度,就像您对长度所做的那样:
difference = lengths + len(new_list)
这称为 Levenshtein 距离。查看 this implementation 作为进一步阅读。
我正在尝试计算两个字符串之间的距离。两个字符串之间的 distance/difference 是指将一个字符串更改为另一个字符串所需的最少字符插入、删除和替换次数。
我尝试过的方法是:将两个字符串转换成列表,比较列表,检查差异,然后添加差异
first_string = "kitten"
second_string = "sitting"
list_1 = list(first_string)
list_2 = list(second_string)
print("list_1 = ", list_1)
print("list_2 = ", list_2)
print(" ")
lengths = len(list_2) - len(list_1)
new_list = set(list_1) - set(list_2)
print(lengths)
print(new_list)
difference = lengths + int(new_list)
print(difference)
我得到的输出是:
list_1 = ['k', 'i', 't', 't', 'e', 'n']
list_2 = ['s', 'i', 't', 't', 'i', 'n', 'g']
1
{'e', 'k'}
然后我试图找出如何将这些差异相加,使其等于 3。我不知道如何使输出相似以将它们相加(用 {'e' 加 1, 'k'} 等于距离 3).
看来您只需要更改这一行:
difference = lengths + int(len(new_list))
那应该给你 3 个你想要的 :)
你快到了。使用 len() 计算 new_list 的长度,就像您对长度所做的那样:
difference = lengths + len(new_list)
这称为 Levenshtein 距离。查看 this implementation 作为进一步阅读。