nltkのソースを読む | (1) nltk.probability

こんばんは。
眠れないのでnltkのソースを読もうと思います。

今回のターゲットはnltk.probabiltyです。
本で学んでいると何かと謎の多い確率分布ですが、実際どう使ってるのか、というのを少しでもかいま見れたら成功です。
まぁ寝る前のちょっとしたお楽しみということで固くならずに読もうと思います。

さて、いずれは全部読むつもりですが、今回はFreqDistとMLEProbDistを読もうと思います。
基本的に使うのがこの二つだと思うからです。
そして使うコーパスはnltk.corpus.brownです。

まぁipythonを起動してこんな感じでことを進めましょう。

import nltk
fd = nltk.FreqDist(nltk.corpus.brown.words())

これで単語数なんかが出せちゃいます。
便利なものです。
ここは別に読むべきソースもないので、割愛します。
次に

mlefd = nltk.MLEProbDist(fd)

これで最尤推定したことになります。
便利なものですねぇ。
MLEProbDistのソース(以下)を読むとわかるのですが、こいつ、実はなにもしていません。

749: def prob(self, sample): 
750:     return self._freqdist.freq(sample)   

最尤推定はそのsampleの出現回数を総単語数で割ってやればいいので(後日書けたらいいなぁ)、結局いわゆる単語の頻度と同じなのです。
なのでMLEさんは指定されたsampleの頻度を返しています。実際

In [23]: fd.freq("The")
Out[23]: 0.006250473651213581
In [25]: mlefd.prob("The")
Out[25]: 0.006250473651213581

次はELEですかね。今から読もうかな。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中