nltk 単語の出現回数頻度

今思えばこれを最初にすべきですよね。笑

単語の出現頻度を調べるのは最も基本的なことだと思います。
Pythonではdictを使えば簡単にできます。
他の言語でもMapだとかがあると思うのでそれ使えばできるでしょう。

nltkにもFreqDistというものがあります。
さらにそこから各単語の出現確率を最尤推定(MLE)できるMLEProbDistまで使い方をメモ。

1.text -> FreqDist

#fileから読む
text = nltk.filestring(open(filename))
word_tok = nltk.word_tokenize(text)
freqdist = nltk.FreqDist(word_tok)

これでFreqDistが作れます。品詞を使うかはお好みで。
2.FreqDist -> MLEProbDist
FreqDistから各単語の出現確率をMLEします。
MLEといっても各単語の出現回数を全単語数で割ればいいです。
(なぜこうなのかはまた後日
なので普通の辞書であれば

N = sum(dict.values())
for key in dict:
    dict[key] /= N

なんてしてやればOKです。
MLEProbDistを使うと

mleprobdist = nltk.MLEProbDist(freqdist)

これでOKです。freqdistを渡してやればあとはNormalizeしてくれます。

まとめ

簡単に出現頻度の辞書が作れる。
MLEProbDistだけでなくUniformProbDistやらいろいろなProbDistがあります。
おもしろいですねー。
さらに便利だと思ったのはnltk.ConditionalFreqDistですね。
これについてはまた書きたいと思います。書かないかもしれませんが。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中