用于大写字母检测的模糊wuzzy WRatio

2024-05-29 07:33:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助找出原因

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

而且

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

我希望force_ascii参数能够提高精度。 多谢各位


Tags: true参数ascii精度原因neforcefuzz
1条回答
网友
1楼 · 发布于 2024-05-29 07:33:19

在fuzzyfuzzy中使用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äne”->;“mäne”->;“mäne”

2)当使用force_ascii=True, full_process=True 这与2)相同,但会事先删除所有非ascii字符。比如说 “Mäne!”——>;“Mne!”——>;“跨国公司”->;“跨国公司”->;“跨国公司”

我真的不认为force_ascii默认为true是一件好事,因为我个人并不希望99%的情况下出现这种行为,但大多数使用fuzzyfuzzy的人甚至没有意识到这种行为。 除此之外,它似乎还有一个bug,因为

> 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

相关问题 更多 >

    热门问题