1

当我尝试使用外来字符的简单模糊模糊表达式时,使用 process.extractOne 方法得到错误结果(我尝试过使用和不使用 u):

>>> choices= [u"הלכות חנוכה",u"הלכות פורים",u"הלכות סוכה"]
>>> process.extractOne("הלכות סוכה", choices)
(u'\u05d4\u05dc\u05db\u05d5\u05ea \u05d7\u05e0\u05d5\u05db\u05d4', 0)

然而,对于 fuzz.ratio,它运行平稳:

>>> fuzz.ratio("הלכות ראש השנה", "הלכות תעניות")
69

相同的代码适用于常规字符:

>>> choices= ['this','that','those']
>>> process.extractOne("these", choices)
('those', 80)

可能是什么问题?

4

1 回答 1

1

fuzz.ratio在参数中传递并在scorer=您要匹配的字符串前面添加 u。

以下作品:

choices= [u"הלכות חנוכה",u"הלכות פורים",u"הלכות סוכה"] process.extractOne(u"הלכות סוכה", choices, scorer=fuzz.ratio)

(u'\u05d4\u05dc\u05db\u05d5\u05ea \u05e1\u05d5\u05db\u05d4', 100)

其他人也给出相同的分数:

choices= [u"הלכות חנוכה",u"הלכות פורים",u"הלכות סוכה"] process.extract(u"הלכות סוכה", choices, scorer=fuzz.ratio)

[(u'\u05d4\u05dc\u05db\u05d5\u05ea\u05e1\u05d5\u05db\u05d4', 100), (u'\u05d4\u05dc\u05db\u05d5\u05ea \u05d7\u05e0\u05d5\u05db\u05d4 ', 86), (u'\u05d4\u05dc\u05db\u05d5\u05ea \u05e4\u05d5\u05e8\u05d9\u05dd', 67)]

Fuzzywuzzy 版本:fuzzywuzzy 0.7.0 & Python 2.7x

于 2016-12-06T23:20:57.523 回答