使用Python实现中文词频词云展示
发布时间:2023-12-17 05:03:19
要使用Python实现中文词频词云展示,首先需要安装相应的库。
1. 安装jieba库:jieba是一个中文分词库,可以将文本分割成词语。
pip install jieba
2. 安装wordcloud库:wordcloud库是一个用于生成词云的库,可以根据词语的频率生成词云图。
pip install wordcloud
实现步骤如下:
1. 导入所需的库。
import jieba import wordcloud import matplotlib.pyplot as plt from PIL import Image import numpy as np
2. 读取文本数据。
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
3. 使用jieba库对文本进行分词。
words = jieba.cut(text)
4. 统计每个词语的出现次数。
word_counts = {}
for word in words:
if word not in word_counts:
word_counts[word] = 1
else:
word_counts[word] += 1
5. 根据词频生成词云图。
mask = np.array(Image.open('mask.png')) # 导入词云图形状的遮罩图片
wc = wordcloud.WordCloud(
font_path='font.ttf', # 字体文件路径
mask=mask,
background_color='white', # 背景颜色
max_words=200, # 最大显示词数
)
wc.generate_from_frequencies(word_counts) # 根据词频生成词云图
6. 显示词云图。
plt.figure(figsize=(10, 6))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off') # 隐藏坐标轴
plt.show()
完整的例子如下:
import jieba
import wordcloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
# 读取文本数据
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba库对文本进行分词
words = jieba.cut(text)
# 统计每个词语的出现次数
word_counts = {}
for word in words:
if word not in word_counts:
word_counts[word] = 1
else:
word_counts[word] += 1
# 根据词频生成词云图
mask = np.array(Image.open('mask.png')) # 导入词云图形状的遮罩图片
wc = wordcloud.WordCloud(
font_path='font.ttf', # 字体文件路径
mask=mask,
background_color='white', # 背景颜色
max_words=200, # 最大显示词数
)
wc.generate_from_frequencies(word_counts) # 根据词频生成词云图
# 显示词云图
plt.figure(figsize=(10, 6))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off') # 隐藏坐标轴
plt.show()
上述代码中的text.txt是待处理的文本文件,mask.png是词云图形状的遮罩图片,font.ttf是字体文件,可以根据需求自行更改。
使用以上代码可以实现中文词频词云展示,通过词云图可以直观地了解文本中词语的频率和分布情况。
