2014-09-13 16 views
10

Sono un principiante in Python e NLTK. Sto cercando di eseguire il codice da un tutorial:AttributeError: l'oggetto 'FreqDist' non ha attributo 'inc'

from nltk.corpus import gutenberg 
from nltk import FreqDist 

fd = FreqDist() 

for word in gutenberg.words('austen-sense.txt'): 
    fd.inc(word) 

Se corro questo ricevo il seguente errore:

AttributeError: 'FreqDist' object has no attribute 'inc' 

Qualsiasi idea di cosa sto facendo male?

risposta

15

si dovrebbe fare in questo modo:

fd[word] += 1 

Ma di solito FreqDist viene usato in questo modo:

fd = FreqDist(my_text) 

guardare gli esempi anche qui:

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

+0

GRAZIE .... Ha funzionato. – user2763487

+0

C'è una pagina wiki, https://github.com/nltk/nltk/wiki/Porting-your-code-to-NLTK-3.0, che elenca le modifiche dell'interfaccia – user799188

0

Ultima versione di nltk non ha inc. Piuttosto ho usato l'aggiornamento.

from nltk.corpus import gutenberg 
from nltk import FreqDist 

fd = FreqDist() 

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

L'aggiornamento richiede l'articolo iterabile. Quindi assicurati di passare l'oggetto iterabile nella funzione di aggiornamento.

1

Per le persone in cerca di come cambiare l'esempio al 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 
Problemi correlati