nltkでbigramを共起語カウントする

やり方を忘れてたので、復習にやってみた。

入力はリスト

In [49]: tokens = ['I', 'am', 'a', 'stupid', '.', 'You', 'are', 'a', 'stupid', '.', 'he', 'is', 'a', 'stupid', '.']

In [50]: corpus = nltk.Text(tokens)

bigramクラスのインスタンスができあがる。

In [52]: bigrams = nltk.bigrams(corpus)

頻度カウントをしてくれる。cfdはdictっぽく利用できる。

In [53]: cfd = nltk.ConditionalFreqDist(bigrams)

In [54]: cfd['a'] Out[54]: FreqDist({'stupid': 3})

viewitems()メソッドを使うと、bigram一覧と頻度を見ることができる。

In [62]: cfd.viewitems() Out[62]: dict_items([('a', FreqDist({'stupid': 3})), ('I', FreqDist({'am': 1})), ('is', FreqDist({'a': 1})), ('am', FreqDist({'a': 1})), ('.', FreqDist({'You': 1, 'he': 1})), ('stupid', FreqDist({'.': 3})), ('are', FreqDist({'a': 1})), ('You', FreqDist({'are': 1})), ('he', FreqDist({'is': 1}))])

keyだけを確認したければ、keys()メソッドを使う。

In [64]: cfd.keys() Out[64]: ['a', 'I', 'is', 'am', '.', 'stupid', 'are', 'You', 'he']