私が持っているデータの困惑を計算しようとしています。私が使用しているコードは次のとおりです。
import sys
sys.path.append("/usr/local/anaconda/lib/python2.7/site-packages/nltk")
from nltk.corpus import brown
from nltk.model import NgramModel
from nltk.probability import LidstoneProbDist, WittenBellProbDist
estimator = lambda fdist, bins: LidstoneProbDist(fdist, 0.2)
lm = NgramModel(3, brown.words(categories='news'), True, False, estimator)
print lm
しかし、私はエラーを受け取っています、
File "/usr/local/anaconda/lib/python2.7/site-packages/nltk/model/ngram.py", line 107, in __init__
cfd[context][token] += 1
TypeError: 'int' object has no attribute '__getitem__'
私はすでに持っているデータに対して潜在的ディリクレ配分を実行し、ユニグラムとそれぞれの確率を生成しました (データの合計確率の合計が 1 であるため、それらは正規化されています)。
私のユニグラムとその確率は次のようになります。
Negroponte 1.22948976891e-05
Andreas 7.11290670484e-07
Rheinberg 7.08255885794e-07
Joji 4.48481435106e-07
Helguson 1.89936727391e-07
CAPTION_spot 2.37395965468e-06
Mortimer 1.48540253778e-07
yellow 1.26582575863e-05
Sugar 1.49563800878e-06
four 0.000207196011781
これは、私が持っているユニグラム ファイルのほんの一部です。約 1000 行にわたって同じフォーマットが使用されます。合計確率 (2 列目) は 1 になります。
私は新進のプログラマーです。この ngram.py は nltk パッケージに属しており、これを修正する方法について混乱しています。ここにあるサンプル コードは nltk のドキュメントからのもので、今何をすべきかわかりません。私にできることを手伝ってください。前もって感謝します!