小王子词云图的生成

源代码:

# TODO 读取《小王子》中文版文本文件,并生成词云图

# 导包
import re
import jieba
import numpy as np
import pandas as pd
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image

zh_pattern = re.compile(u'[\u4e00-\u9fa5]+')
# TODO 1 读取《小王子》中文版文本文件
file = open('《小王子》中文版.txt', 'r', encoding='ansi')
content = file.read()
file.close()

# TODO 2 统计词频
# 2.1 选取停用词(停用词来自 中文停用词表)
stat = []
stop_words = set()
with open('cn_stopwords.txt', 'r', encoding='utf-8') as f:
    for line in f:
        stop_words.add(line.strip())
    # 2.2 去除停用词,并进行jieba分词
segs = jieba.cut(content)
for seg in segs:
    if zh_pattern.search(seg):
        if seg not in stop_words:
            stat.append({'from': '小王子', 'word': seg})

stat_df = pd.DataFrame(stat)
pt_stat = stat_df.pivot_table(index='word', columns='from', fill_value=0, aggfunc=np.size)

# TODO 3 读取小王子背景图片并转换为灰度图像(可视化部分)
mask_image = np.array(Image.open("BackGround.png").convert("L"))

# TODO 4 创建词云对象 (设置字体,颜色,背景图)
cloud = WordCloud(font_path='C:\\simhei.ttf', background_color='white', colormap='Paired', mask=mask_image)
cloud.fit_words(pt_stat['小王子'].to_dict())

# TODO 5 显示词云图
plt.figure(figsize=(5, 5))  # 设置画布大小
plt.imshow(cloud)
plt.axis('off')  # 不显示坐标轴
plt.show()

实现效果:

 

细节说明:

背景图片,停用词表,文档都放在一个文件夹之下(否则源代码的路径就要进行修改)

对于图片的要求,尽量是底色和图片区分较大(抠图抠出来的会更好)

对于exe可执行文件的生成,可以安装pyinstaller库

pip install  pyinstaller

 pyinstaller -F -w 文件名.py #把这个文件转换为exe文件 

 生成的exe文件,在dist文件夹下

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值