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

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

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

安装结巴分词库

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

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

完整代码

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

我的词云原图:

生成的词云图:

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

我将优质的技术文章和经验总结都汇集在了我的公众号【Python圈子】里。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,600+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!还有学习交流群,一起学习进步~

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

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

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

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

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

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

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

  4. python生成固定形状的词云图

    首先制作好自己想要的形状图片形状为黑色 背景为白色 如图所示 import matplotlib.pyplot as plt import jieba from wordcloud import wo ...

  5. echarts实现中国地图和自定义形状的词云图

    目录 1.中国地图 2.词云图 3.资源源码 用echarts实现了中国地图上的发票流入流出图和小鸟形状的词云图. 先看下效果 中国地图(有动态的流入流出箭头和悬浮框提示信息): 词云图(小鸟形状,也 ...

  6. Python简单的枫叶形状的词云图

    Python有很多词云库,其中比较流行的有wordcloud和pytagcloud.这里我们以wordcloud为例,可通过以下代码安装该库: pip install wordcloud 1提取文本数 ...

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

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

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

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

  9. python制作词云时出现figure1 figure2_「中文版」如何在Python中生成任何形状的词云...

    有机会介绍一些有趣的项目,向更多人甚至是非技术人员推广Python和人工智能的东西还是蛮有意义的.话不多说,本文将介绍如何将你喜欢的文章或者歌词做一个炫丽的词云图片. 什么是词云呢?简单来说就是,将提 ...

最新文章

  1. 中小学AI教育靠谱吗?50%教师教学经验不足1年
  2. 记录一次git的误删除操作--恢复
  3. 微软年度研究大盘点:ML突破将到来,人机交互更真实,惜别沈向洋
  4. 【收藏】Oracle存储过程读写文件
  5. 过采样中用到的SMOTE算法
  6. python列透视_python – 在pandas数据帧中透视列和列值
  7. CodeForces1477D Nezzar and Hidden Permutations(构造+调整+菊花图)
  8. W玻色子质量实验与理论矛盾,或是十年来最重要的进展
  9. pythonista3安卓_pythonista 3ios
  10. .NET下 Access与SQL Server的效率简易比较
  11. 浏览器后退不刷新页面
  12. echrts多条折线
  13. 安全合规/ISO--1--ISO 27000系列标准介绍
  14. 6572 Phone call分析
  15. 科技圈的“三座大山”正在崩塌中。。。
  16. 吉林大学计算机研究生成绩计算方法,关于同济大学研究生成绩计算方法的说明...
  17. 激光振镜协议C语言源码,Laser-Marking 激光振镜打标机源代码 - 下载 - 搜珍网
  18. 阿里云服务器实现 frp 内网穿透
  19. Codeforces 298B Sail 题解
  20. Androidstudio更改app图标和名称bug

热门文章

  1. 拉新反作弊策略及应用案例
  2. 【原】来自于一位前端“布道者”的建议
  3. 中国5G、新能源汽车领先全球,将引领第四次工业革命
  4. 第四次工业革命到来 中企动力赋企业“生长之力”
  5. 解读什么是千人千面算法、猜你喜欢、个性化推荐算法,
  6. Navicat查看建表语句
  7. 【starters】springboot-starter整合阿里云datahub
  8. java modbus crc_modbus crc计算工具(Modbus CRC校验工具)
  9. 中国赴博茨瓦纳的签证怎么办理
  10. iomanip在c语言中用什么代替,关于#include iomanip中iomanip的作用~