1. 量身打造属于你的词云图

今天的Python案例是跟着笔者来打造属于自己的词云图。那么什么是词云图呢?我们在百度中来搜索一下,如图所示:

概念:词云图就是由词汇组成类似云的彩色图形。接下来我们就可以去为自己量身打造一张词云图了,但是笔者在这里的话就不拿自己的照片来进行演示了。最近很火的一部电影冰雪奇缘2,不知道大家有没有看过。无论是美轮美奂的画面质感,还是艾莎的造型如图1所示,都得到了众多人的喜爱,全球各地再度掀起了一股艾莎热潮。

接下来我们用Python来分析下这部电影的剧情并以艾莎为背景绘制词云图,效果如图2所示。

第一步:首先的话我们要准备一张遮照图,用来绘制词云的形状的,如果是想要拿自己的照片来做的话,一定要使用抠图技术将浓烈的背景换为纯色的背景。第二个的话就是我们需要准备相关的文本信息,文本信息越多,生成的图片信息越丰富。如图所示。

第二步:安装第三方模块,此次要使用到5个第三方模块,分别是matplotlib 数据可视化模块,numpy 数值计算模块,jieba 分词模块,wordcloud 词云模块,Pillow(PIL) 图像处理模块,如果不知道Pillow模块怎么使用的话,可以去看笔者的另一篇博文 图片转字符画,以上模块安装命令如下:

pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com matplotlib
pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com numpy
pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com jieba
pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com wordcloud
pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pillow

第三步:编写代码。主要是分为6个步骤,

  1. 使用open()方法读取文本信息
  2. 读取遮照图片
  3. 生成词云图
  4. 显示词云图
  5. 使用jieba进行中文分词
  6. 设置词云图渲染颜色

示例代码如下:

import numpy as np
from PIL import Image  # 导入PIL模块中的Image对象
import wordcloud  # 导入词云模块
import matplotlib.pyplot as plt
import os
import jieba
from wordcloud import ImageColorGeneratorfile_name = "elsa.txt"
pic_name = "elsa.png"  # 你自己是什么文件名你就写什么文件名
# 判断文件是否存在
if os.path.exists(file_name):with open(file_name, "r") as file:  # 读取文件content = file.read()if content:  # 判断文本内容是否为空# 进行分词处理c 返回的是一个对象 需要使用"".join进行拼接cut_text = jieba.cut(content)word = " ".join(cut_text)  # 拼接img = np.array(Image.open(pic_name))  # 读取图片img_colors = ImageColorGenerator(img)# 生成词云图# mask: 置顶遮罩图 img# font_path: 设置字体# background_color: 设置背景颜色wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white")wd.generate(word)  # 生成词云图# 显示词云图plt.imshow(wd.recolor(color_func=img_colors), interpolation="bilinear")plt.axis("off")  # 关闭显示x轴/y轴下标plt.savefig("elsa_cy.png")  # 保存词云图到本地plt.show()
else:print("大哥,你在逗我吗,没文件我咋读勒!")

运行结果如图所示:

接下来,是读者们自由发挥的时间,你可以尝试找一些自己感兴趣的文本数据进行分析,开启你的脑洞绘制自己想要的词云。

2. 11行代码完成"风云"

相信大家小的时候,都看过风云这部电视剧吧。最近笔者在抖音上经常看到呢,什么无名满血拉二胡,残血到处浪之类的经典评语。哈哈哈哈哈,言归正传,接下来的任务就是用11行代码完成电视剧风云词云图!首先去百度百科找下风云电视剧的剧情简介,然后粘贴到文本文件,去掉空行后保存为fy.txt。其次使用open方法读取文本文件,然后使用jieba模块分析文本,最后通过wordcloud模块制作词云图,通过matplotlib模块显示词云图。如图所示。

示例代码如下:

import matplotlib.pyplot as plt
import wordcloud
import jiebawith open("fy.txt", "r") as file:content = file.read()  # 读取文本文件内容cut_text = jieba.cut(content)  # 分词 返回一个生成器对象
word = " ".join(cut_text)  # 字符串拼接
wc = wordcloud.WordCloud(font_path="simhei.ttf", background_color="white")
wc.generate(word)  # 生成词云图plt.imshow(wc)  # 显示词云图
plt.axis("off")  # 关闭x轴和y轴坐标显示
plt.show()

3. 自定义颜色的外星人

你是否也思考过,怎样用自己喜欢的颜色来绘制词云图?下面你的任务就是实现自定义词云图颜色,使词云图更加形象、靓丽。以外星人为例,相信很多读者觉得这个LOGO眼熟,没错它就是我们和外星人一起学全彩系列图书的LOGO。

图1是原版外星人,我们来看看图2,词云图使用的是默认颜色,与原版相比有些逊色;再来看看图3,使用了红黑色混搭,是不是看起来接近原版了呢?示例代码如下:

import jieba
import wordcloud
import matplotlib.pyplot as plt
from matplotlib import colors
from scipy.misc import imread  # 注意scipy是要使用pip安装的# 安装命令如下:
# pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com scipy==1.2.0with open("wxr.txt", "r") as file:content = file.read()  # 读取文件内容cut_text = jieba.cut(content)  # 分词处理
word = " ".join(cut_text)  # 拼接
color_list = ["black", "red"]  # 红黑色值
# 多种颜色
# color_list = ["LightCoral", "RosyBrown", "IndianRed", "Red", "Brown", "FireBrick"
#     , "DarkRed", "Maroon", "Gainsboro", "LightGray"
#     , "Silver", "DarkGray", "Gray", "DimGray", "Black"]
color_map = colors.ListedColormap(color_list)  # matplotlib色图
img = imread("wxr.png")  # 读取图片
wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white", colormap=color_map)  # 生成词云图
wd.generate(word)
plt.imshow(wd)  # 显示词云图
plt.axis("off")  # 关闭x轴和y轴的坐标显示
plt.savefig("图3.png")
plt.show()  # 显示

4. 自行构造中文停用词

在绘制词云图过程中,词云中包括一些无用的字符和一些不想要的词,该如何处理?例如,我们得到一些有关电影小丑的评论内容,然后将其绘制成词云图,但是在文本数据中存在一些特殊字符如《、》、?、...和一些我们不想要的、没有意义的词,如一个、展开、回应、可能、没有、这部等,如图1所示。

实现思路:

  1. 手动添加停用词 通过stopwords.update()方法手动添加停用词。
  2. 根据已有停用词库遍历文本滤除停用词 网上找到一些现成的停用词库,下载或复制到文本文件中备用,然后判断滤除停用词重新生成新词,赋值给词云图。

示例代码1如下:

import re
import matplotlib.pyplot as plt
from matplotlib import colors
import jieba
import wordcloud
from wordcloud import WordCloud
import imageio
# 读取文件
str1 = open('joker.txt','r').read()
#文本数据处理
pattern = re.compile(u't|n|.|-|:|;|)|(|?|[|]|  ;|,|。|"')
str1 = re.sub(pattern, '', str1)
#自定义小丑颜色
color_list=['darkslategray','red','orange','darkred']
colormap=colors.ListedColormap(color_list)
#文本分词处理制作词云
cut_text = jieba.cut(str1, cut_all=True)     # cut_all=False 表示采用精确模式
word = ' '.join(cut_text)
#图片背景
pic = imageio.imread('小丑.png')
#设置中文停用词
stopwords = set('')
stopwords.update(['展开','回应','一个','影评','可能','一部','没有','我们','这个','这部','电影','就是','大家','不是','只是','因为','一些','本片'])
#生成词云图
wd = wordcloud.WordCloud(mask=pic,font_path='simhei.ttf',colormap=colormap,stopwords = stopwords,background_color='white')
#将长文本分词并去除屏蔽词
process_word = WordCloud.process_text(wd,word)
#对文本词排序(根据字典中值的大小,对字典中的项排序)
sort = sorted(process_word.items(),key=lambda x:x[1],reverse=True)
print(sort[:50]) # 输出文本词频最高的前50个词
wd.generate(word)
plt.imshow(wd)
plt.axis('off')
plt.show()

运行结果如图所示:

示例代码2如下:

import re
import jieba
import wordcloud
import matplotlib.pyplot as plt
from matplotlib import colors
import imageio  # 需要安装# 安装命令如下:
# pip install --user  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com imageiowith open("joker.txt", "r") as file:content = file.read()  # 读取文件内容pattern = re.compile(u't|n|.|-|:|;|)|(|?|[|]|  ;|,|。|"')  # 正则
str1 = re.sub(pattern, '', content)  # 处理文本数据 将上面匹配到的都替换为空字符串
color_list = ['darkslategray', 'red', 'orange', 'darkred']  # 自定义小丑颜色
color_map = colors.ListedColormap(color_list)
# cut_all=False: 表示采取精确模式
cut_text = jieba.cut(content, cut_all=True)  # 文本分词处理制作词云
word = " ".join(cut_text)  # 拼接
img = imageio.imread("小丑.png")
# 读取停止词文件并保存到列表中
stopwords = [line.strip() for line in open("stopwords.txt").readlines()]
new_word = ''
# 滤除停用词
for s in word:if s not in stopwords:new_word += swd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white", colormap=color_map)  # 生成词云图
wd.generate(word)
plt.imshow(wd)  # 显示词云图
plt.axis("off")  # 关闭x轴和y轴的坐标显示
plt.show()  # 显示

运行结果如图所示:

到此就结束啦!更多好玩案例和项目代码点这

此文转载。著作权归作者所有,如有侵权联系小编删除!

词云中去重复的词_今天从零教你开始利用Python打造词云图!相关推荐

  1. python 可以用excel做词云图嘛_今天从零教你开始利用Python打造词云图!

    1. 量身打造属于你的词云图 今天的Python案例是跟着笔者来打造属于自己的词云图.那么什么是词云图呢?我们在百度中来搜索一下,如图所示: 概念:词云图就是由词汇组成类似云的彩色图形.接下来我们就可 ...

  2. 今天从零教你开始利用Python打造词云图!

    1. 量身打造属于你的词云图 今天的Python案例是跟着笔者来打造属于自己的词云图.那么什么是词云图呢?我们在百度中来搜索一下,如图所示: 概念:词云图就是由词汇组成类似云的彩色图形.接下来我们就可 ...

  3. 词云中去重复的词_手把手教你挖掘蓝海词,打造爆款标题!

    产品想要在海量的产品里被客户看到,搜索引擎是至关重要的. 而标题是搜索引擎搜到你的宝贝第一基本条件. 那些不屑做标题优化的人,就像盖楼不做好地基,上层建筑也只能是豆腐渣工程. 有很多新手卖家在做标题时 ...

  4. 词云中去重复的词_如何用精准蓝海词做新品标题,上架即上首页!

    这期很多人期待已久的蓝海标题制作,也包括涉及到的蓝海词的筛选等等,我整理成一期跟大家讲,不多说,直接进入正题. 标题组合:蓝海标题组成=精准核心词+n个属性词 很多人来问我都问道一个问题,我们的精准核 ...

  5. 词云中去重复的词_会用精准蓝海词做新品标题,上架即上首页!

    直接进入正题. 标题组合:蓝海标题组成=精准核心词+n个属性词 很多人来问我都问道一个问题,我们的精准核心词是什么,是二级词还是三级词? 无论怎么组合,在标题里一定有一个流量大词和一些流量小的词.那么 ...

  6. 词云中去重复的词_手把手教你怎么挖掘蓝海词,打造淘宝爆款标题

    要制作一个好的标题,首先,我们需要挑选出相对蓝海并且与产品相关性高的关键词. 选词的途径主要有几个: 1. 淘宝首页-你是不是想找和下拉列表 2. 直通车-工具-流量解析-推广词表下载 3. 生意参谋 ...

  7. 词云中去重复的词_英文写作如何减少重复用词?

    很多同学在写作时往往不善于对单词进行变化,很少有意识地将同一个意思用不同的方式表达出来,这会使文章显得单调乏味.如果不是为了修辞需要(比如排比和强调),我们应该尽量减少写作中的重复用词.具体来讲,我们 ...

  8. 词云中去重复的词_为什么要避免标题关键词重复?

    日常SEO优化中,我们每天需要编写大量文章,内容中会多次出现重复性关键词,这是一件蛮正常的事情,很多人用关键词重复来增加关键词的密度,这也是可以理解的,但为什么有人强调,核心关键词最好在文章标题中只出 ...

  9. 词云中去重复的词_李清照特别经典的词,把相思写得淋漓尽致,读一次心疼一次...

    李清照是我国著名的女词人,为我们留下了许多精美的作品,但是她的人生却是几位的坎坷.遭在1101年时她与赵明诚结婚,是人们眼中的天作之合,后来她的父亲蒙受冤屈,而她不得已不还乡,时常与丈夫分离.不能与相 ...

  10. 词云中去重复的词_【需要拿去】毕业论文结束语、致谢词(通用版)

    [第1篇]毕业论文结束语.致谢词(通用版) 毕业论文的结束意味着我在xx院校区的学习生活即将画上句号!回首往事,心潮难平,感慨良多,但无论如何这些实实在在的经历,是我人生中弥足珍贵的记忆.在此,要特别 ...

最新文章

  1. 干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!
  2. ecshop订单-》待付款,待发货,待收货,收货确认
  3. 020_Jedis的Set数据类型
  4. es6 的数组的方法
  5. 常见的新算法的标准测试函数(Ackely,Rastrigin,Griewangk,SumSquartes,Sphere,Quartic,Schwefel' Problem等)
  6. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...
  7. 【转】TranslateAnimation详解
  8. jsp-解决自写Servlet老是报错404
  9. 叫板英特尔,英伟达发布首个 CPU,集齐“三芯”!
  10. python全栈工程师培训_2018.03《Python3全栈工程师》_技术能力内训
  11. 花开蝶自来——回到梦开始的地方
  12. 奥克兰大学计算机科学与技术,奥克兰大学计算机科学专业怎么样?成为IT达人就靠它...
  13. 51单片机数码管静态显示
  14. MVP是什么,不是什么
  15. 非对称加密实战(一):JDK生成keystore获取公钥私钥及代码验证【附源码】
  16. 微软抄袭 AppGet 始末,开源普法任重道远
  17. Linux系统有什么优势
  18. android 组件的id,Android@id和@+id的区别 - 泡在网上的日子
  19. AI研究院巡礼——小米AI研究院
  20. appid 登录不上appstore

热门文章

  1. android 产品上线流程图,产品上线工作流程(试行)20050302.doc
  2. 用java设计空间管理系统_一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)...
  3. 深度学习:循环神经网络(RNN)
  4. 安装vue-devtool
  5. js基础-18-js中创建对象的几种方式
  6. linux代码折叠,Sublime代码折叠
  7. Optional容器类
  8. 矩阵乘法公式c语言,c语言矩阵相乘
  9. linux文本编辑命令vim查找,Linux编辑器vi中文本搜索与替换操作
  10. CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer