我需要幫助找出原因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
提交
取消