用于Uppercase检测的模糊wuzzy WRatio



我需要帮助找出的原因

fuzz.WRatio('Māne', 'mane', force_ascii=True) => 75%

以及

fuzz.WRatio('Māne', 'Mane', force_ascii=True) => 75%

我希望force_ascii参数能够提高精度。非常感谢。

在fuzzywuzzy中使用fuzz.WRatio时,有两个参数force_asciifull_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

最新更新