Python提取岛上书店书中所有书名后做成词云
通过笔者Python提取《岛上书店》书名这一文章内容中的算法二,我们成功地把《岛上书店》中所有书名提取出来,并保存到同目录下的output.txt文件中。如果单单将这个发到朋友圈,似乎逼格并不是很高,所以笔者打算来点“花的”——词云!
以下代码很大部分借鉴自CSDN博主FontTian的https://blog.csdn.net/fontthrone/article/details/72782971这一篇文章,其中笔者在编码这一部分头疼了很久,最后百度加自己折腾,终于把坑给填了。话不多说直接上代码
前期准备工作:
1、我们提取出来的书单是带有书名号的,但为了词云的美观,会有小伙伴想我们需不需要将书名号去掉?其实我们不用管这些,wordcloud中的函数生成词云的时候最后会将这些书名号给自动去掉
2、不知道细心的小伙伴发现了没,算法一的结果中书名是没重复的,算法二是有重复的(将set()去掉),至于有什么用,接着看下去吧!
3、用pip3 install xxx,语句把wordcloud(生成词云)、matplotlib(绘制图形)库安装了,由于书单已经按照一行一个书名格式,相当于已经分好词了,所以这里也就用不到jieba这个库来进行分词了
1.0版本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from wordcloud import WordCloudf = open('Y:\python_work\output.txt','rb').read().decode()
wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)# width,height,margin可以设置图片属性# generate 可以对全部文本进行自动分词,但是他对中文支持不好,对中文的分词处理请看我的下一篇文章
#wordcloud = WordCloud(font_path = r'D:\Fonts\simkai.ttf').generate(f)
# 你可以通过font_path参数来设置字体集#background_color参数为设置背景颜色,默认颜色为黑色import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
plt.show()wordcloud.to_file('test.png')
# 保存图片,但是在第三模块的例子中 图片大小将会按照 mask 保存
由于大量摘取这位博主的文章,后面的注释我也不进行修改,有几点注意点和心得将在下面列出
注意点:
1、这位博主使用的python版本应该是2.X,版本,而笔者使用的是3.6版本。python3.6默认编码格式是utf-8,但在开头的两行还是得注释编码格式。笔者使用的是pycharm环境,在进行编程前首先要进行环境的配置,例如,将编译器改成C:\python36根目录下的编译器。由于编码格式问题,我们需要将output.txt转换成utf-8格式(另存为--编码格式--utf-8)
2、正如代码原博主所说,generate()可以对全部文本进行自动分词,但他对中文支持不好,最后输出的时候很容易出现乱码(只有一个个方框,中文字不显示),这是因为wordcloud库中自带的字体库是
你可以双击打开字体,虽然里面也有中文,但它在程序执行的时候就是显示不出来,原因笔者也是不懂。所以你需要其他的中文字体来代替这个DroidSansMono.ttf 所以去系统自带的字体库中自己挑选中文字体吧!此处笔者选的是微软雅黑
(msyh.ttc emmmm... Microsoft ya hei 嘿嘿嘿),然后我们打开wordcloud.py
找到这一行语句,并将框框中原来'DroidSansMono.ttf'替换成你中意的字体即可
当你打算保存的时候可能又会跳出来新的幺蛾子——你无法保存,原因为你的权限不够,解决方法:返回上一级文件夹,右击wordcloud属性修改权限,在安全选项卡中-选USER-选中完全控制,保存即可,然后就可以保存啦。
然后代码就可以运行了,运行结果如下。
其实1.0版本已经很不错了,为了显示效果,笔者开始2.0的打磨
2.0版本
相比1.0版本的简洁代码,2.0增加的就非常多了,我们需要从背景图片中提取颜色,根据背景的形状来进行安放位置,代码如下。(*2.0版本需要安装scipy)
# - * - coding: utf - 8 -*-from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGeneratord = path.dirname(__file__)back_coloring_path = "Y:\python_work\词云\\xin0.jpg" # 设置背景图片路径
text_path = 'Y:\python_work\output.txt' #设置要分析的文本路径
font_path = 'Y:\python_work\msyh.ttc' # 为matplotlib设置中文字体路径没
imgname2 = "WordCloudColorsByImg.png"# 保存的图片名字2(颜色按照背景图片颜色布局生成text=open(text_path,'rb').read().decode()back_coloring = imread(path.join(d, back_coloring_path))# 设置背景图片# 设置词云属性
wc = WordCloud(font_path=font_path, # 设置字体background_color="white", # 背景颜色max_words=50, # 词云显示的最大词数mask=back_coloring, # 设置背景图片max_font_size=100, # 字体最大值random_state=42,width=1000, height=860, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离)
#生成词云
wc.generate(text)
# 从背景图片生成颜色值
image_colors = ImageColorGenerator(back_coloring)plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
# 绘制背景图片为颜色的图片
plt.figure()
plt.imshow(back_coloring, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
# 保存图片
wc.to_file(path.join(d, imgname2))
运行结果如下:
注意点:
1、背景图片尽量选择规则的颜色比较“单一”非变化莫测的,不然效果不是很好,笔者采用的背景是自己通过画图软件画的一颗红心
2、有没有觉得这个心很对称?对啦,其实wordcloud会根据你文本中词出现的次数(词频)来进行相应的词云生成,出现次数越多,字越大,出现次数越多
总结:
当最终结果显示出来的时候,自豪感和成就感还是慢慢哒~,虽说代码大部分借用了FontTian博主,但在每一台机器上运行,还是要做出许多微调和修改的,感谢原博主的框架。(“读书人怎么能叫偷呢!这叫做“窃书”~“窃书~””)
除了这个,还能干些什么? 结合爬虫,爬去影评内容,生成影评关键字词云等等各种好玩的东西
plus:爬虫也是得费一番劲啃一啃的...
Python提取岛上书店书中所有书名后做成词云相关推荐
- Python深度学习一书中: 8.4代码VAE在tensorflow2.0错误‘lambda_1/random_normal/shape‘的解决方案
Python深度学习一书中: 8.4代码VAE在tensorflow2.0下会有Duplicate node name in graph: 'lambda_1/random_normal/shape' ...
- 用Python采集《雪中悍刀行》弹幕做成词云实例
大家好,本篇文章主要讲的是用Python采集<雪中悍刀行>弹幕做成词云实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下.编程学习资料点击免费领取 目录 前言 知识点介绍 环境介 ...
- python生成文章标题_利用简书首页文章标题数据生成词云
原标题:利用简书首页文章标题数据生成词云 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! ...
- python制作词云时出现figure1 figure2_「中文版」如何在Python中生成任何形状的词云...
有机会介绍一些有趣的项目,向更多人甚至是非技术人员推广Python和人工智能的东西还是蛮有意义的.话不多说,本文将介绍如何将你喜欢的文章或者歌词做一个炫丽的词云图片. 什么是词云呢?简单来说就是,将提 ...
- python豆瓣爬虫爬取评论做成词云
前言 前一段时间学校有个project,做一个电影购票系统,当时就用springboot做了系统,用python抓了一些电影的基本信息.后来发现如果把评论做成词云那展示起来不是很酷炫么.于是乎把这个过 ...
- 用Python爬取B站弹幕并做成词云
用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...
- Python提取Word文档中所有超链接地址和文本
使用Python扩展库python-docx操作Word文档的相关文章,可以阅读: Python批量导入图片到Word文件 Python查找Word文件中红色和加粗的文字(附元宵节送书活动中奖名单) ...
- Java+Python+Paddle提取长文本文章中词频,用于Echart词云图数据
公司有个需求,就是需要提供给echart词云图的数据,放在以前我们的数据来源都是从产品那直接要,产品也是跑的别的接口,那怎么行呢,当然有自己的一套可以随便搞了,那么操作来了 Java package ...
- Python提取word文档中的图片,识别图片文字之后再转存为word文档
#!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...
最新文章
- 欢迎大家观顾【图灵教育社区】
- bigdecimal类型数据的min方法
- Python-time标准库知识小结
- leetcode 518. 零钱兑换 II
- matlab下删除文件或文件夹
- 缓存和字符串相互转换
- CodeForces - 622C Not Equal on a Segment(思维+水题)
- 【NOIP2014】子矩阵
- “睡服”面试官系列第二十三篇之修饰器(建议收藏学习)
- WPF(Windows Presentation Foundation)Overview
- laravel mysql 视图_视图入门:Laravel 支持的视图格式以及在路由中的基本使用
- Mysql数据库备份和还原常用的命令
- Libelle(容灾)
- 关键词推荐工具中的用户引导机制之三
- 字符串函数和数据类型转换函数
- 国家电网 计算机 《信息新技术》 整理
- Mol Plant |中科院微生物所郭惠珊组和中科院上海植物逆境中心段成国组合作揭示油菜生长与免疫动态调节的新机制...
- 抖音落地页一键复制微信号跳转微信的方法
- 【SEED Lab】ARP Cache Poisoning Attack Lab
- 转载:Linux下用mutt给QQ邮箱发匿名邮件
热门文章
- 原因: java.lang.NoClassDefFoundError: helloworld/Helloworld (wrong name: Helloworld)
- 全加器高进位和低进位的理解
- rewind java_具有rewind()/ reset()功能的Java文件输入
- uniapp日历插件
- 智慧社区系统开发,智慧社区平台搭建解决方案
- LDAP应用:OpenLDAP集成到Jumpserver
- 蒙特卡罗MCNP学习汇总(一)-----MCNP简介及编写第一个程序
- 加速及控制精灵移动,加速计值的处理
- PHPCMS V9学习笔记(配置): 后台界面模板在线编辑
- MacPorts卡在正在运行软件包脚本解决方法