一文带你掌握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中文词频统计的完整攻略,按照上述步骤,你可以轻松地进行中文文本的词频统计。