我有一個Python程序來讀取兩個列表(一個錯誤和其他與正確的數據)。我錯誤列表中的每個元素都需要與我正確列表中的每個元素進行比較。比較後,我得到每一個比較對之間的所有編輯距離。現在我可以找到給定錯誤數據的最小編輯距離,並獲取我的正確數據。Python中的Levenshtein距離只給出1作爲編輯距離
我正在嘗試使用levenshtein距離來計算編輯距離,但它將所有編輯距離都返回爲1,哪怕是錯誤的。
這意味着用於計算levenshtein距離的代碼是不正確的。我正在努力爲此找到解決辦法。幫幫我!
我的代碼
import csv
def lev(a, b):
if not a: return len(b)
if not b: return len(a)
return min(lev(a[1:], b[1:])+(a[0] != b[0]), lev(a[1:], b)+1, lev(a, b[1:])+1)
if __name__ == "__main__":
with open("all_correct_promo.csv","rb") as file1:
reader1 = csv.reader(file1)
correctPromoList = list(reader1)
#print correctPromoList
with open("all_extracted_promo.csv","rb") as file2:
reader2 = csv.reader(file2)
extractedPromoList = list(reader2)
#print extractedPromoList
incorrectPromo = []
count = 0
for extracted in extractedPromoList:
if(extracted not in correctPromoList):
incorrectPromo.append(extracted)
else:
count = count + 1
#print incorrectPromo
for promos in incorrectPromo:
for correctPromo in correctPromoList:
distance = lev(promos,correctPromo)
print promos, correctPromo , distance
正如我張貼在我的答案,你implmentation似乎是正確的操作(雖然我建議你一個更好的)。如果您需要修正這一問題,請提供您的算法錯誤地返回1的情況(我無法自己重現) – caspillaga