0
我想創建某種字典來追加我的結果並使用jaro距離函數獲得最佳匹配。使用Python的水母模塊獲得最佳匹配(部分字符串匹配)
這是我嘗試匹配2個列表並獲得最佳匹配名稱的一部分。
例子:
import jellyfish
jellyfish.jaro_distance(u'jellyfish', u'sellyfish')
output:
0.9259259259259259
我所試圖做的是:
listA = ['grellofish','mellofush','jellyfihs','sellyfish','salmonfish']
listB = ['jellyfish','salmonfish']
#convert to unicode
listA = [unicode(i) for i in listA]
listB = [unicode(i) for i in listB]
for nickB in listB:
for nickA in listA:
results = jellyfish.jaro_distance(nickA, nickB)
print nickB,nickA,results
output:
jellyfish grellofish 0.825925925926
jellyfish mellofush 0.777777777778
jellyfish jellyfihs 0.962962962963
jellyfish sellyfish 0.925925925926
jellyfish salmonfish 0.685185185185
salmonfish grellofish 0.733333333333
salmonfish mellofush 0.7
salmonfish jellyfihs 0.618518518519
salmonfish sellyfish 0.755555555556
salmonfish salmonfish 1.0
在這種情況下,我希望它返回2得分最高:
jellyfish jellyfihs 0.962962962963
salmonfish salmonfish 1.0
對於FuzzyWuzzy用戶,我試圖模擬process.extractOne
函數,您可以將列表傳遞給process.extractOne(<value you want to compare>,<list of items you want to compare>)
,你會得到最好的比賽。
爲什麼我不使用FuzzyWuzzy的原因只是原因處理速度太慢,我不確定後面發生了什麼,5000個字符串的比較與5000個字符串的另一個列表的比較需要40分鐘。
這是我使用的解決方案!感謝您回答。 – BernardL