我需要帮助找出的原因
fuzz.WRatio('Māne', 'mane', force_ascii=True) => 75%
以及
fuzz.WRatio('Māne', 'Mane', force_ascii=True) => 75%
我希望force_ascii参数能够提高精度。非常感谢。
在fuzzywuzzy中使用fuzz.WRatio
时,有两个参数force_ascii
和full_process
,默认情况下都为True。它们都用于预处理字符串(force_ascii仅在full_process为True时使用,否则将被忽略(。
1( 使用force_ascii=False, full_process=False
时字符串在匹配之前不会更改,因此大写/小写很重要。
2( 使用force_ascii=False, full_process=True
时字符串中的所有非字母数字字符都被替换为空白,字符串的小写字母和从开始到结束的空白都被修剪掉。例如"Mäne!"->"Mä
2( 使用force_ascii=True, full_process=True
时这与2(相同,但事先删除所有非ascii字符。例如"Mäne!"->"Mne!"->《Mne》->《Mne》->"Mne">
我真的不认为force_ascii
默认为true是一件好事,因为我个人并不希望99%的情况下出现这种行为,但大多数使用fuzzywuzzy的人甚至都不知道这种行为。除此之外,它似乎有一个错误,因为例如
> utils.full_process("ā", force_ascii=True)
'ā'
而它显然不是ascii字符,因此应该返回一个空字符串。
在您希望它考虑两个字符串之间的任何差异的情况下,您应该调用
> fuzz.WRatio('Māne', 'mane', full_process=False)
50
> fuzz.WRatio('Māne', 'Mane', full_process=False)
75