ConditionalFreqDist

「入門自然言語処理」p.65より。男女の名前における末尾の1文字の頻度分布を求める

names = nltk.corpus.names

>>> cfd = nltk.ConditionalFreqDist(
... (fileid,name[-1])
... for fileid in names.fileids()
... for name in names.words(fileid))
>>> cfd.plot()

cfd作るところの2行目(fileid,name[-1])は(条件、事象)。

男女別にそれぞれがリストに持つ名前から、末尾の1文字に対する頻度分布(FreqDist)を作っている。ここでは条件が男女の2つなので2つの頻度分布をおのおの作るだけ。

maleの頻度分布だけを得るなら以下の式で。上の式との対応関係が見えてきたような。

>>> cfd_male = nltk.FreqDist([name[-1] for name in names.words('male.txt')])