为了账号安全,请及时绑定邮箱和手机立即绑定

用于大写检测的模糊模糊 WRatio

用于大写检测的模糊模糊 WRatio

MM们 2022-11-09 14:53:28
我需要帮助找出原因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_asciifull_process在使用fuzz.WRatiofuzzywuzzy 时,默认情况下都是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


查看完整回答
反对 回复 2022-11-09
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信