用于大写检测的模糊 wuzzy WRatio

fuzzy wuzzy WRatio for Uppercase detection

我需要帮助找出原因

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 字符串在匹配之前不会更改,例如uppercase/lowercase 很重要。

2) 当使用 force_ascii=False, full_process=True 字符串中的所有非字母数字字符都被替换为空格,字符串被小写,开头和结尾的空格被修剪。例如 "Mäne!" -> "Mäne " -> "mäne " -> "mäne"

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 字符,因此应该 return 一个空字符串。

在你希望它考虑你应该调用的两个字符串之间的任何差异的情况下

> fuzz.WRatio('Māne', 'mane', full_process=False)
50
> fuzz.WRatio('Māne', 'Mane', full_process=False)
75