【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月前
|
机器学习/深度学习 人工智能 算法
机械视觉:原理、应用及Python代码示例
机械视觉:原理、应用及Python代码示例
|
2月前
|
机器学习/深度学习 自然语言处理 数据可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
|
11天前
|
自然语言处理 Python
从菜鸟到大神,一篇文章带你玩转Python闭包与装饰器的深度应用
【7月更文挑战第4天】Python中的闭包和装饰器是增强代码优雅性的关键特性。闭包是能访问外部作用域变量的内部函数,如示例中的`inner_function`。装饰器则是接收函数并返回新函数的函数,用于扩展功能,如`my_decorator`。装饰器可与闭包结合,如`repeat`装饰器,它使用闭包记住参数并在调用时重复执行原函数。这些概念提升了代码复用和可维护性。
|
13天前
|
测试技术 API 持续交付
【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分
【7月更文挑战第2天】【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分:1) 自动化测试的重要性与Python的易用性、库支持、跨平台和社区优势;2) Unittest作为标准测试框架的基础用法,及Pytest的灵活性与强大功能;3) 实践中包括Selenium的Web UI测试、Requests的API测试,强调测试隔离、持续集成等最佳实践。Python助力高效稳定的软件测试。
24 2
|
21天前
|
搜索推荐 Python Windows
python中对于wordcloud词云生成报错提示的解决
通过搜索印象错误信息:ValueError:Only supported for TrueType fonts,几乎大部分人给出的选项都是让你指定TrueType fonts路径,或者新下载TTF字体,并重新指定,但是这两种解决方案并无法解决报错。 在真正解决问题之前,先来介绍几个与之相关的知识点,对于有经验的人,这样的知识点完全是“小菜”,但是对于初学者,这种知识点就是因为缺少相关实践而无从下手,无从搜索引擎。
|
21天前
|
数据采集 自然语言处理 数据可视化
拿来及用的Python词云图代码 | wordcloud生成词云详解
词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们就来学习一下Python生成词云的常用库wordcloud。
|
25天前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云(Word Cloud),又称为文字云或标签云,是一种用于文本数据可视化的技术,通过不同大小、颜色和字体展示文本中单词的出现频率或重要性。在词云中,更频繁出现的单词会显示得更大,反之则更小。
|
25天前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云是文本数据可视化的工具,显示单词频率,直观、美观,适用于快速展示文本关键信息。 - 用途包括关键词展示、数据探索、报告演示、情感分析和教育。 - 使用`wordcloud`和`matplotlib`库生成词云,`wordcloud`负责生成,`matplotlib`负责显示。 - 示例代码展示了从简单词云到基于蒙版、颜色和关键词权重的复杂词云生成。 - 案例覆盖了中文分词(使用`jieba`库)、自定义颜色和关键词权重的词云。 - 代码示例包括读取文本、分词、设置词云参数、显示和保存图像。
48 1
|
5天前
|
Python Windows
从菜鸟到大神:一篇文章带你彻底搞懂Python并发编程——线程篇与进程篇的深度较量!
【7月更文挑战第10天】Python并发编程对比线程与进程。线程适合IO密集型任务,利用`threading`模块,但GIL限制CPU并行。进程适用于CPU密集型任务,通过`multiprocessing`实现,独立内存空间,启动成本高。例子展示了如何创建和管理线程与进程以提高效率。选择取决于任务类型和资源需求。
14 0
|
1月前
|
Python
别再被Python的面向对象编程绕晕了!一篇文章带你理清思路!
【6月更文挑战第12天】了解Python的面向对象编程(OOP)至关重要,它基于“万物皆对象”的理念,通过类(Class)定义对象的属性和方法。对象是类的实例,具有状态和行为。OOP包括类、对象、属性和方法四个基本概念。例如,`class Dog`定义了一个有`name`和`age`属性及`bark`方法的类。OOP提供代码重用、模块化、可扩展性和易理解性等优势,是现代编程的常用范式。通过学习,你可以更好地掌握这一核心技能。