2014-09-17 4 views
0

Utilisation de nltk (déjà importé). Jouer avec gutenberg corpusTracé du ConditionalFreqDist d'un livre

import nltk 
from nltk.corpus import gutenberg 

testé la fileids, pour trouver celui que je pouvais jouer avec:

gutenberg.fileids() 

J'ai fait un petit code pour trouver les mots les plus courants (afin de choisir quelques-unes pour le graphique)

kjv_text = nltk.Text(kjv) 

from collections import Counter 
for words in [kjv_text]: 
    c = Counter(words) 
print c.most_common()[:100] # top 100 

kjv_text.dispersion_plot(["LORD", "God", "Israel", "king", "people"]) 

Jusqu'à ici, cela fonctionne parfaitement. Ensuite, je tente de mettre en œuvre les ConditionalFreqDist, mais je reçois des tas d'erreurs:

cfd2 = nltk.ConditionalFreqDist((target, fileid['bible-kjv.txt']) 
          for fileid in gutenberg.fileids() 
          for w in gutenberg.words(fileid) 
          for target in ['lord'] 
          if w.lower().startswith(target)) 
cfd2.plot() 

J'ai essayé de changer quelques petites choses, mais toujours obtenir quelques erreurs. Des experts qui peuvent me dire ce que je fais mal?

Merci

Répondre

1

Voici ce qui était erroné:

Le fileid dans:

cfd2 = nltk.ConditionalFreqDist((target, fileid['bible-kjv.txt']) 

doit faire référence à quel élément il est (dans ce cas, le 4e sur la liste des textes Gutemberg. Donc, la ligne devrait plutôt dire:

cfd2 = nltk.ConditionalFreqDist((target, fileid[3])