我得到了一个模糊的结果,但效果不如预期。如果中间有一个额外的单词,由于levenshtein的不同,得分更低。
例子:
from fuzzywuzzy import fuzz
score = fuzz.ratio('DANIEL CARTWRIGHT', 'DANIEL WILLIAM CARTWRIGHT')
print(score)
score = fuzz.ratio('DANIEL CARTWRIGHT', 'DAVID CARTWRIGHT')
print(score)
score = fuzz.partial_ratio('DANIEL CARTWRIGHT', 'DANIEL WILLIAM CARTWRIGHT')
print(score)
score = fuzz.partial_ratio('DANIEL CARTWRIGHT', 'DAVID CARTWRIGHT')
print(score)
结果:
八十一
八十五
七十一
八十一
我正在寻找第一对(丹尼尔对丹尼尔威廉)比第二对(丹尼尔对戴维)更好的比赛。
这里有没有比fuzzywuzzy更好的方法?
最佳答案
例如,可以使用token_set_ratio
。代码文档表示它采用令牌和剩余令牌的交集的比率。
from fuzzywuzzy import fuzz
score = fuzz.token_set_ratio('DANIEL CARTWRIGHT', 'DANIEL WILLIAM CARTWRIGHT')
print(score)
score = fuzz.token_set_ratio('DANIEL CARTWRIGHT', 'DAVID CARTWRIGHT')
print(score)
结果:
100
85