1

外国語の文字で単純な fuzzywuzzy 式を試すと、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引数に as を渡し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 に答える