python生成词云图、特殊图形_Python模块---Wordcloud生成词云图

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 += seg

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

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

font_path : "字体路径"

词云的字体样式,若要输出中文,则跟随中文的字体

width =  n

画布宽度,默认为400像素

height =  n

画布高度,默认为400像素

scale = n

按比例放大或缩小画布

min_font_size = n

设置最小的字体大小

max_font_size = n

设置最大的字体大小

stopwords = 'words'

设置要屏蔽的词语

background_color = ''color

设置背景板颜色

relative_scaling = n

设置字体大小与词频的关联性

contour_width = n

设置轮廓宽度

contour_color = 'color'

设置轮廓颜色

完整代码

#导入词云库

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=1,

# 若想生成中文字体,需添加中文字体路径

font_path="/usr/share/fonts/bb5828/逐浪雅宋体.otf"

).generate(text)

#返回对象

image_produce = wordcloud.to_image()

#保存图片

wordcloud.to_file("new_wordcloud.jpg")

#显示图像

image_produce.show()

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

我的词云原图:

生成的词云图:

python根据文本生成词云图

python根据文本生成词云图 效果 代码 from wordcloud import WordCloud import codecs import jieba #import jieba.analy ...

python 爬取豆瓣电影短评并wordcloud生成词云图

最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站 [实验名称] 爬取豆瓣电影的评论并生成词云 1. 利用爬虫获得电影评论的文本数据 2. 处理文本数据生成词云图 第一步, ...

小白学Python(12)——pyecharts ,生成词云图 WordCloud

WordCloud(词云图) from pyecharts import options as opts from pyecharts.charts import Page, WordCloud fr ...

(数据科学学习手札71)在Python中制作个性化词云图

本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 词云图是文本挖掘中用来表征词频的数据可视化 ...

用Python制作酷炫词云图,原来这么简单!

一.简介词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:! 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

已知词频生成词云图(数据库到生成词云)--generate_from_frequencies(WordCloud)

词云图是根据词出现的频率生成词云,词的字体大小表现了其频率大小. 写在前面: 用wc.generate(text)直接生成词频的方法使用很多,所以不再赘述. 但是对于根据generate_from_f ...

python:用wordcloud生成一个文本的词云

今天学习了wordcloud库,对生成了词云图片,非常漂亮.就想多尝试几个,结果发现一系列问题.最常出现的一个错误就是"UnicodeDecodeError : .. ...

用Python和WordCloud绘制词云(内附让字体清晰的秘笈)

环境及模块: Win7 64位 Python 3.6.4 WordCloud 1.5.0 Pillow 5.0.0 Jieba 0.39 目标: 绘制安徽省2018年某些科技项目的词云,直观展示热点. ...

Excel催化剂开源第27波-Excel离线生成词云图

在数据分析领域,词云图已经成为在文本分析中装逼的首选图表,大家热烈地讨论如何在Python上做数据分析.做词云图. 数据分析从来都是Excel的主战场,能够让普通用户使用上的技术才是最有价值的技术,一 ...

随机推荐

Backup Volume 操作 - 每天5分钟玩转 OpenStack(59)

本节我们讨论 volume 的 Backup 操作. Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. Backup VS Snapshot 初看 ...

一个UILabel不同部分显示不同颜色

我们直接来看效果图吧: 需求:就是表格cell里面的状态Label,前面的"状态:"是黑色,后面的状态值是红色,他们在同一个Label上,怎么做呢? 解答:真的是会者不难,难者不会 ...

[PLL][PM]锁相环模拟相位解调

%锁相环测试 %模拟相位解调 clear close all clc fs=1000; %采样率 tend=100; t=0:1/fs:tend; t(end)=[]; fc=1; %载波频偏 fb= ...

MySql数据库的导入_命令工具

一.如何导入别人已经建好的数据库 create database goods use goods source E:\goods.sql (绝对路径) 这样就导入了指定的数据库到本机电脑 二.任何数据 ...

设计模式17---设计模式之模板方法模式(Template Method)(行为型)

1.场景模拟 使用软件模拟登录控制,普通用户和工作人员用户,工作人员的密码在数据库中是加密的. 步骤大致如下: 前台提交,后台获取登录信息,同数据库中的登陆信息进行比较,只不过工作人员是加密的,普通用 ...

registerForRemoteNotificationTypes: is not supported in iOS 8.0 and

注册模式: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedA ...

包(package)

防止文件重名,包体现在文件夹上.包必须建立文件夹. 类名的全称是:包名.类名 javac   xx.java 命令编译的时候,不会建立对应的文件夹, 建立包对应的文件夹的命令,要用 javac -d ...

ISP PIPLINE (六) AWB

What is WB(white balance)? 人的视觉和神经系统在看到白色物体的时候,基本不受环境的变化而出现严重的错觉.比如阴天,晴天,室内,室外,日光灯,白炽灯等的环境下,人依然会将白纸视 ...

CAN总线(1)--初探(更新中)

前言: CAN总线可以控制可以使用Xilinx中IP核来直接实现,也可以使用专用的CAN芯片(例如:SJA1000)通过单片机和FPGA驱动控制来实现: 目前是使用控制器SJA1000来进行实现: C ...

安装kafka 集群 步骤

1.下载 http://mirror.bit.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 2.解压  tar -zxvf kafka_2.11-2.1 ...

你可能感兴趣的:(python生成词云图,特殊图形)