什么是词云呢?

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

那用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. FasfDFS intall nginx with image filter

    centOS7 x64 1. install gd-devel 2. ./configure --prefix=/usr/local/nginx --with-http_image_filter_mo ...

  2. Java中HashMap的实现原理

    最近面试中被问及Java中HashMap的原理,瞬间无言以对,因此痛定思痛觉得研究一番. 一.Java中的hashCode和equals 1.关于hashCode hashCode的存在主要是用于查找 ...

  3. python-day41--约束条件

    一 .介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KE ...

  4. 43. Multiply Strings 字符串表示的大数乘法

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  5. 算法笔记——C/C++语言基础篇(已完结)

    开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...

  6. forget word out2

      1★ dictionary / dik ʃ ən əri   dict   2★ fy => faction f æk ʃ ən 派别  

  7. html frameset的介绍

    frameset 元素可以定义一个框架集.它被用来组织多个窗口(框架).每个框架存有独立的文档. 属性 ①border 设置框架的边框粗细. ②bordercolor 设置框架的边框颜色. ③fram ...

  8. hadoop hadoop install (1)

    vmuser@vmuser-VirtualBox:~$ sudo useradd -m hadoop -s /bin/bash[sudo] vmuser 的密码: vmuser@vmuser-Virt ...

  9. 使用ALVideoPlayerSurface制作视频播放器

    头两天介绍了开源控件包alcinoe,现在利用其中的ALVideoPlayerSurface视频播放控件,实作一个视频播放器. 首先,建一个fmx项目,然后从组件面版,拖放一个TAlVideoPlay ...

  10. MovingBoxes左右滑动放大图片插件

    MovingBoxes左右滑动放大图片插件在产品预览时很有用哦 实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...