【Python】文本词频统计

第一步:分解并提取单词/词语

对于英文:
同一个单词会存在大小写的不同形式,但计数却不能区分大小写,于是可以通过 string.lower() 将字母编程小写,排除原文大小写差异对词频统计的干扰。
英文单词的分隔可以是空格、标点符号或特殊符号,为统一分隔方式,可以将各种特殊字符和标点符号使用 string.replace() 方法替换成空格,再提取单词。
对于中文:
中文文章需要分词才能进行词频统计,于是需要用到 jieba 库。

第二步:计数

假设将单词/词语保存在变量 word 中,使用一个字典类型 counts={},统计单词的出现次数可以这样写:

if word in counts:
    counts[word] = counts[word] + 1
else:
    counts[word] = 1

上述逻辑可以简化为一句话:

counts[word] = counts.get(word, 0) + 1

第三步:排序

由于字典类型没有顺序,需要将其转换成有顺序的列表类型,再使用 sort() 方法和 lambda 函数配合实现根据单词出现的次数对元素进行排序。

items = list(counts(items))
items.sort(key=lambda x:x[1], reverse=True)

完整的代码举例

你可能感兴趣的:(Python)