2016-07-06 3 views

答えて

2

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は比較をサポートしておらず、私はこれが良い解決策を考え出すのは簡単ではないと思う。 FreqDistCounterから継承されなかった時代から、このコードが遺物であり、いくつかの過度のOOPファンが、そのクラスが比較をサポートする必要があると判断したことに私は感傷的です。私は個人的にはこれが役に立つと思う状況を思いつくのに苦労しています。

私があなただったら、NLTK's issue trackerでバグレポートを開きます。または、時間がある場合は、この資料を削除してPRを開いてください。

+0

https://github.com/nltk/nltk/issues/1457 =) – alvas

関連する問題