私はPythonとNLTKの初心者です。チュートリアルから次のコードを実行しようとしています:
from nltk.corpus import gutenberg
from nltk import FreqDist
fd = FreqDist()
for Word in gutenberg.words('austen-sense.txt'):
fd.inc(Word)
これを実行すると、次のエラーが発生します。
AttributeError: 'FreqDist' object has no attribute 'inc'
私が間違っていることについて何か考えはありますか?
あなたはそのようにそれをするべきです:
fd[Word] += 1
ただし、通常、FreqDistは次のように使用されます。
fd = FreqDist(my_text)
こちらの例もご覧ください。
本の例をNLTK3.0に変更する方法をお探しの方へ:
import nltk
from nltk.corpus import brown
suffix_fdist = nltk.FreqDist()
for Word in brown.words():
Word = Word.lower()
suffix_fdist[Word[-1:]] +=1
suffix_fdist[Word[-2:]] +=1
suffix_fdist[Word[-3:]] +=1
common_suffixes = []
for suffix in suffix_fdist.most_common(100):
common_suffixes.append(str(suffix.__getitem__(0)))
print common_suffixes
一部の機能は非推奨になりました。
問題のコードはバージョンnltk2.0.4で動作します
https://pypi.python.org/pypi/nltk/2.0.4
バージョン2.0.4をインストールするには、次の手順に従います。
wget https://pypi.python.org/packages/source/n/nltk/nltk-2.0.4.Zip#md5=cbd04d8635f1358a69a38c4774be029c
7z x nltk-2.0.4.Zip
cd nltk-2.0.4 /
python setup.py install
インストールされているバージョンを確認するには、以下を実行します。
pip search nltk
Nltkの最新バージョンには株式会社がありません。むしろ私はアップデートを使用しました。
from nltk.corpus import gutenberg
from nltk import FreqDist
fd = FreqDist()
for Word in gutenberg.words('austen-sense.txt'):
fd.update([Word])
更新には反復可能なアイテムが必要です。したがって、更新関数で反復可能なアイテムを渡していることを確認してください。