wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。

首先贴出一张词云图(以哈利波特小说为例):

在生成词云图之前,首先要做一些准备工作

1.安装结巴分词库

pip install jieba

Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型。

下面我来简单介绍一下结巴分词的用法

结巴分词的分词模式分为三种:

(1)全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题

(2)精确模式:将句子最精确地切开,适合文本分析

(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

下面用一个简单的例子来看一下三种模式的分词区别:

import jieba# 全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题text = "哈利波特是一常优秀的文学作品"seg_list = jieba.cut(text, cut_all=True)print(u"[全模式]: ", "/ ".join(seg_list))# 精确模式:将句子最精确地切开,适合文本分析seg_list = jieba.cut(text, cut_all=False)print(u"[精确模式]: ", "/ ".join(seg_list))# 默认是精确模式seg_list = jieba.cut(text)print(u"[默认模式]: ", "/ ".join(seg_list))# 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词seg_list = jieba.cut_for_search(text)print(u"[搜索引擎模式]: ", "/ ".join(seg_list))

下面是对这句话的分词方式:

通过这三种分词模式可以看出,这些分词模式并没有很好的划分出“哈利波特”这个专有名词,这是因为在结巴分词的字典中并没有记录这个名词,所以需要我们手动添加自定义字典。

添加自定义字典:找一个方便引用的位置(下图的路径是我安装的位置),新建文本文档(后缀名为.txt),将想添加的词输入进去(注意输入格式),保存并退出。

在上面的代码中加入自定义字典的路径,再点击运行。

jieba.load_userdict("/home/jmhao/anaconda3/lib/python3.7/site-packages/jieba/mydict.txt")

分词结果,可以看出“哈利波特”这个词已经被识别出来了。

结巴分词还有另一个禁用词的输出结果。

stopwords = {}.fromkeys(['优秀', '文学作品'])#添加禁用词之后seg_list = jieba.cut(text)final = ''for seg in seg_list:if seg not in stopwords:final += segseg_list_new = jieba.cut(final)print(u"[切割之后]: ", "/ ".join(seg_list_new))

可以看到输出结果中并没有“优秀”和“文学作品”两个词

结巴分词还有很多比较复杂的操作,具体的可以去官网查看,我就不再过多的赘述了。

下面我们正式开始词云的制作。

首先下载模块,这里我所使用的环境是Anaconda,由于Anaconda中包含很多常用的扩展包,所以这里只需要下载wordcloud。若使用的环境不是Anaconda,则另需安装numpy和PIL模块。

pip install wordcloud

然后我们需要找一篇文章并使用结巴分词将文章分成词语的形式。

# 分词模块def cut(text):# 选择分词模式word_list = jieba.cut(text,cut_all= True)# 分词后在单独个体之间加上空格result = " ".join(word_list)# 返回分词结果return result

这里我在当前文件夹下创建了一个文本文档“xiaoshuo.txt”,并复制了一章的小说作为词云的主体文字。

使用代码控制,打开并读取小说的内容

#导入文本文件,进行分词,制作词云with open("xiaoshuo.txt") as fp:text = fp.read()# 将读取的中文文档进行分词text = cut(text)

在网上找到一张白色背景的图片下载到当前文件夹,作为词云的背景图(若不指定图片,则默认生成矩形词云)

#设置词云形状,若设置了词云的形状,生成的词云与图片保持一致,后面设置的宽度和高度将默认无效mask = np.array(image.open("monkey.jpeg"))

接下来可以根据喜好来定义词云的颜色、轮廓等参数 下面为常用的参数设置方法

完整代码

#导入词云库from wordcloud import WordCloud#导入图像处理库import PIL.Image as image#导入数据处理库import numpy as np#导入结巴分词库import jieba# 分词模块def cut(text):# 选择分词模式word_list = jieba.cut(text,cut_all= True)# 分词后在单独个体之间加上空格result = " ".join(word_list)return result#导入文本文件,进行分词,制作词云with open("xiaoshuo.txt") as fp:text = fp.read()# 将读取的中文文档进行分词text = cut(text)#设置词云形状mask = np.array(image.open("monkey.jpeg"))#自定义词云wordcloud = WordCloud(# 遮罩层,除白色背景外,其余图层全部绘制(之前设置的宽高无效)mask=mask,#默认黑色背景,更改为白色background_color='#FFFFFF',#按照比例扩大或缩小画布scale=,# 若想生成中文字体,需添加中文字体路径font_path="/usr/share/fonts/bb5828/逐浪雅宋体.otf").generate(text)#返回对象image_produce = wordcloud.to_image()#保存图片wordcloud.to_file("new_wordcloud.jpg")#显示图像image_produce.show()

注:若想要生成图片样式的词云图,找到的图片背景必须为白色,或者使用Photoshop抠图替换成白色背景,否则生成的词云为矩形

我的词云原图:

生成的词云图:

- END -

文源网络,仅供学习之用,如有侵权,联系删除。往期精彩

◆  50款开源工具你都用过吗?

◆  你知道Python的就业方向和薪资吗?(赠学习资料)

◆  python网络爬虫的基本原理详解

查看list的形状_用Wordcloud生成指定形状的词云图相关推荐

  1. echarts词云图形状_用Wordcloud生成指定形状的词云图

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前 ...

  2. 用Wordcloud生成指定形状的词云图

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前 ...

  3. 在Python中用WordCloud生成聊天记录热点词汇词云图

    刚开学第一天,因为老师没在实验室,所以就没去.之前有看到过别人展示过热点词汇的那种图片,闲着也是闲着,所以就捣鼓了一下午,为了整理一下学的东西,下面就以QQ聊天记录为例子,生成热点词汇.具体的效果如下 ...

  4. python节日快乐_【python】一键生成漂亮的节日快乐词云图

    一键生成漂亮的节日快乐词云图,给女神一个特别的礼物~ # Python 实用宝典 # 2020/03/23 先看效果图: 代码传送门: import numpy import multidict im ...

  5. python爬取豆瓣《狂暴巨兽》评分影评,matplotlib和wordcloud制作评分图和词云图

    开发环境:win7,8,10,python3+ python模块:requestes,bs4,matplotlib,jieba,wordcloud,PIL,numpy,random 实现的功能和思路: ...

  6. python生成词云图个人技术报告_【Python成长之路】词云图制作

    [写在前面] 以前看到过一些大神制作的词云图 ,觉得效果很有意思.如果有朋友不了解词云图的效果,可以看下面的几张图(图片都是网上找到的): 网上找了找相关的软件,有些软件制作 还要付费.结果前几天在大 ...

  7. python中文分词,生成标签云,生成指定形状图片标签云

    使用结巴分词 https://github.com/fxsjy/jieba 可以直接pip 安装 pip install jieba 主要看到这么一篇文章 https://zhuanlan.zhihu ...

  8. python词云图制作壮观天体照_【Python成长之路】词云图制作

    [写在前面] 以前看到过一些大神制作的词云图 ,觉得效果很有意思.如果有朋友不了解词云图的效果,可以看下面的几张图(图片都是网上找到的): 网上找了找相关的软件,有些软件制作 还要付费.结果前几天在大 ...

  9. python词云图_Python生成一篇文章的词云图

    使用前需要确保安装以下第三方库: jieba, wordcloud, imageio, sklearn,csv imageio.csv和sklearn在安装anaconda时默认是安装的,另外两个库需 ...

最新文章

  1. python便捷数据怎么获取_Python数据获取与表示基础编程练习
  2. Eclipse中导入项目后js报错解决方法
  3. Windows server 2008系统各类版本的优缺点比较,Windows2008系统标准版 企业版 数据中心版 WEB版等...
  4. 【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)
  5. 湍流退化图像复原如何使用matlab,湍流退化图像复原技术研究现状及展望
  6. linq to sql 详
  7. c语言栈的实现以及操作_C++语言实现顺序栈
  8. 【渝粤教育】国家开放大学2019年春季 0390-22T古代诗歌散文专题 参考试题
  9. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
  10. sqoop-1.4.7安装
  11. IPv4和IPv6比特转发率和包转发率的关系
  12. JS jeDate日期控件使用
  13. JPA是什么?怎样开发JPA应用?
  14. Tegra TX1 build tensorflow r1.1
  15. 百度云盘APP中去除我的应用数据图标:ES File Exploer
  16. 描述CFAR算法原理
  17. Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用
  18. yolo3+Mobilenetv1
  19. 【Java基础系列教程】第二章 Java语言概述、配置环境变量
  20. JDT学习之JavaCore

热门文章

  1. Properties文件位置
  2. ORACLE SQL获取时间字段
  3. 计算机等级考试二级ACCESS考试大纲
  4. texture 纹理(贴图)
  5. char数组拷贝wchar数组
  6. centos oracle创建库,CentOS Oracle安装必要的软件创建数据库
  7. python字典返回键值对列表_返回列表Python dict dictionaries Python 数据结构——字典 返回列表...
  8. css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...
  9. java年份换算_java中日期的换算处理
  10. oracle 关于归档的视图,oracle 与归档日志相关的几个视图