【python词云】利用python对文章进行视觉上的浓缩展现
【摘要】
文章目录
一、素材准备二、库的准备三、wordcloud()的参数四、制作词云五、结果展示及原图对比六、在线网页实现七、推荐阅读
一、素材准备
文本信息:取自《人民日报》一篇关于就业的...
一、素材准备
- 文本信息:取自《人民日报》一篇关于就业的报道
- 停用词:我选的百度的
- 图片:一张以白色为底的小黄人图片
- 和我同款素材(我上传至百度网盘):
链接:https://pan.baidu.com/s/1ZRXAcXALzmxIRNUFXCGNDg
提取码:8xbn
二、库的准备
- wordcloud (词云制作)
- jieba (中文分词)
- numpy (数组处理)
- matplotlib (基础画图)
- PIL (读取图片)
- collections(统计词频)
三、wordcloud()的参数
参数 | 描述 |
---|---|
width | 指定词云对象生成图片的宽度,默认400像素 |
height | 指定词云对象生成图片的高度,默认200像素 |
min_font_size | 指定词云中字体的最小字号,默认4号 |
max_font_size | 指定词云中字体的最大字号,根据高度自动调节 |
font_step | 指定词云中字体字号的步进间隔,默认为1 |
font_path | 指定字体文件的路径,默认为None |
max_words | 指定词云显示的最大单词数量,默认200 |
stop_words | 指定词云的排除词列表,即不显示的单词列表 |
mask | 指定词云形状,默认为长方形,需要引用imread()函数 |
background_color | 指定词云图片的背景颜色,默认为黑色 |
四、制作词云
流程如下:
- 读取文本和停用词
- 对文本进行分词处理并进行筛选
- 统计词频
- 提取底片图片颜色(非必要)
- 制作词云
- 显示并保存词云图
import jieba
import collections
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
# 素材路径
test_text = 'D:/Pycharm/wordcloud/texts/job.txt' # 文本素材
test_stop = 'D:/Pycharm/wordcloud/stopwords/baidu_stopwords.txt' # 停用词
test_mask = 'D:/Pycharm/wordcloud/pictures/1.png' # 底板图片素材
test_font = 'D:/Pycharm/wordcloud/SourceHanSerifK-Light.otf' # 字体
# 读取处理文本和停用词
text = open(test_text, encoding='utf8').read()
STOPWORDS_BAIDU = open(test_stop, encoding='utf8').read().split()
# 分词和过滤
# 筛选结果为不在停用词范围内且长度大于1的词
word_list = []
for word in jieba.cut(text):
if word not in set(STOPWORDS_BAIDU) and len(word) > 1:
word_list.append(word)
# 统计词频
word_counts = collections.Counter(word_list)
# 选出频率前10的词
word_counts_top100 = word_counts.most_common(10)
# 读取图片并提取图片颜色
im_mask = np.array(Image.open(test_mask))
im_colors = ImageColorGenerator(im_mask)
# 制作词云
my_cloud = WordCloud(
background_color='white', # 设置背景颜色 默认是black
mask=im_mask, # 设置图片底板
width=900, height=600, #
max_words=100, # 词云显示的最大词语数量
font_path=test_font, # 设置字体 显示中文
max_font_size=30, # 设置字体最大值
min_font_size=5, # 设置子图最小值
random_state=50 # 设置随机生成状态,即多少种配色方案
).generate_from_frequencies(word_counts)
my_cloud.recolor(color_func=im_colors) # 改变文字颜色
# 显示生成的词云
ax = plt.imshow(my_cloud)
# 显示设置词云图中无坐标轴
plt.axis('off')
plt.show()
# 保存图片
ax.figure.savefig('D:/词云.png', bbox_inches='tight', dpi=150)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
五、结果展示及原图对比
- 原图:
- 词云图:
六、在线网页实现
在线的网页有很多,但一般都需要登陆使用,如:https://www.yciyun.com/ 这个在线的词云生成器。我看到需要登陆,这里就不展示效果了。不过还可以展示一下网页默认的试用款(嘻嘻,水一水 )
网页虽然比较方便,但不如自己动手做出来的有感觉、有成就感。
如果需要词云来润色文章、报告之类的,赶时间的情况下,还是能省事就省事。
七、推荐阅读
文章来源: luckystar.blog.csdn.net,作者:爱打瞌睡的CV君,版权归原作者所有,如需转载,请联系作者。
原文链接:luckystar.blog.csdn.net/article/details/123354025
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)