Я хочу найти в текстовом файле по определенным ключевым словам, а затем создать словарь с абсолютным количеством и относительной частотой каждого ключевого слова. Я использую Counter () во вложенном цикле, который должен искать каждое ключевое слово в моем списке, а затем подсчитывать, как часто каждое из них появляется в документе. Но, хотя Counter правильно подсчитывает каждое ключевое слово, он затем умножает это количество на общее количество ключевых слов. Я думаю, что неправильно настраиваю свой вложенный цикл.
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk import FreqDist
import io
from collections import Counter
with io.open('copy.txt','r', encoding='utf-8') as tempFile:
rawText = tempFile.read()
rawText = rawText.lower()
cnt = Counter()
tokens = word_tokenize(rawText)
keywords = ['kingdom', 'phylum', 'class', 'status']
for keyword in keywords:
for keyword in tokens:
cnt[keyword] += 1
for keyword in keywords:
d = {'Keyword': keyword, 'Count': cnt[keyword], 'Frequency':cnt[keyword]/float(len(tokens))}
print(d)
Я должен увидеть:
{'Count': 2, 'Frequency': 0.000882223202470225, 'Keyword': 'kingdom'}
{'Count': 6, 'Frequency': 0.002646669607410675, 'Keyword': 'phylum'}
{'Count': 14, 'Frequency': 0.0061755624172915745, 'Keyword': 'class'}
{'Count': 2, 'Frequency': 0.000882223202470225, 'Keyword': 'status'}
Но вместо этого я вижу:
{'Count': 8, 'Frequency': 0.000882223202470225, 'Keyword': 'kingdom'}
{'Count': 24, 'Frequency': 0.002646669607410675, 'Keyword': 'phylum'}
{'Count': 56, 'Frequency': 0.0061755624172915745, 'Keyword': 'class'}
{'Count': 8, 'Frequency': 0.000882223202470225, 'Keyword': 'status'}