nltk.FreqDist('abc') > nltk.FreqDist('abd')
戻りTrue
NLTKでFreqDistの比較が対称でないのはなぜですか?すなわち '>' と '<' 異なる振る舞い
と
nltk.FreqDist('abd') < nltk.FreqDist('abc')
戻りFalse
は、この背後にある理由は何ですか?私にとってはちょっと変わったようです。
nltk.FreqDist('abc') > nltk.FreqDist('abd')
戻りTrue
NLTKでFreqDistの比較が対称でないのはなぜですか?すなわち '>' と '<' 異なる振る舞い
と
nltk.FreqDist('abd') < nltk.FreqDist('abc')
戻りFalse
は、この背後にある理由は何ですか?私にとってはちょっと変わったようです。
FreqDist
クラスの比較方法を見てみると、すべてが1つの方法:__le__
に基づいていることがわかりました。
>>> abc = nltk.FreqDist('abc')
>>> abd = nltk.FreqDist('abd')
これらの二つの文は等価です:
>>> abc < abd
False
>>> abc.__le__(abd)
False
さて、このメソッドが最初に行うことは、最初のFreqDist
のキーがあるかどうかを確認しているだけでは、この設定を考えると、何を意味するのか説明するために、 2番目のキーのサブセットあなたの例では、このメソッドは常にFalse
になります。
ただし、>
演算子は、の否定を返すように書き込まれた__gt__
メソッドをトリガします。したがって結果としてTrue
が得られます。
実際、比較方法がFreqDist
に追加された理由はわかりません。その親のCounter
は比較をサポートしておらず、私はこれが良い解決策を考え出すのは簡単ではないと思う。 FreqDist
がCounter
から継承されなかった時代から、このコードが遺物であり、いくつかの過度のOOPファンが、そのクラスが比較をサポートする必要があると判断したことに私は感傷的です。私は個人的にはこれが役に立つと思う状況を思いつくのに苦労しています。
私があなただったら、NLTK's issue trackerでバグレポートを開きます。または、時間がある場合は、この資料を削除してPRを開いてください。
https://github.com/nltk/nltk/issues/1457 =) – alvas