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

09c45465e2579b7f2d1056d10498207d.png

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

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

d64a56cbbb63c5985773d4c81b736784.png

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

1.安装结巴分词库

pip install jieba

30ea71d2d738de075e3d21542d37c300.png

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))

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

8fd28e6d5d6fd41554cd66767832e96e.png

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

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

8356ecb41f1bdcd2ccaec836872db6f2.png

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

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

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

39d383e0d402f46bd0189e2719f0c84a.png

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

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))

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

ebc65986e7b350dacdbf0585f7ed8bfc.png

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

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

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

pip install wordcloud

8e6f6030f834da7fb96ebe57c5411467.png

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

# 分词模块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"))

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

1d9300513c6d21a8d9fca3c0247358c2.png

完整代码

#导入词云库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抠图替换成白色背景,否则生成的词云为矩形

我的词云原图:

f8897b4c446c75087bc3813200a2009d.png

生成的词云图:

71a9ad572c4574989dcbbda04a63825b.png 

- END -

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

ad5dc60936ac156605db5689de15c4ca.png

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

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

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

0c30d8b9a62a01a4fdc833702d14f59e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oc引导win方法_[OC更新]机械革命8代、9代标压稳定版更新

加关注这种话银家怎么好意思说出口嘛更新机型机械革命Z2G机械革命Z2AIRG机械革命X3(9th ver)机械革命umi air(1080p ver)机械革命X9TI机械革命X8TI-R机械革命X8TI-G机械革命Z2机械革命Z2AIR机械革命X8TI机械革命X8TI PLUS机械革命X3(8th ver)机械革命S1PLUS(8750H)机械革命X2更…

有机晶体数据库_Cambridge Structural Database 2017 晶体结构分析软件分享

文 / 利刃君微信ID / ziyuanliren666全文共2024字,推荐阅读时间6分钟。剑桥结构数据库系统(The Cambridge Structural Database System,简写为CSDS)是基于X光和中子衍射实验唯一的小分子及金属有机分子晶体的结构数据库,收录了全世界范围内所…

win ftp 指定的密码无效。请键入新密码。_重设OS X (macOS)系统帐户密码的5种方法...

为了保护自己的隐私安全,不少 Mac 用户都会选择给自己的设备设置密码,但是时不时的会出现忘掉密码的情况。分享找回(重设)OS X (macOS)系统账号密码的5种方法。如果你忘记了 OS X (macOS&#x…

word2vec应用场景_介绍Word2Vec和Glove这两种最流行的词嵌入方法背后的直觉

NLP的首要问题就是寻求恰当的文本表示方法。因为,良好的文本表示形式,是后续进一步处理的基础。近年来,词嵌入方法越来越流行,在各种各样的NLP任务中得到了广泛的应用。简单而言,词嵌入是通过无监督方式学习单词的向量…

pythonflask框架_Flask框架

一、Web前端与后端(PythonWeb)1.Web前端:网页,包含HTML,CSS,JS。静态网页:不能与服务器交互的网页动态网页:能够与服务器交互的网页2.Web后端:、Flask,Django、Ajax技术二、服务器1.…

滑动翻页效果_Flutter实现3D效果,一个字,炫!

老孟的博客地址:http://laomengit.com/Flutter 中3D效果是通过Transform组件实现的,没有变换效果的实现:class TransformDemo extends StatelessWidget {overrideWidget build(BuildContext context) {return Scaffold( appBar: AppBar(…

overleaf 插入图片_latex中插入图片

latex排版之插入图片:在排版图片之前,个人认为不管用不用到,引入下面两个包:\usepackage{graphicx}\usepackage{subfigure}(1)插入单个图片,图片格式为png\begin{figure}[h]\centering\includegraphics[width4cm,heigh…

debian命令乱码_Debian 9.5 解决中文显示乱码

一.首先检查LOCALE情况说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在。1、启动终端#apt-get install locales2、重新配置LOCALE#dpkg-reconfigure locales在界面中我勾选的是“en_US.UTF-8”和“zh_CN.UTF-8”。…

ssh 连接mysql_mysql命令行客户端如何通过ssh服务器连接数据库啊?

ssh到跳板机然后用 mysql 连接利用ssh开启一个隧道我这里的MySQL服务器是192.168.41.83, 我要在192.168.41.72连接首先在192.168.41.72执行命令开启隧道[rootmysql-test-72 ~]# ssh -NPf -o StrictHostKeyCheckingno root192.168.41.83 -L 3305:127.0.0.1:3306root192.168.41.8…

mysql 创建 数据库失败_MySQL创建数据库失败

如果使用root账号登录到数据库create database时提错错误:MySQL: 1006 - Can‘t create database ‘***‘ (errno: 13)或MySQL: 1006 - Can‘t create database ‘***‘ (errno: 28),一般是mysql用户没有目录权限的问题。先用Linux指令 : ls -ld 查看d…

mysql 客户服务号_mysql客户端及服务端常用实用工具功能总结

一、MySQL服务器端实用工具程序:1、mysqld:SQL后台程序(即MySQL服务器进程),客户端通过该服务连接服务器来访问数据库。2、mysqld_safe:服务启动脚本。mysqld_safe增加了一些安全特性,如当出现错误时重启服务器并向错误…

MySQL8怎么设置时区为东八区_mysql时区设置为东八区

场景:后台返回给页面的时间统一差8小时。 分析:差八小时,应该是时区问题。具体的是哪一层出的问题呢,mybatis?mysql?系统时间? 解析: 1.查询mysql时区(正常) 输入show variables like "%time_zone%";,显示当前时区 全局参数system_time_zone 系统时区,在My…

mysql网络异常_mysql运行过程中因网络或者数据库原因导致的异常

1、异常信息:The driver has not received any packets from the server异常栈:原因:此异常为jdbc自身的超时限制,一般为应用调用jdbc的API设置了queryTimeout超时限制,当成功获取数据库连接执行sql的时候与mysql服务端断开&#…

mysql撤销用户授权_mysql用户授权及撤销

mysql数据库服务在不做授权的情况下只允许数据库管理员从数据库服务器本机登录。默认只有数据库管理员从数据库服务器本机登录才有授权权限mysql -u root -p (本机登录mysql服务器)mysql -u root -h 192.168.4.5 -p (远程连接mysql服务器)方式1 在库外重置数据库管理员密码&…

js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...

这是一个用vue.js对css操作完成的实例。当然用了flex简单布局。一、先创建一个html文件,记得添加vue库文件。二、创建一盒容器vmdiv,用vue绑定它,测试vue绑定后的插入值text1效果。三、加入文本框和两个按钮。四、通过flex排序,让…

Linux mysql.plugin_Linux下MySQL安装

博主邮箱www.zzherfoxmail.com qq:11024719111 //获得以下所需的源代码包(文末附有安装包),并存放在/usr/local/src2 //与mysql相关:3 boost_1_59_0.tar.gz cmake-3.6.2.tar.gz mysql-5.7.16.tar.gz45 //安装cmake前的依赖包的安装6 //检查gc…

mysql mybatis 工具类_我肝了一个星期,为你们整理出了mybatis程序配置教程

1、搭建实验数据库我们创建一个mybatis实验数据库,并创建一个user表为后续实验准备2、IDEA新建项目,连接数据库新建一个普通的maven项目删除src目录,作为父工程pom.xml中导入相关的maven依赖1、 MySQL驱动2、 MyBatis驱动3、 junit驱动连接我…

python access 源码_连接的微软Access数据库,这是一个轻量级的Python模块(MDB格式)...

A lightweight python module to connect Microsoft Access Database. the module is to use ADO engine through Win32 COM. the module need another Win32 API module, you can find it at the below url:Pyminiado是一个轻量级的Python访问Access数据库的接口,单…

mysql gt resource_实用干货,MYSQL这么用就对啦

本文主要梳理了 SQL 的基础用法,会涉及到以下方面内容:SQL大小写的规范数据库的类型以及适用场景SELECT 的执行过程WHERE 使用规范MySQL 中常见函数子查询分类如何选择合适的 EXISTS 和 IN子查询了解 SQLSQL 是我们用来和数据打交道的方式之一&#xff0…

python 查看当前目录_Python学习第156课--ls的运用、环境变量以及PATH

【每天几分钟,从零入门python编程的世界!】之前简单的介绍了Linux中几个简单的命令。这节再深入一点介绍下 ls 的运用。lsls相当于是list的简写,它的作用是把我们当前目录中的文件列举出来。ls -l把当前目录下的文件以及它的具体信息列举出来…