一文带你掌握Python中文词频统计

  • Post category:Python

一文带你掌握Python中文词频统计

1. 导入必要的库

中文文本分词需要使用到中文分词库,而Python中比较流行的分词库是jieba,因此我们需要导入jieba库。

import jieba

2. 读取文本

读取要统计词频的文本,可以使用Python中的文件操作,将文件内容读取到一个字符串中。

with open('text.txt', 'r', encoding='utf-8') as f:
    text = f.read()

3. 分词并统计词频

使用jieba将文本分词,并统计词频。

word_counts = {}
words = jieba.cut(text, cut_all=False)    # 精确分词模式
for word in words:
    if len(word) < 2:    # 只统计长度大于等于2的词
        continue
    if word in word_counts:
        word_counts[word] += 1
    else:
        word_counts[word] = 1

4. 排序并输出结果

最后将词频排序并输出结果。

sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)    # 根据词频排序
for word, count in sorted_word_counts:
    print(word, count)

示例1:统计《红楼梦》的词频

import jieba

with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
    text = f.read()

word_counts = {}
words = jieba.cut(text, cut_all=False)
for word in words:
    if len(word) < 2:
        continue
    if word in word_counts:
        word_counts[word] += 1
    else:
        word_counts[word] = 1

sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_word_counts[:50]:    # 只输出前50个高频词
    print(word, count)

示例2:统计某个网站的词频

import requests
import jieba

url = 'https://www.example.com/'
r = requests.get(url)
text = r.content.decode('utf-8')

word_counts = {}
words = jieba.cut(text, cut_all=False)
for word in words:
    if len(word) < 2:
        continue
    if word in word_counts:
        word_counts[word] += 1
    else:
        word_counts[word] = 1

sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_word_counts[:50]:
    print(word, count)

以上是Python中文词频统计的完整攻略,按照上述步骤,你可以轻松地进行中文文本的词频统计。