2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【Python】文本文件生成词云图片-单字过滤和任意形状词云和清晰度提高

【Python】文本文件生成词云图片-单字过滤和任意形状词云和清晰度提高

时间:2018-11-09 14:20:45

相关推荐

【Python】文本文件生成词云图片-单字过滤和任意形状词云和清晰度提高

【Python】txt文本文件生成词云图片

资源提供纯方框,无文字单字过滤任意形状词云提高清晰度完整代码

该程序由pycharm运行,产生的图片文件在项目文件夹内。

资源提供

决胜全面建成小康社会txt下载链接,进入后右键另存页面为,即可得到txt文本

纯方框,无文字

查询知wordcloud默认是不支持显示中文的,中文会被显示成方框。

需要借助wordlcloud.WordCloud初始化函数的参数font_path,把支持中文的字体的路径传给font_path

查询知道,电脑字体保存系统盘的"Windows"文件中,找到"Fonts"文件夹里。C:\Windows\Fonts

所以在python程序中,我们就可以调用这个绝对路径。

import jiebaimport wordcloud#打开文件,记得采用utf-8编码解析中文文字f=open("C:/Users/Lenovo/AppData/Local/Temp/共产党宣言.txt","r", encoding="utf-8")#读取内容到tt =f.read()f.close()#采用jieba分词,结果为ls,其中含有很多单个字符ls =jieba.lcut(t)#下条主要是为了排除一个字符以下的词,没有这条文本将会分出都是单字。ls = [word for word in ls if len(word)>1]#下行代码将分好的列表词,转为空格分隔的字符串txt=" ".join(ls)#配置词云对象ww =wordcloud.WordCloud(font_path ="C:/Windows/Fonts/msyh.ttc",width= 1000,height =700, background_color ="white")#加载txt到词云对象中并输出结果为词云.pngw.generate(txt)w.to_file("词云.png")

单字过滤

ls = [word for word in ls if len(word)>1]# 该条主要是为了排除一个字符以下的词,没有这条文本将会分出都是单字。

添加这条语句后的结果为:

任意形状词云

wordcloud库通过mask方法,可以形成任意形状的词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:mask = imread(‘读取一张图片.png’),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。

想形成一个五角星,则需提供一个背景为白色的五角星图片。

需要引入一个库,imread方法能够读取一个图片文件,并且保存成一个图片文件变量。

通过设置max_words来限制显示的词云中单词数目。

from imageio import imreadmask=imread("fivestar.png")w=wordcloud.WordCloud(mask=mask,...)

还可以添加一些停用词

exclude={'我们','你们','他们','它们','因为','因而','所以','如果','那么',\'如此','只是','但是','就是','这是','那是','而是','而且','虽然','这些',\'有些','然后','已经','于是','一种','一个','一样','时候','没有','什么',\'这样','这种','这里','不会','一些','这个','仍然','不是','自己','知道',\'可以','看到','那儿','问题','一会儿','一点','现在','两个','三个'}w=wordcloud.WordCloud(stopwords=exclude,...)

添加停用词后的效果如图。

提高清晰度

通过配置scale来提高清晰度

w=wordcloud.WordCloud(scale=4,xxxx)

scale参数为空下,500X500,47.52kB

scale=2下,1000X1000,109.38kB

scale=4下,2000X2000,257.08kB

完整代码

import jiebaimport wordcloudfrom imageio import imread#配置背景图片mask=imread("C:/Users/Lenovo/Pictures/Saved Pictures/芳3.jpg")exclude={'我们','你们','他们','它们','因为','因而','所以','如果','那么',\'如此','只是','但是','就是','这是','那是','而是','而且','虽然','这些',\'有些','然后','已经','于是','一种','一个','一样','时候','没有','什么',\'这样','这种','这里','不会','一些','这个','仍然','不是','自己','知道',\'可以','看到','那儿','问题','一会儿','一点','现在','两个','三个'}#打开文件,记得采用utf-8编码解析中文文字f=open("C:/Users/lenovo/AppData/Local/Temp/共产党宣言.txt","r", encoding="utf-8")#读取内容到tt =f.read()f.close()#采用jieba分词,结果为ls,其中含有很多单个字符ls =jieba.lcut(t)#下条主要是为了排除一个字符以下的词,没有这条文本将会分出都是单字。ls = [word for word in ls if len(word)>1]#下行代码将分好的列表词,转为空格分隔的字符串txt=" ".join(ls)w =wordcloud.WordCloud(scale=2,stopwords=exclude,mask=mask,font_path= "C:/Windows/Fonts/msyh.ttc",width= 1000,height =700,background_color="white")w.generate(txt)w.to_file("词云.png")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。