Мне нужно прочитать файл mbox.txt и найти его распределение по частоте слов, используя nltk.FreqDist()
, а затем вернуть список из десяти наиболее часто встречающихся слов.Однако сначала мне нужно:
- Лемматизировать слова
- удалить стоп-слова
- Сохранять только английские термины
- Хранить только термины, принадлежащиеДесять наиболее частых частей речи.
Пример выходных данных:
[('received', 16176), ('id', 12609), ('source', 10792), ('tue', 4498), ('mon', 3686), ('date', 3612), ('sakai', 3611), ('murder', 3594), ('cyrus', 3594), ('postfix', 3594)]
Код, который я написал, -
import nltk, re
from nltk.stem.wordnet import WordNetLemmatizer
from nltk import word_tokenize
tokens = nltk.word_tokenize(open('mbox.txt').read())
lmtzr = nltk.WordNetLemmatizer()
lemmatized = [[lmtzr.lemmatize(word) for word in word_tokenize(t)]
for t in tokens]
fdist1 = nltk.FreqDist(tokens)
fdist1.most_common(10)
, и у меня есть выводэто:
[(':', 67406), ('--', 43761), (')', 40168), ('(', 40160), ('2007', 22447), ('@', 22019), (';', 21582), (',', 18632), ('from', 16328), ('by', 16231)]
Я действительно не знаю, что я делаю неправильно.Может кто-нибудь сказать мне, что мне не хватает?