什么是词云呢?

词云就是一些关键词组成的一个图片。大家在网上经常看到,下面看一些例子:

那用python生成一个词云的话怎么办呢,首先要有一些词,咱们随便找个吧,用see you again的歌词好了,放到again.txt里面,放着待会咱们用。

然后呢,咱们用 wrodcloud这个模块,他可以实现分词,生成咱们想要的词云图片,直接使用pip install wordcloud安装即可。

过程呢,就是先读取到歌词,然后给WordCloud,让他帮咱们分词,分词的意思就是把里面的一些关键词提取出来,以及指定图片的大小,背景颜色,字体等等,废话不多说,直接上代码。

 
1
2
3
4
5
6
7
8
9
10
11
from wordcloud import WordCloud #导入词云模块
words = open('again.txt',encoding='utf-8').read()#打开歌词文件,获取到歌词
wordcloud = WordCloud(width=1000, #图片的宽度
  height=860,  #高度
  margin=2, #边距
  background_color='black',#指定背景颜色
  font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了
  )
wordcloud.generate(words) #分词
wordcloud.to_file('again.jpg')#保存到图片
 

简单的几行代码就ok拉,下面是生成的效果图

但是wordcloud这个模块对中文分词支持不怎么好,因为英文每个单词都是空格分开的,但是中文每个词语并部署,另外有个模块,对中文分词的比较好,这个模块是jieba,直接pip install jieba即可。

下面咱们再找个歌词,来个中文的,找到一路向北的歌词,保存到ylxb.txt里面,然后先使用wordcloud分词,保存到,lyxb1.jpg里面,再用jiba来分词,保存到lyxb2.jpg里面,看看差别

第一张,wordcloud自带的分词之后的词云

第二张,使用jieba分词之后的词云

明显就能看出来第一个基本就没有分词,使用jieba之后,把歌词里面的一些词语提取了出来,下面是代码。

 
1
2
3
4
5
6
7
8
9
10
11
12
import jieba
from wordcloud import WordCloud #导入词云模块
words = open('lyxb',encoding='utf-8').read()#打开歌词文件,获取到歌词
new_words = ' '.join(jieba.cut(words))#使用jieba.cut分词,然后把分好的词变成一个字符串,每个词用空格隔开
wordcloud = WordCloud(width=1000, #图片的宽度
  height=860,  #高度
  margin=2, #边距
  background_color='black',#指定背景颜色
  font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了
  )
wordcloud.generate(new_words) #分词
wordcloud.to_file('lyxb2.jpg')#保存到图片y

ok,词云已经生成了,很完美。但是我看到别人的词云,都是各种形状的,为啥咱们都是一个矩形呢。当然是可以解决的了,咱们想让它成什么形状就是什么形状,需要先找到一个有形状的图片,我这里找了一棵树的图片作为例子,然后需要用到PIL模块,处理图片,用numpy把这个图片的各种属性转成数字,这2个模块需要安装,都是用pip安装即可,pip install PIL,pip install  numpy。先看下图片

原来的大树参照物

下面是产生大树形状的词云

下面直接上代码

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import jieba,numpy
from PIL import Image#导入PIL模块处理图片
from wordcloud import WordCloud #导入词云模块
words = open('lyxb',encoding='utf-8').read()#打开歌词文件,获取到歌词
new_words = ' '.join(jieba.cut(words))#使用jieba.cut分词,然后把分好的词变成一个字符串,每个词用空格隔开
alice_mask = numpy.array(Image.open('dashu.jpg'))
#使用pil模块打开这个图片,然后用numpy获取到这个图片各种乱八七糟的属性
wordcloud = WordCloud(width=1000, #图片的宽度
  height=860,  #高度
  margin=2, #边距
  mask=alice_mask,
  background_color='#d4ff80',#指定背景颜色,这里用的是颜色代码
  font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了
  )
wordcloud.generate(new_words) #分词
wordcloud.to_file('lyxb4.jpg')#保存到图片
 
 

使用python生成词云的更多相关文章

  1. 用Python生成词云

    词云以词语为基本单元,根据词语在文本中出现的频率设计不同大小的形状以形成视觉上的不同效果,从而使读者只要“一瞥“即可领略文本的主旨.以下是一个词云的简单示例: import jieba from wo ...

  2. 新技能 get —— 使用 python 生成词云

    什么是词云(word cloud)呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据 ...

  3. python生成词云

    上代码: # -*- coding: utf-8 -*- # @Time : 19-1-10 上午10:27 # @Author : Felix Wang import jieba # pip ins ...

  4. python 生成词云

    1.知识点 """ WordCloud参数讲解: font_path表示用到字体的路径 width和height表示画布的宽和高 prefer_horizontal可以调 ...

  5. 从CentOS安装完成到生成词云python学习日记

    欢迎访问我的个人博客:原文链接 前言 人生苦短,我用python.学习python怎么能不搞一下词云呢是不是(ง •̀_•́)ง 于是便有了这篇边实践边记录的笔记. 环境:VMware 12pro + ...

  6. [python] 基于词云的关键词提取:wordcloud的使用、源码分析、中文词云生成和代码重写

    1. 词云简介 词云,又称文字云.标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.常见于博客.微博 ...

  7. python 基于 wordcloud + jieba + matplotlib 生成词云

    词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...

  8. Python 情人节超强技能 导出微信聊天记录生成词云

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Python实用宝典 PS:如有需要Python学习资料的小伙伴可 ...

  9. 【python】itchat登录微信获取好友签名并生成词云

    在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...

随机推荐

  1. linux中whereis、which、find、location的区别和用法

    摘自:https://www.cnblogs.com/kex1n/p/5233821.html 1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式 ...

  2. Oracle11g温习-第一章 1、ORACLE实例

    2013年4月27日 星期六 10:23 1.ORACLE 实例 System Global Area(SGA) 和 Background Process(后台进程) 称为数据库的实例. 2.ORAC ...

  3. exec可以用来执行语句的

    set @sql='select * from '+@table print @sql exec(@sql)

  4. 在命令行中直接运行带main方法的java

    用了很久的java,基本都是交给服务器完成的执行,有page之类的入口,或者是在IDE工具中直接 Run As Java Application. 并且一直对安装java之后配置JAVA_HOME,p ...

  5. 一、Object类

    1.Object类是所有类的父类 声明一个类的时候,实际上已经默认继承了Object类 package property; public class Hero extends Object{ Stri ...

  6. OC MRC之多对象之间管理(代码分析)

    #import <Foundation/Foundation.h> @interface Book : NSObject { int _price; } - (void)setPrice: ...

  7. darktrace 亮点是使用的无监督学习(贝叶斯网络、聚类、递归贝叶斯估计)发现未知威胁——使用无人监督 机器学习反而允许系统发现罕见的和以前看不见的威胁,这些威胁本身并不依赖 不完善的训练数据集。 学习正常数据,发现异常!

    先说说他们的产品:企业免疫系统(基于异常发现来识别威胁) 可以看到是面向企业内部安全的! 优点整个网络拓扑的三维可视化企业威胁级别的实时全局概述智能地聚类异常泛频谱观测 - 高阶网络拓扑;特定群集,子 ...

  8. 微信小程序wx.chooseImage和wx.previewImage的综合使用(图片上传可以限制个数)

    本例从微信小程序的组件扒下来的. WXML: <view class="weui-cell"> <view class="weui-cell__bd&q ...

  9. 'PostBuildEvent' failed with error code '1' 'Unspecified error'( PostBuildEvent”失败,错误代码为“1”。“未指定的错误” )

    这种错误很坑,2年前遇到一次,现在有遇到了(主要记不得上次怎么解决了的) 主要在于js文件文件修改保存的时候得以ansi格式保存,不能以utf-8 http://files.cnblogs.com/f ...

  10. 基于struts2和hibernate的登录和注册功能——完整实例

    1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...