Я хотел бы считать частоты всех слов в текстовом файле.
>>> countInFile('test.txt')
должен возвращать {'aaa':1, 'bbb': 2, 'ccc':1}
, если целевой текстовый файл похож:
# test.txt
aaa bbb ccc
bbb
Я реализовал его с чистым python после нескольких сообщений. Тем не менее, я обнаружил, что пути pure-python недостаточны из-за огромного размера файла ( > 1 ГБ).
Я думаю, что заимствование силы склеарна является кандидатом.
Если вы подсчитаете частоты CountVectorizer для каждой строки, я думаю, вы получите частоты слов, суммируя каждый столбец. Но это звучит немного косвенно.
Каков наиболее эффективный и простой способ подсчета слов в файле с помощью python?
Update
Мой (очень медленный) код находится здесь:
from collections import Counter
def get_term_frequency_in_file(source_file_path):
wordcount = {}
with open(source_file_path) as f:
for line in f:
line = line.lower().translate(None, string.punctuation)
this_wordcount = Counter(line.split())
wordcount = add_merge_two_dict(wordcount, this_wordcount)
return wordcount
def add_merge_two_dict(x, y):
return { k: x.get(k, 0) + y.get(k, 0) for k in set(x) | set(y) }