Нужно создать гистограмму в Python для корпуса - PullRequest
1 голос
/ 29 сентября 2011
import nltk
from nltk.book import *
from nltk.corpus import brown
corpus_text = brown.words()
word_freq = FreqDist(corpus_text)
word_hist = dict()

for k,v in word_freq.iteritems():
   if key in word_hist:
      word_hist[v] = word_hist[v] + 1
   else:
      word_hist[v] = 1 

print word_hist.viewkeys()
print word_hist.viewvalues()

Я делаю ошибку при обработке словаря здесь. Нужно создать словарь, который имеет это ключи как слова из freqdict и значения как номер соответствующего слова. как мне выполнить этот шаг?

Я уверен, что

      word_hist[v] = word_hist[v] + 1
   else:
      word_hist[v] = 1

есть ошибка.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011
from collections import defaultdict
word_hist = defaultdict(int)

for k,v in word_freq.iteritems():
    word_hist[v] +=1
1 голос
/ 29 сентября 2011

Конечно.Кажется, вы заменяете dict word_hist одним из его значений (плюс 1).Попробуйте

word_hist[v] = word_hist[v] + 1

или даже лучше

word_hist[v] += 1

.

РЕДАКТИРОВАТЬ: есть еще одна ошибка:

for k,v in word_freq.iteritems():
   if key in word_hist:
      word_hist[v] = word_hist[v] + 1
   else:
      word_hist[v] = 1

не имеет смысла.key проверяется на наличие в word_hist, но затем используется v.

Я не знаю, что такое key, но либо используйте k, либо v для обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...