AttributeError: объект 'FreqDist' не имеет атрибута 'inc'

Я новичок в 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'

Любая идея, что я делаю неправильно?

Ответ 1

Вы должны сделать это так:

fd[word] += 1

Но обычно FreqDist используется следующим образом:

fd = FreqDist(my_text)

Также посмотрите примеры здесь:

http://www.nltk.org/book/ch01.html

Ответ 2

Некоторые из функций устарели.

Этот код работает над версией 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

enter image description here

Ответ 3

Для людей, которые ищут, как изменить пример книги в 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

Ответ 4

В последней версии nltk нет inc. Скорее я использовал обновление.

from nltk.corpus import gutenberg
from nltk import FreqDist

fd = FreqDist()

for word in gutenberg.words('austen-sense.txt'):
    fd.update([word])

Обновление принимает итеративный элемент. Поэтому убедитесь, что вы передаете повторяющийся элемент в функции обновления.