python 词频统计

img

在用python做词频统计,完成分词以后,统计的为什么还是句子呢?

因为你这样打开文件,本身传进去的就是多行数据,就是按照行进行统计的,你没有告诉他怎么切分行

先预处理一下,得到一个单词构成的一维数组

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在你的代码中,你是直接使用open函数打开文本文件,并将其作为参数传递给Counter函数进行计数的。在这种情况下,Counter会将整个文件看作一个字符串,并根据单个字符进行计数。
·
为了正确地进行词频统计,你需要先将文本文件中的每个句子或单词分开,并将它们作为一个单独的列表传递给Counter函数。你可以使用readlines函数将文本文件读入列表中,然后对于每个句子,你需要使用某种分词器将其拆分成单词。
·
下面是一个示例代码,可以将一个文本文件中的每个句子拆分成单词,并统计每个单词的出现次数:

import re
from collections import Counter

# 读入文本文件并将每个句子拆分成单词
with open('data/allwords.txt', 'r', encoding='utf-8') as f:
    text = f.read()
    sentences = re.findall('[\w\s]+[。?!]', text)

words = []
for sentence in sentences:
    words += re.findall('[\w]+', sentence)

# 统计每个单词的出现次数
wordcount = Counter(words)
print(wordcount.most_common(10))


这个示例代码使用正则表达式将文本文件中的每个句子提取出来,并将其拆分成单词。然后使用Counter函数对单词列表进行计数,最后输出出现次数最多的前10个单词及其出现次数。