python经典小程序-词云制作Python小程序-让你的文字颜值炸裂

知乎专栏:人工智能小技巧,所有文章欢迎转载!转载请注明出处!

作者:张子豪(同济大学在读研究生)

Bilibili视频:同济子豪兄

2019-2-13发布

概述应用场景效果预览小程序界面基本原理源代码

概述

本文介绍了词云制作小程序V1.0的产品需求、应用场景、技术原理、源代码。 从远古山洞壁画到微信表情包,人类千百年来始终都是懒惰的视觉动物。面对连篇累牍的大段文本,人们会觉得枯燥乏味。在这个"颜值即正义”的时代,如何提高数据展示的"颜值”,对大数据进行可视化,显得尤为重要。

词云是文本大数据可视化的重要方式,可以将大段文本中的关键语句和词汇高亮展示。

词云制作小程序V1.0,可以对用户输入的大段文字自动进行词频统计,按关键词绘制词云。

应用场景

会议记录

海报制作

PPT制作

生日表白

数据挖掘

情感分析

用户画像

微信聊天记录分析

微博情感分析

Bilibili弹幕情感分析

年终总结

效果预览

cf9610fbf1c6

五角星词云

cf9610fbf1c6

中国地图词云

cf9610fbf1c6

i句子云

小程序界面

cf9610fbf1c6

image

cf9610fbf1c6

image

cf9610fbf1c6

image

基本原理

这个小程序调用了Python开源社区提供的几个优秀的第三方库:

jieba:中文分词。比如,将字符串"改革春风吹满地”分词成列表['改革', '春风', '吹', '满地']。

wordcloud:词云图片生成。

easygui:用户图形界面(GUI)制作,基于tkinter开发,包括文本输入框、按钮、文件目录选取、词云图片实时预览。

pyinstaller:将python脚本文件打包成exe可执行文件,可以跨操作系统执行。

pil:图像处理。

numpy:科学计算。

scipy:科学计算与图像处理。

源代码

import wordcloud

import easygui as g

import imageio

import jieba

?

hellomessage = '''

欢迎来到词语制作小程序V1.0!

?

?

作者:同济大学开源软件协会 Tommy

Github:https://github.com/TommyZihao

'''

?

g.msgbox("欢迎来到词云制作小程序!",image="example2.png",ok_button="开始制作词云!",title="词云制作小程序-张子豪")

?

?

choices = ["默认设置,词云背景为黑色","默认设置,词云背景为白色","自定义制作"]

reply = g.choicebox("请选择词云制作方式",choices=choices,title="选择词云制作方式")

?

get = "not ok"

s = "粘贴到这里即可"

message ='''

?

?

参考文本(打开网页ctrl+A全选,ctrl+C复制):

?

《三国演义》全文:https://0x9.me/hZUNS

《哈姆雷特(英文版)》全文:https://0x9.me/C7Yhi

《十九大报告》全文:https://0x9.me/zbW12

《关于实施乡村振兴战略的意见》全文:https://0x9.me/jlrVH

'''

?

if reply == "默认设置,词云背景为黑色":

while get != "ok":

s = g.textbox(msg="输入希望用词云展示的文本,直接复制粘贴到下方文本框内即可"+message,title="输入文本",text=s)

c = wordcloud.WordCloud(background_color="black",font_path='msyh.ttc')

b = g.buttonbox("生成词云还是句子云?",choices=("词云","句子云"),title="分词分句选择")

if b == "词云":

s = " ".join(jieba.lcut(s))

c.generate(s)

c.to_file("temp.png")

a = g.buttonbox("生成的词云如下,还顺眼吗?",image="temp.png",choices=("可以,另存为","不行,重新修改"),title="词云图片成功生成!")

if a =="可以,另存为":

get = "ok"

path = g.filesavebox(default=".png")

c.to_file(path)

elif reply == "默认设置,词云背景为白色":

while get != "ok":

s = g.textbox(msg="输入希望用词云展示的文本,直接复制粘贴到下方文本框内即可"+message,title="输入文本",text=s)

c = wordcloud.WordCloud(background_color="white",font_path='msyh.ttc')

b = g.buttonbox("生成词云还是句子云?",choices=("词云","句子云"),title="分词分句选择")

if b == "词云":

s = " ".join(jieba.lcut(s))

c.generate(s)

c.to_file("temp.png")

a = g.buttonbox("生成的词云如下,还顺眼吗?",image="temp.png",choices=("可以,另存为","不行,重新修改"),title="词云图片成功生成!")

if a =="可以,另存为":

get = "ok"

path = g.filesavebox(default=".png")

c.to_file(path)

elif reply == "自定义制作":

get2 = "not ok"

while get != "ok" and get2 !="ok":

s = g.textbox(msg="输入希望用词云展示的文本,直接复制粘贴到下方文本框内即可"+message,title="输入文本",text=s)

while get2 != "ok":

msg = "请设置词云制作样式,不填表示采用默认参数"

title = "自定义词云制作"

fieldNames = [" 词云图片宽(默认600)"," 词云图片高(默认400)","最小字号(默认0)","最大字号(默认90)","字体变化步进(默认1)","字体文件(默认msyh.ttc)","最大显示词数(默认200)","背景颜色的英文(默认white)","是否按模板图片的形状生成词云(0为否,1为是)","要丢弃的词语(用空格分开)","显示句子云效果还是词语云效果(0为句子云,1为词语云)"]

moren = [600,400,0,90,1,"msyh.ttc",500,"white",0,"",0]

fieldValues = g.multenterbox(msg,title, fieldNames)

fieldValues2 = [i for i in range(len(fieldNames))]

for i in range(len(fieldValues)):

if fieldValues[i] == '':

fieldValues2[i] = moren[i]

else:

fieldValues2[i] = fieldValues[i]

fieldValues2[9] = set(fieldValues2[9].split(" "))

st = fieldValues2

print("集合st的值为{}".format(st))

for i in [0,1,2,3,4,6]:

st[i] = int(st[i])

if st[8] == "1":

imagepath = g.fileopenbox(title="选择模板图片")

mk = imageio.imread(imagepath)

c = wordcloud.WordCloud(width=st[0],height=st[1],min_font_size=st[2],max_font_size=st[3],font_step=st[4],font_path=st[5],mask=mk,max_words=st[6],stopwords=st[9],background_color=st[7])

else:

c = wordcloud.WordCloud(width=st[0],height=st[1],min_font_size=st[2],max_font_size=st[3],font_step=st[4],font_path=st[5],max_words=st[6],stopwords=st[9],background_color=st[7])

if st[10] == "1":

final_text = " ".join(jieba.lcut(s))

if st[10] == "0":

final_text = s

c.generate(final_text)

c.to_file("temp.png")

a = g.buttonbox("生成的词云如下,还顺眼吗?",image="temp.png",choices=("可以,另存为","不行,重新输入文本","不行,重新修改样式设置"),title="词云图片成功生成!")

if a =="可以,另存为":

get = "ok"

get2 = "ok"

path = g.filesavebox(default=".png")

c.to_file(path)

elif a=="不行,重新输入文本":

break

elif a == "不行,重新修改样式设置":

get == "ok"

continue

c = wordcloud.WordCloud(width=1000,height=700,min_font_size=10,max_font_size=20,font_step=2,font_path='msyh.ttc',mask=mk,max_words=20,stopwords={"Python"},background_color="white")

?

goodbyemessage = '''

关于这个小程序

?

这个小程序基于Python的下列第三方库开发:

?

wordcloud:词云生成

?

jieba:中文分词

?

easygui:用户图形界面(GUI)开发

?

scipy:科学计算、图像处理

?

基本原理:对用户输入的字符串进行中文分词、词频统计、词云高级设置与图像输出

?

作者:同济大学开源软件协会 Tommy

Github:https://github.com/TommyZihao

?

知乎专栏:人工智能小技巧

?

简书专栏:人工智能小技巧

?

Bilibili视频:同济子豪兄

?

特别鸣谢:中国大学MOOC Python语言程序设计 北京理工大学 嵩天老师团队

'''

g.textbox(msg="欢迎使用,下次再见!",title="词云制作小程序",text=goodbyemessage,run=True)

g.msgbox("下次再见!",image="example3.png",title="词云制作小程序")

?

作者介绍:

张子豪,同济大学在读研究生。微信公众号、知乎专栏:人工智能小技巧。

自媒体人工智能小技巧由同济大学在读研究生张子豪于2018年11月创立。包括微信公众号、知乎专栏、简书专栏、Bilibili视频专栏等。致力于用通俗易懂的大白话帮助零基础非计算机专业的初学者快速掌握人工智能、大数据可视化、区块链、Python趣味编程、树莓派智能硬件等前沿科技知识,并手把手指导新手迅速上手开发实战项目。

微信公众号:人工智能小技巧

Bilibili视频:同济子豪兄

Github代码仓库:TommyZihao

cf9610fbf1c6

image

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值