词云 (Word Cloud)是对文本中出现频率较高的词语给予视觉化展示的图形, 是一种常见的文本挖掘的方法。

实例:

   

依赖包:

  # pip3 install wordcloud  jieba   matplotlib  imageio

wordcloud 模块介绍:

class  wordcloud.WordCloud(
  font_path=None, #(string)字体OTF or TTF路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf'
  width=400,#(int)输出画布的宽度,默认400像素
  height=200,(int) #输出画布的宽度,默认200像素
  margin=2, #(int)画布边缘留白的空隙,默认留白空间是2像素
  ranks_only=None,
  prefer_horizontal=0.9, #(float)词语水平方向排版出现的频率,默认 0.9 ,所以词语垂直方向排版出现频率为 0.1
  mask=None, #(nd-array or None) 是否使用mask(蒙板),默认不使用。若使用mask,则需提供一个二值化的mask(即只有0和1的黑白色mask),此时参数width和height会被忽略,单词会出现在mask非白色(#FFFFFF)的位置上。
  scale=1, #(float)在字段width和height乘以的倍数,最终呈现的画布尺寸以这个结果。默认是1,此方法适合需要呈现大尺寸的画布
  color_func=None,#(callable)生成新颜色的函数,默认为空。如果为空,则使用 self.color_func
  max_words=200, #(int)单词最多显示数量,默认200个
  min_font_size=4, #(int)单词最小尺寸,默认4像素
  stopwords=None,#(set of strings or None)设置需要屏蔽展示的词,如果为空,则使用内置的STOPWORDS。若使用generate_from_frequencies生成方式,则会忽略此参数
  random_state=None, #(int or None)为每个单词返回一个PIL颜色
  background_color='black', #(string)输出画布背景颜色,默认黑色
  max_font_size=None, #(int)单词最大尺寸,默认不限制
  font_step=1,#(int)字体步长,默认1。如果步长大于1,会加快运算但是可能导致结果出现较大的误差(这块确实不知道啥意思)
  mode='RGB', #(string) 颜色显示模式,默认”RGB”。当参数为“RGBA”并且background_color是None时,背景色为透明
  relative_scaling='auto', #(float)词频和字体大小的关联性(倍数)。默认是auto,即为0.5。若为0,只考虑单词的排列顺序;若为1,则单词展现的大小和出现的频率一致;若两者都考虑则可以设置为auto。若参数repeat=True,则此项为0
  regexp=None, #(string or None (optional))把文本切片的通用方法。若为空,则使用正则匹配r"\w[\w'];若使用generate_from_frequencies生成方式,则忽略此参数
  collocations=True,#(bool) 是否包含两个单词的搭配性,默认包含。若使用generate_from_frequencies生成方式,则忽略此参数
  colormap=None, #(string or matplotlib colormap)给每个单词随机分配颜色或者使用Matplotlib调色板,默认颜色是”viridis”即翠绿色。若使用了参数color_func,则忽略此项
  normalize_plurals=True, #(bool)是否去掉单词末尾的‘s’,默认去掉。若为真,并且单词以‘s’结尾(若以‘ss’结尾则不符合此规则),‘s’会被去除并且去除后的单词出现的频率会被统计。若使用generate_from_frequencies生成方式,则忽略此参数
  contour_width=0, #(float)mask轮廓线宽。若mask不为空且此项值大于0,就绘制出mask轮廓 (default=0)
  contour_color='black', #(color value) Mask轮廓颜色,默认黑色
  repeat=False #(bool)单词是否重复展示,默认不重复
)

程序代码:

import jieba     #jieba分词
import matplotlib.pyplot as plt #绘制图形
from imageio import imread #处理图像
from wordcloud import WordCloud,ImageColorGenerator #词云 #文本获取,利用jieba分词获取文本中的词
file=open('input.txt',encoding='UTF-8').read() #注意在指定路径中导入文本文件
word=' '.join(jieba.cut_for_search(file)) #词云背景图像获取
image=imread('test.jpg') # 解析该图片,注意在路径中导入图片 #词云设置
wc=WordCloud(
mode='RGBA', #设置透明底色
background_color=None,
mask=image, #词云形状设置为背景图像
max_words=100, #显示的词的最大个数
#font_path="C:\\Windows\\Fonts\\STFANGSO.ttf", #设置字体,否则中文可能会出现乱码
scale=3 #扩大三倍
) #生成词云
image_colors = ImageColorGenerator(image) # 基于背景颜色设置字体色彩
wc.generate(word) #根据文本生成词云 #显示
plt.imshow(wc) #显示词云图
plt.axis("off") #关闭坐标轴
plt.show() #显示窗口
wc.to_file('test.png') # 保存图片

Python3 装逼神器---词云(wordcloud)的更多相关文章

  1. scrapy-redis爬取豆瓣电影短评,使用词云wordcloud展示

    1.数据是使用scrapy-redis爬取的,存放在redis里面,爬取的是最近大热电影<海王> 2.使用了jieba中文分词解析库 3.使用了停用词stopwords,过滤掉一些无意义的 ...

  2. 词云wordcloud入门示例

    整体简介: 词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 基于Python的词云生成类库 ...

  3. 词云wordcloud类介绍&python制作词云图&词云图乱码问题等小坑

    词云图,大家一定见过,大数据时代大家经常见,我们今天就来用python的第三方库wordcloud,来制作一个大数据词云图,同时会降到这个过程中遇到的各种坑, 举个例子,下面是我从自己的微信上抓的微信 ...

  4. Python - 利用词云wordcloud,jieba和中国地图制作四大名著的热词图

    热词图很酷炫,也非常适合热点事件,抓住重点,以图文结合的方式表现出来,很有冲击力.下面这段代码是制作热词图的,用到了以下技术: jieba,把文本分词 wordcloud,制作热图 chardet,辨 ...

  5. 词云-wordcloud

    import jiebabook = "2015.txt"txt = open(book).read()ex = {'不是','就是','的话','1.1','docin','ww ...

  6. LESS使用方法简介(装逼神器)

    LESS 做为 CSS 的一种形式的扩展,它并没有阉割 CSS 的功能,而是在现有的 CSS 语法上,添加了很多额外的功能,所以学习 LESS 是一件轻而易举的事情,果断学习之! 变量 很容易理解: ...

  7. 我的第一个android应用——装逼神器《微博尾》

    继<微博尾>之<玩转尾巴>好玩尾巴积分版传送门:http://blog.csdn.net/love_5209/article/details/39473983 (本文andro ...

  8. vue装逼神器简述

    主要是分享下用vuejs开发项目过程中遇到的问题,vuejs开发的优势和需要注意的地方. 项目主要页面:主页,最新,分类,分类列表,详情页,结果页,斗图(列表,制作页) 效果图: 地址:https:/ ...

  9. 【python3】爬取简书评论生成词云

    一.起因: 昨天在简书上看到这么一篇文章<中国的父母,大都有毛病>,看完之后个人是比较认同作者的观点. 不过,翻了下评论,发现评论区争议颇大,基本两极化.好奇,想看看整体的评论是个什么样, ...

随机推荐

  1. PHP中的日期相关函数(三)

    之前我们已经介绍过了 PHP 的一些相关的日期操作对象,今天我们就来学习剩下的那些面向过程的使用方式.当然,如果是和 DateTime 类中相似的方法我们就不再进行介绍了.另外,Date() 和 ti ...

  2. C博客作业00--顺序分支结构

    这个作业属于哪个班级 C语言--网络2011/2012 这个作业的地址 C博客作业00--顺序分支结构 这个作业的目标 初步认识C语法,掌握数据表达.printf.scanf语法及分支结构内容 0.展 ...

  3. Docker系列(8)- 常用其他命令(1) | 日志、元数据、进程的查看

    后台启动容器 # 命令 docker run -d 镜像名 [root@localhost ~]# docker run -d centos #问题:docker ps,发现centos停止了 #常见 ...

  4. contos 7修改root密码

    https://www.linuxidc.com/Linux/2018-01/150211.htm 下面是CentOS 7的root密码修改 开机按esc 选择CentOS Linux (3.10.0 ...

  5. django安装DjangoUeditor富文本

    环境: pycharm,django1.11,python2.7 第一种:直接 pip install DjangoUeditor,直接从网上安装到pycharm 由于是直接安装,ueditor.ht ...

  6. css布局宽度自适应

    随着各种终端的不断涌现,网页中的元素适应不同的分辨率变得特别重要,根据经验,涉及到宽度自适应的一共有四种情况: 左端固定,右边自适应:右端固定,左边自适应:两端固定,中间自适应:中间固定,两端自适应. ...

  7. CF280C-Game on Tree【数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/CF280C 题目大意 \(n\)个点的一棵树,每次选择一个没有染色的点把它和它的子树染黑,求期望全部染黑的步数. 解 ...

  8. Maven----将手动下载的jar包以命令行的方式安装到本地MavenRepository中

    1.情景再现:准备实现SprintBoot的热部署功能,因没有对应jar时,在Eclipse中mvn install 会报错: 报错信息: [INFO] --- spring-boot-maven-p ...

  9. 【LeetCode】300.最长递增子序列——暴力递归(O(n^3)),动态规划(O(n^2)),动态规划+二分法(O(nlogn))

    算法新手,刷力扣遇到这题,搞了半天终于搞懂了,来这记录一下,欢迎大家交流指点. 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列是由数组派生而来的序列,删除(或不删 ...

  10. 11.4.5 LVS负载均衡常见工作模式总结以及ipvsadm

      NAT TUN DR RS any Tunneling Non-arp device RS network private LAN/WAN LAN RS number low(10-20) Hig ...