https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html
词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
摘要:?当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,那么可以通过绘制WordCloud 词云图,通过关键词(高频词)就可视化直观地展示出来,非常方便。
环境搭建
1.基本环境
???????? ? 本文默认读者已经安装好如下包:matplotlib、numpy、PIL等库文件。使用的IDE可根据读者的喜好去用,此篇文章中,作者使用的是Anaconda下的spyder,Anaconda的安装与使用可以参见本博客作者的另一篇,Anaconda的安装与基本使用的教程,这里不在赘述。
????????github:https://github测试数据/amueller/word_cloud ;
????????官方地址:https://amueller.github.io/word_cloud/
2.wordcloud包的安装
安装whl文件:移步于此:https://HdhCmsTestlfd.uci.edu/~gohlke/pythonlibs/#wordcloud,点击下载与自己python环境版本相同的文件;
Python 中的词云用的是 wordcloud 包,安装方法:
pip?install?wordcloud conda?install?-c?conda-forge?wordcloud
?
wordcloud 类的定义如下所示:
class?WordCloud(object): ????def?__init__(self,?font_path=None,?width=400,?height=200,?margin=2, ?????????????ranks_only=None,?prefer_horizontal=.9,?mask=None,?scale=1, ?????????????color_func=None,?max_words=200,?min_font_size=4, ?????????????stopwords=None,?random_state=None,?background_color='black', ?????????????max_font_size=None,?font_step=1,?mode="RGB", ?????????????relative_scaling=.5,?regexp=None,?collocations=True, ?????????????colormap=None,?normalize_plurals=True): ??????????pass
?
常用的参数含义:
font_path?:?string?//字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path?=?'黑体.ttf' width?:?int?(default=400)?//输出的画布宽度,默认为400像素 height?:?int?(default=200)?//输出的画布高度,默认为200像素 prefer_horizontal?:?float?(default=0.90)?//词语水平方向排版出现的频率,默认?0.9?(所以词语垂直方向排版出现频率为?0.1?) mask?:?nd-array?or?None?(default=None)?//如果参数为空,则使用二维遮罩绘制词云。如果?mask?非空,设置的宽高值将被忽略,遮罩形状被?mask?取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic?=?imread('读取一张图片.png'),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。 scale?:?float?(default=1)?//按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。 min_font_size?:?int?(default=4)?//显示的最小的字体大小 font_step?:?int?(default=1)?//字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差。 max_words?:?number?(default=200)?//要显示的词的最大个数 stopwords?:?set?of?strings?or?None?//设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS background_color?:?color?value?(default=”black”)?//背景颜色,如??background_color='white',背景颜色为白色。 max_font_size?:?int?or?None?(default=None)?//显示的最大的字体大小 mode?:?string?(default=”RGB”)?//当参数为“RGBA”并且background_color不为空时,背景为透明。 relative_scaling?:?float?(default=.5)?//词频和字体大小的关联性 color_func?:?callable,?default=None?//生成新颜色的函数,如果为空,则使用?self.color_func regexp?:?string?or?None?(optional)?//使用正则表达式分隔输入的文本 collocations?:?bool,?default=True?//是否包括两个词的搭配 colormap?:?string?or?matplotlib?colormap,?default=”viridis”?//给每个单词随机分配颜色,若指定color_func,则忽略该方法。 fit_words(frequencies)??//根据词频生成词云 generate(text)??//根据文本生成词云 generate_from_frequencies(frequencies[,?...])???//根据词频生成词云 generate_from_text(text)????//根据文本生成词云 process_text(text)??//将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的???fit_words(frequencies)?) recolor([random_state,?color_func,?colormap])???//对现有输出重新着色。重新上色会比重新生成整个词云快很多。 to_array()??//转化为?numpy?array to_file(filename)???//输出到文件
?
中文文本需要通过分词获得单个的词语,对中文分词还会用到一个包 jieba , jieba 是优秀的中文分词第三方库,需要额外安装:
pip install jieba
如果要生成中文词云,那么还需要加字体 “ font_path= r'C:\Windows\Fonts\simfang.ttf' ”。
#!/usr/bin/env?python """ Minimal?Example =============== 使用默认参数根据美国宪法生成方形的词云 """ from?os?import?path from?wordcloud?import?WordCloud d?=?path.dirname(__file__) #?读取整个文本 text?=?open(path.join(d,?'./temp/constitution.txt')).read() #?生成一个词云图像 wordcloud?=?WordCloud().generate(text) #?matplotlib的方式展示生成的词云图像 import?matplotlib.pyplot?as?plt plt.imshow(wordcloud,?interpolation='bilinear') plt.axis("off") #max_font_size设定生成词云中的文字最大大小 #width,height,margin可以设置图片属性 #?generate?可以对全部文本进行自动分词,但是他对中文支持不好 wordcloud?=?WordCloud(max_font_size=66).generate(text) plt.figure() plt.imshow(wordcloud,?interpolation="bilinear") plt.axis("off") plt.show()
?
import?os from?os?import?path from?wordcloud?import?WordCloud from?matplotlib?import?pyplot?as?plt #?获取单前文件路径 d?=?path.dirname(__file__)?if?"__file__"?in?locals()?else?os.getcwd() #?获取文本text text?=?open(path.join(d,?'./temp/legend1900.txt')).read() #?生成词云 wc?=?WordCloud(scale?=?2,?max_font_size?=?100) wc.generate_from_text(text) #?显示图像 plt.imshow(wc,?interpolation?=?'bilinear') plt.axis('off') plt.tight_layout() #?存储图像 wc.to_file('1900_basic.png') #?or #?plt.savefig('1900_basic.png',?dpi?=?200) plt.show()
?
About Me
........................................................................................................................
● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除
● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://HdhCmsTestcnblogs测试数据/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新
● 本文itpub地址: http://blog.itpub.net/26736162
● 本文博客园地址: http://HdhCmsTestcnblogs测试数据/lhrbest
● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/
● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/
● DBA宝典今日头条号地址: http://HdhCmsTesttoutiao测试数据/c/user/6401772890/#mid=1564638659405826
........................................................................................................................
● QQ群号: 230161599 (满) 、618766405
● weixin群:可加我weixin,我拉大家进群,非诚勿扰
● 联系我请加QQ好友 ( 646634621 ) ,注明添加缘由
● 于 2019-05-01 06:00 ~ 2019-05-30 24:00 在魔都完成
● 最新修改时间:2019-05-01 06:00 ~ 2019-05-30 24:00
● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
........................................................................................................................
● 小麦苗的微店 : https://weidian测试数据/s/793741433?wfr=c&ifr=shopdetail
● 小麦苗出版的数据库类丛书 : http://blog.itpub.net/26736162/viewspace-2142121/
● 小麦苗OCP、OCM、高可用网络班 : http://blog.itpub.net/26736162/viewspace-2148098/
● 小麦苗腾讯课堂主页 : https://lhr.ke.qq测试数据/
........................................................................................................................
使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。
........................................................................................................................
?
?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2645216/,如需转载,请注明出处,否则将追究法律责任。