Cai*_*n G 4 python fuzzy-search fuzzywuzzy
我得到的结果模糊不清,效果不理想。如果中间有多余的单词,则由于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)
Run Code Online (Sandbox Code Playgroud)
结果:81 85 71 81
我正在寻找第一对(丹尼尔vs丹尼尔·威廉姆)比第二对(丹尼尔vs大卫)更好的比赛。
有没有比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)
Run Code Online (Sandbox Code Playgroud)
结果:
100
85
Run Code Online (Sandbox Code Playgroud)