Python FuzzyWuzzy 比率:它是如何工作的?
Python FuzzyWuzzy ratio: how does it work?
在 FuzzyWuzzy 比率描述中说:
FuzzyWuzzy 比率原始分数是 [0, 100] 范围内的字符串相似度的度量。对于两个字符串 X 和 Y,分数由 int(round((2.0 * M / T) * 100)) 定义,其中 T 是两个字符串中的字符总数,M 是两个字符串中的匹配数. FuzzyWuzzy ratio sim score 是 [0, 1] 范围内的一个浮点数,由原始分数除以 100 得到。
那为什么我换了词序,这个分数好像不一样了?
from fuzzywuzzy import fuzz
fuzz.ratio('EMRE MERT', 'OMER CAN') / 100 = 0.35
fuzz.ratio('EMRE MERT', 'CAN OMER') / 100 = 0.47
您使用的定义来自 Ratio function in the py_stringmatching
module, but the function you're using is from the fuzzywuzzy module which uses the Levenshtein distance。
从recursive implementation of Levenshtein可以看出算法是逐个字符地考虑字符串,因此改变字符的顺序将改变输出值。
在 FuzzyWuzzy 比率描述中说:
FuzzyWuzzy 比率原始分数是 [0, 100] 范围内的字符串相似度的度量。对于两个字符串 X 和 Y,分数由 int(round((2.0 * M / T) * 100)) 定义,其中 T 是两个字符串中的字符总数,M 是两个字符串中的匹配数. FuzzyWuzzy ratio sim score 是 [0, 1] 范围内的一个浮点数,由原始分数除以 100 得到。
那为什么我换了词序,这个分数好像不一样了?
from fuzzywuzzy import fuzz
fuzz.ratio('EMRE MERT', 'OMER CAN') / 100 = 0.35
fuzz.ratio('EMRE MERT', 'CAN OMER') / 100 = 0.47
您使用的定义来自 Ratio function in the py_stringmatching
module, but the function you're using is from the fuzzywuzzy module which uses the Levenshtein distance。
从recursive implementation of Levenshtein可以看出算法是逐个字符地考虑字符串,因此改变字符的顺序将改变输出值。