相关疑难解决方法(0)

高效地计算python中的单词频率

我想计算文本文件中所有单词的频率.

>>> countInFile('test.txt')
Run Code Online (Sandbox Code Playgroud)

{'aaa':1, 'bbb': 2, 'ccc':1}如果目标文本文件如下,则应返回:

# test.txt
aaa bbb ccc
bbb
Run Code Online (Sandbox Code Playgroud)

我在一些帖子之后用纯python实现了它.但是,由于文件大小(> 1GB),我发现纯python方式不足.

我认为借用sklearn的力量是一个候选人.

如果你让CountVectorizer计算每一行的频率,我猜你会通过总结每一列来获得字频率.但是,这听起来有点间接的方式.

使用python计算文件中单词的最有效和直接的方法是什么?

更新

我的(非常慢)代码在这里:

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) }
Run Code Online (Sandbox Code Playgroud)

python nlp word-count frequency-distribution scikit-learn

31
推荐指数
2
解决办法
2万
查看次数