Ответ 1
Вы должны сделать это так:
fd[word] += 1
Но обычно FreqDist используется следующим образом:
fd = FreqDist(my_text)
Также посмотрите примеры здесь:
Я новичок в 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)
Также посмотрите примеры здесь:
Некоторые из функций устарели.
Этот код работает над версией nltk 2.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
Чтобы проверить, какая версия установлена, выполните следующие действия:
pip search nltk
Для людей, которые ищут, как изменить пример книги в NLTK 3.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
В последней версии nltk нет inc. Скорее я использовал обновление.
from nltk.corpus import gutenberg
from nltk import FreqDist
fd = FreqDist()
for word in gutenberg.words('austen-sense.txt'):
fd.update([word])
Обновление принимает итеративный элемент. Поэтому убедитесь, что вы передаете повторяющийся элемент в функции обновления.