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']