我需要帮助找出原因fuzz.WRatio('Māne', 'mane', force_ascii=True) => 75%并且fuzz.WRatio('Māne', 'Mane', force_ascii=True) => 75%我希望 force_ascii 参数能够提高准确性。谢谢你。
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
有两个参数force_ascii
,full_process
在使用fuzz.WRatio
fuzzywuzzy 时,默认情况下都是True。它们都用于预处理字符串(force_ascii 仅在 full_process 为 True 时使用,否则被忽略)。
1) 使用时force_ascii=False, full_process=False
字符串在匹配之前不会更改,因此例如大写/小写很重要。
2) 使用force_ascii=False, full_process=True
时,字符串中的所有非字母数字字符都替换为空格,字符串小写,开头和结尾的空格被修剪。例如“Mäne!” ->“马内”->“马内”->“马内”
2) 使用时force_ascii=True, full_process=True
这与 2) 相同,但会预先删除所有非 ascii 字符。例如“Mäne!” -> “嗯!” -> “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
添加回答
举报
0/150
提交
取消