深度学习项目实战——1.基于WordCloud词云生成
深度学习项目实战——1.基于WordCloud词云生成
准备
安装依赖库
pip install wordcloud matplotlib jieba pillow
WordCloud()可选的参数
- font_path:可用于指定字体路径,包括otf和ttf
- width:词云的宽度,默认为400
- height:词云的高度,默认为200
- mask:蒙版,可用于定制词云的形状
- min_font_size:最小字号,默认为4
- max_font_size:最大字号,默认为词云的高度
- max_words:词的最大数量,默认为200
- stopwords:将被忽略的停用词,如果不指定则使用默认的停用词词库
- background_color:背景颜色,默认为black
- mode:默认为RGB模式,如果为RGBA模式且background_color设为None,则背景将透明
1. 根据英文文档生成词云
# 词云生成:英文
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 打开文本
text = open('constitution.txt').read()
# 生成对象
wc = WordCloud().generate(text)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off') # 把坐标轴关掉
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
由于英文单词之间有空格分隔,因此大多不需要额外的处理
2.根据中文文档生成词云
中文一般需要经过分词处理,先看下不分词的效果
以《西游记》为例,可以看到结果中会出现各种双字、三字和四字等,但很多并不是合理的词语
# 词云生成:中文
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 打开文本
text = open('./xyj.txt',encoding='utf-8').read()
# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
3. 使用jieba进行中文分词
这次我们先用jieba进行中文分词,可以看到生成的词云里,基本上都是合理的词语了
# 使用jieba分词
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba# 打开文本
text = open('xyj.txt', encoding='utf-8').read()# 中文分词
text = ' '.join(jieba.cut(text))
print(text[:100])# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
4. 使用黑白背景的蒙版
这里将mask翻译为蒙版,是因为感觉它和Photoshop中蒙版的作用很类似
使用蒙版之后,可以根据提供的蒙版图片,生成指定形状的词云
# 使用蒙版from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba# 打开文本
text = open('xyj.txt', encoding='utf-8').read()# 中文分词
text = ' '.join(jieba.cut(text))
print(text[:100])# 生成对象
mask = np.array(Image.open('black_mask.png'))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
5. 使用彩色背景的蒙版
词云的颜色可以从蒙版中抽取,使用ImageColorGenerator()即可
# 从蒙版中抽取词云的颜色
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba# 打开文本
text = open('xyj.txt', encoding='utf-8').read()# 中文分词
text = ' '.join(jieba.cut(text))
print(text[:100])# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()# 保存到文件
wc.to_file('worldcloud.png')
6.使用蒙版并设置字色
当然也可以设置为纯色,增加一个配色函数即可
# 设置纯色
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import random
import jieba# 打开文本
text = open('xyj.txt', encoding='utf-8').read()# 中文分词
text = ' '.join(jieba.cut(text))
print(text[:100])# 颜色函数
def random_color(word, font_size, position, orientation, font_path, random_state):s = 'hsl(0, %d%%, %d%%)' % (random.randint(60, 80), random.randint(60, 80))print(s)return s# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(color_func=random_color, mask=mask, font_path='Hiragino.ttf', mode='RGBA',background_color=None).generate(text)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
7. 使用jieba提取关键词和权重绘制词云
如果希望精细地控制词云中出现的词,以及每个词的大小,可以尝试generate_from_frequencies(),包括两个参数
- frequencies:一个字典,用于指定词和对应的大小
- max_font_size:最大字号,默认为None
generate() = process_text() + generate_from_frequencies()
以下用jieba提取出关键词和权重,再以此绘制词云
# 用jieba提取出关键词和权重,再以此绘制词云
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse# 打开文本
text = open('xyj.txt', encoding='utf-8').read()# 提取关键词和权重
freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
print(freq[:20])
freq = {i[0]: i[1] for i in freq}# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate_from_frequencies(freq)# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()# 保存到文件
wc.to_file('wordcloud.png')
参考学习:https://zhuanlan.zhihu.com/p/44165235
深度学习项目实战——1.基于WordCloud词云生成相关推荐
- 【PyTorch深度学习项目实战100例】—— 基于ResNet50实现多目标美味蛋糕图像分类 | 第51例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于CNN实现书法字体风格识别任务 | 第62例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于聚类算法完成航空公司客户价值分析任务 | 第18例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— 基于逻辑回归方法完成垃圾邮件过滤任务 | 第22例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 深度学习项目实战-关键点定位视频课程
课程目标 快速掌握如何使用caffe框架完成一个深度学习的实际项目 适用人群 深度学习爱好者,全民皆可入门 课程简介 深度学习项目实战-关键点定位课程以人脸关键点检测为背景,选择多阶段检测的网络架构, ...
- 【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 【PyTorch深度学习项目实战100例】—— Python+OpenCV+MediaPipe手势识别系统 | 第2例
前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...
- 『深度学习项目四』基于ResNet101人脸特征点检测
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- 深度学习项目实战(一):猫狗识别
深度学习项目实战(一):猫狗识别 文章目录 深度学习项目实战(一):猫狗识别 项目背景: 数据读取: 网络架构 卷积神经网络训练 项目背景: 猫狗识别是卷积神经网络的入门实战案例,目的在于计算机可以识 ...
最新文章
- C++函数参数是结构体或者数组(cstdarg/.../va_arg/va_end)
- java 解锁关闭文件占用_程序员:Java文件锁定、解锁和其它NIO操作
- 提高语音识别率:必须加入深度学习吗?
- win10 x64+VS2017社区版+OpenCV3.2.0安装
- [ubuntu][原创]ubuntu18.04安装rabbitvcs正确方法
- 《软件测试》[(美)Ron Patton]第三章阅读总结
- 数据全生命周期管理,华为FusionData一个方案搞定
- 天梯图excl_2017最全【CPU天梯图】
- 神舟战神 Z8 2022款评测
- 计算机及应用可以评职称么,可以跨专业评职称吗?
- 微信小程序5——小程序网络数据请求
- 英语二 - 常用词根一
- bu yong di san fang jiao huan liang ge shu zi
- linux 格式化 sda,linux – 如何将/ dev / sda挂载并格式化为不同的/ dev / name?
- html+css模仿的锤子官方首页
- python中的Locust是什么
- 自定义漂亮的Android SeekBar样式
- STM32-UART串口应用
- Flume KafkaChannel的使用
- 时间相减,得出相差的年,天,时,分,秒(moment,new Date())