比FuzzyWuzzy更好的方法?

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更好的方法?

use*_*281 5

例如,您可以使用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)