欢迎访问宙启技术站
智能推送

使用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是字体文件,可以根据需求自行更改。

使用以上代码可以实现中文词频词云展示,通过词云图可以直观地了解文本中词语的频率和分布情况。