1

FreqDist によく使う上位 k 個の単語を入れたいです。または頻度> pを持つ単語。

どうすればいいですか?

ドキュメントを見た後、thresholdまたはのようなものは見つかりませんでしたcut。また、freq() 関数は、個々のビンごとにのみ呼び出すことができます。

もちろん、次のようなアドホック コードを書くこともできます。

[(x,f) for x in FreqDist.samples if FreqDist.freq(x) > p]

しかし、それはエレガントに見えません。

4

1 に答える 1

2

あなたが言及したドキュメントによると、FreqDistのdictのようなメソッド(、、keys()などitems())は、頻度の降順でソートされたサンプルおよび/またはそれらの頻度を返します。したがって、次のようなコードを使用して、十分に高い周波数のサンプルのみを除外できます。

above_p = []
for (x, f) in FreqDist.iteritems():
    if not f > p:
        break
    above_p.append((x, f))

またはワンライナー:

from itertools import takewhile
above_p = [(x, f) for (x, f) in takewhile(lambda x, f: f > p, FreqDist.iteritems())]

トップkについて:

top_k = FreqDist.items()[:k]

または:

from itertools import islice
top_k = list(islice(FreqDist.iteritems(), k))
于 2013-11-01T10:57:30.423 に答える