【python词云】利用python对文章进行视觉上的浓缩展现

简介: 简介:【python词云】利用python对文章进行视觉上的浓缩展现

一、素材准备


  • 文本信息:取自《人民日报》一篇关于就业的报道
  • 停用词:我选的百度的
  • 图片:一张以白色为底的小黄人图片
  • 和我同款素材(我上传至百度网盘)
    链接:https://pan.baidu.com/s/1ZRXAcXALzmxIRNUFXCGNDg
    提取码:8xbn


二、库的准备


  • wordcloud (词云制作)
  • jieba (中文分词)
  • numpy (数组处理)
  • matplotlib (基础画图)
  • PIL (读取图片)
  • collections(统计词频)


三、wordcloud()的参数


image.png


四、制作词云


流程如下:

  • 读取文本和停用词
  • 对文本进行分词处理并进行筛选
  • 统计词频
  • 提取底片图片颜色(非必要)
  • 制作词云
  • 显示并保存词云图
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)


五、结果展示及原图对比


  • 原图:image.png词云图:image.png


六、在线网页实现


在线的网页有很多,但一般都需要登陆使用,如:https://www.yciyun.com/ 这个在线的词云生成器。我看到需要登陆,这里就不展示效果了。不过还可以展示一下网页默认的试用款(嘻嘻,水一水image.gif网页虽然比较方便,但不如自己动手做出来的有感觉、有成就感。

如果需要词云来润色文章、报告之类的,赶时间的情况下,还是能省事就省事。


七、推荐阅读


相关文章
|
2月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
5月前
|
Python
揭秘Python编程核心:一篇文章带你深入掌握for循环与while循环的奥秘!
【8月更文挑战第21天】Python中的循环结构——for循环与while循环,是编程的基础。for循环擅长遍历序列或集合中的元素,如列表或字符串;而while循环则在未知循环次数时特别有用,基于某个条件持续执行。本文通过实例展示两种循环的应用场景,比如用for循环计算数字平方和用while循环计算阶乘。此外,还通过案例分析比较了两者在处理用户输入任务时的不同优势,强调了根据实际需求选择合适循环的重要性。
62 0
|
2月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
3月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
3月前
|
编解码 UED Python
Python批量修改指定目录下图片的大小名文章
Python批量修改指定目录下图片的大小名文章
28 1
|
3月前
|
自然语言处理 计算机视觉 Python
用 Python 创建词云
用 Python 创建词云
48 2
|
4月前
|
存储 Go C语言
Python 的整数是怎么实现的?这篇文章告诉你答案
Python 的整数是怎么实现的?这篇文章告诉你答案
78 7
|
4月前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
在Python的Web开发领域中,RESTful API是核心技能之一。本教程将从零开始,通过实战案例教你如何使用Flask框架搭建RESTful API。首先确保已安装Python和Flask,接着通过创建一个简单的用户管理系统,逐步实现用户信息的增删改查(CRUD)操作。我们将定义路由并处理HTTP请求,最终构建出功能完整的Web服务。无论是初学者还是有经验的开发者,都能从中受益,迈出成为Web开发高手的重要一步。
70 4
|
4月前
|
数据可视化 数据挖掘 Python
告别枯燥数字,拥抱视觉盛宴!Python 数据分析中的数据可视化艺术,你 get 了吗?
在数据驱动时代,数据分析至关重要,但单纯依赖数据表格难以揭示其背后的洞见。这时,数据可视化便彰显出其重要性,尤其借助 Python 的强大工具如 Matplotlib、Seaborn 和 Plotly 等,可将数据转化为直观的图形。Matplotlib 提供高度定制的图表,Seaborn 则简化了图表美化过程。通过折线图、散点图、箱线图、小提琴图及热力图等多种图表形式,我们可以更深入地理解数据分布与关系,有效传达信息并支持决策制定。数据可视化不仅是一门技术,更是讲述数据故事的艺术。
82 3
|
3月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
43 0