我正在尝试创建某种字典来附加我的结果并使用 jaro 距离函数获得最佳匹配。
这是我尝试匹配 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 分钟。