当前位置: 首页 > news >正文

词云图制作

词云图制作

一、什么是词云

在这里插入图片描述

这就是词云。

“词云”的概念最早是美国西北大学新闻学副教授、新媒体专业主任里奇•戈登( Rich Gordon )提出的。词云( Word Cloud ),又称文字云、标签云( Tag Cloud )、关键词云( Keyword Cloud ),是文本数据的一种可视化展现方式,它一般是由文本数据中提取的词汇组成某些彩色图形。词云图的核心价值在于以高频关键词的可视化表达来传达大量文本数据背后的有价值的信息。

二、基础技术

此处是以《滕王阁序》为文本进行的实验

1、词根拆解

import jieba.posseg as pseg# 需要制作图云的文本位置
text_file = open("滕王阁序.txt", encoding="utf-8").read()
# 词根拆解对象,对象格式为 词、词性
words = pseg.cut(text_file, '')

jieba可以按照文本的词缀将全文本按照词性进行拆分

将words输出查看

for word, flag in words:print(f'word: {word}, flag: {flag}')

格式如下

word: 豫章, flag: ns
word:, flag: n
word:, flag: n

flag的部分值如下

flag含义
n名词
x标点符号
v动词
ns地名

2、获取高频词

将拆分的词根放到一个list,按照出现的次数排列,获取前两个

from collections import Counter
report_words = []
for word, flag in words:report_words.append(word)
result = Counter(report_words).most_common(2)  

结果如下

[('帝子', 2), ('豫章', 1)]

3、设置停用词

文本中可能会出现大量无用词汇(如:你、我、他),需要将这些词汇排除在外,避免对结果造成干扰。

from wordcloud import WordCloud, STOPWORDS
stopwords = set(STOPWORDS)
stopwords.update(["你, "", "他"])
wordcloud = WordCloud(.....stopwords=stopwords,  # 停用词......)  

4、设置图云形状

有时为了展示的形状规格化,会找个图片让词云按照制定图片的轮廓进行展示

import PIL.Image as Image
import numpy as np
from wordcloud import WordCloud
# egg.png 为图片的全路径
background = Image.open("egg.png").convert('RGB')
mask = np.array(background)
wordcloud = WordCloud(.....mask =mask,  # 掩膜......)  

(此处暂未明晰为什么要转为np数组,翻看源码的时候发现默认值是这样的)、

 # recompute integral image
if self.mask is None:img_array = np.asarray(img_grey)
else:img_array = np.asarray(img_grey) + boolean_mask

5、设置字体和图云颜色

from wordcloud import WordCloud
# 字体样式路径(需要自己去下载)
font_path = r"./STLITI.TTF"
# 设置字体大小
max_font_size = 200
min_font_size = 10# 建立颜色数组,可更改颜色
color_list = ['#FF274B', '#37A2DA', '#FD666D', '#67E0E3']
# 调用颜色数组
colormap = colors.ListedColormap(color_list)
wordcloud = WordCloud(.....font_path=font_path,  # 字体路径colormap=colormap,  # 字体颜色max_font_size=max_font_size,  # 最大字体大小min_font_size=min_font_size,  # 最小字体大小......)  

6、WordCloud的参数

参数说明
scale输出清晰度
font_path自定义字体所在路径
colormap字体颜色
width输出图片宽度
height输出图片高度
background_color图片背景颜色
stopwords停用词
mask掩膜
max_font_size最大字体大小
min_font_size最小字体大小

三、完整案例演示

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import numpy as np
import jieba.posseg as pseg
from collections import Counter
import PIL.Image as Image
from matplotlib import colorsfile_path = r'E:\MYCODE\PYECHARTS\滕王阁序.txt'stop_words = ["的", "我"]
image_path = r"E:\MYCODE\PYECHARTS\egg.png"
color_list = ['#FF274B', '#37A2DA', '#FD666D', '#67E0E3']
target_path = r"E:\MYCODE\PYECHARTS\wordcloud.png"def split_word(file_path, word_length=None, word_flag=None, frequencylimit=None):"""将文本中的内容拆分成词根:param file_path: 文件路径:param word_length: 拆分结果中词的长度(长度小于参数值的词将被舍弃),不做设置赋值为 None:param word_flag: 词性 (n:名称、v:动词、x标点符号),不做设置赋值为 None:param frequencylimit: 频率限制,词的出现个数超过频率限制才返回。不做设置赋值为 None:return:"""# 需要制作图云的文本位置text_file = open(file_path, encoding="utf-8").read()# 词根拆解对象,对象格式为 词、词性words = pseg.cut(text_file, '')# 按指定长度和词性提取词report_words = []for word, flag in words:useword = wordif word_length is not None:useword = Noneif len(word) > word_length:useword = wordif word_flag is not None:useword = Noneif word_flag in flag:useword = wordif useword is not None:report_words.append(useword)# 统计高频词汇if frequencylimit is not None:result = Counter(report_words).most_common(frequencylimit)else:result = report_words# 将词汇统计结果转化为字典word_dict = dict(result)return word_dictdef get_word_cloud(word_dict, stop_words, image_path, color_list, target_path, font_path=None, other_field=None, show=False):"""获取词云图:param word_dict: 词云字典:param stop_words: 停用词列表:param image_path: 参照图片位置(用于设置图云形状):param font_path: 字体路径:param color_list: 颜色列表:param target_path: 目标图片路径:param other_field: 参考 default_field:param show: 是否展示:return:"""default_field = {'scale': 4, 'width': 1600, 'height': 900, 'background_color': 'white', 'max_font_size': 200,'min_font_size': 10}if other_field is not None:for field, value in other_field.items():if value is not None:default_field[field] = value# 设置停用词stopwords = set(STOPWORDS)stopwords.update(stop_words)# 设置png掩膜(需要设置的图云形状图片路径)background = Image.open(image_path).convert('RGB')mask = np.array(background)# 设置字体样式路径if font_path is None:font_path = r"./STLITI.TTF"# 建立颜色数组,可更改颜色if color_list is None:color_list = ['#FF274B', '#37A2DA', '#FD666D', '#67E0E3']# 调用颜色数组colormap = colors.ListedColormap(color_list)# 生成词云wordcloud = WordCloud(scale=default_field['scale'],font_path=font_path,colormap=colormap,width=default_field['width'],height=default_field['height'],background_color=default_field['background_color'],stopwords=stopwords,  # 停用词mask=mask,  # 掩膜max_font_size=default_field['max_font_size'],min_font_size=default_field['min_font_size'])wordcloud.generate_from_frequencies(word_dict)if show:# 使用 matplotlib 显示词云plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')plt.show()# 保存词云图wordcloud.to_file(target_path)if __name__ == '__main__':# 词根拆解word_dict = split_word(file_path=file_path, word_length=2, word_flag='n', frequencylimit=2000)print(word_dict)# 生成词云图get_word_cloud(word_dict=word_dict, stop_words=stop_words, image_path=image_path, color_list=color_list, target_path=target_path, show=True)

运行结果为第一章节的图片

相关文章:

词云图制作

词云图制作 一、什么是词云 这就是词云。 “词云”的概念最早是美国西北大学新闻学副教授、新媒体专业主任里奇•戈登( Rich Gordon )提出的。词云( Word Cloud ),又称文字云、标签云( Tag Cloud &#x…...

AndroidStudio与手机进行无线调试

(一)、前提条件 一部手机一条USB数据线一部电脑手机和电脑连接到同一个 Wifi开启手机的USB调试功能开启手机的无线调试功能 (二)、操作步骤 1、 将手机和电脑用USB数据线连接 2、 打开 终端,输入 adb devices ,查看手机和电脑是否连接成功。如下图: 2、…...

脉冲编码调制(PCM,Pulse Code Modulation)简介

脉冲编码调制(PCM,Pulse Code Modulation) 脉冲编码调制(PCM,Pulse Code Modulation)是一种将模拟信号转换为数字信号的技术。在音频处理、电话通信以及其他许多领域都有广泛应用。PCM通过采样、量化、编码等三个主要步骤将模拟信号转换为数…...

Pytorch transforms 的研究

绝对路径与相对路径差别 transforms的使用 from torchvision import transforms from PIL import Imageimg_path "dataset/train/bees/16838648_415acd9e3f.jpg" img Image.open(img_path) tensor_trans transforms.ToTensor() tensor_img tensor_trans(img) prin…...

一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等

一窥模板的替换和匹配方式:偏特化的参数比泛化版本的还要多:判断是不是std::pair<,>。_stdpair模板参数太多-CSDN博客 简介 在一个项目里,调用了第三封的库,这个库里面有个类用的很多,而且其构…...

《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》

《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 Pix2Pix模型概述 Pix2Pix是一种基于条件生成对抗网络(cGAN)的图像转换模型&#x…...

关于c#的简单应用三题

#region 输入一个正整数&#xff0c;求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…...

(十三)Spring教程——依赖注入之工厂方法注入

1.工厂方法注入 工厂方法是在应用中被经常使用的设计模式&#xff0c;它也是控制反转和单例设计思想的主要实现方法。由于Spring IoC容器以框架的方式提供工厂方法的功能&#xff0c;并以透明的方式开放给开发者&#xff0c;所以很少需要手工编写基于工厂方法的类。正是因为工厂…...

Redission中的Lua脚本写法、理解

对于Redission看门狗机制中的为了保证原子性的Lua脚本的写法规则是什么样的呢 &#xff1f; 对于源码中的Lua脚本又是什么意思&#xff1f; 我们一起来看一下 首先&#xff0c;我们先基本的熟悉一下lua脚本的逻辑 在Lua脚本中&#xff0c;if (…) then … end 语句的执行过程…...

视频共享融合赋能平台LntonCVS视频监控管理平台视频云解决方案

LntonCVS是基于国家标准GB28181协议开发的视频监控与云服务平台&#xff0c;支持多设备同时接入。该平台能够处理和分发多种视频流格式&#xff0c;包括RTSP、RTMP、FLV、HLS和WebRTC。主要功能包括视频直播监控、云端录像与存储、检索回放、智能告警、语音对讲和平台级联&…...

GraphRAG + GPT-4o mini 低成本构建 AI 图谱知识库

更好的效果&#xff0c;更低的价格&#xff0c;听起来是不是像梦呓&#xff1f; 限制 首先&#xff0c;让我们来介绍一个词&#xff1a;RAG。 简单来说&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09; 的工作原理是将大型文档…...

全国区块链职业技能大赛第十套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 养老保险平台中涉及到参保人、社保局、公安局、工作单位等参与方,他们需要在区块链养老保险平台中完成账户注册、身份上链、社保代缴、信息核查等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于养老保险…...

分布式Apollo配置中心搭建实战

文章目录 环境要求第一步、软件下载第二步、创建数据库参考文档 最近新项目启动&#xff0c;采用Apollo作为分布式的配置中心&#xff0c;在本地搭建huanj 实现原理图如下所示。 环境要求 Java版本要求&#xff1a;JDK1.8 MySql版本要求&#xff1a;5.6.5 Apollo版本要求&…...

Android monkey命令和monkey脚本详解

Monkey命令 monkey 是 Android 平台上一个非常有用的工具&#xff0c;它可以帮助开发者在设备上生成随机的用户事件流&#xff0c;如按键输入、触摸屏手势等&#xff0c;以此来测试应用的稳定性。这对于发现应用中的崩溃、异常和性能问题特别有用。 基本语法 adb shell monk…...

vue 实现对图片的某个区域点选, 并在该区域上方显示该部分内容

目录 1、通义灵码实现&#xff1a; 2、csdn的C知道&#xff1a; 3、百度comate&#xff1a; 1、通义灵码实现&#xff1a; 在 Vue 中实现对图片某个区域的点选并显示该区域属于哪一部分&#xff0c;通常涉及到几个关键步骤&#xff1a; 图片区域划分&#xff1a; 首先&#…...

配置文件格式 INI 快速上手

文章目录 1.简介2.语法节键值对注释大小写空白行数据类型字符串 (String)整数 (Integer)浮点数 (Float)布尔值 (Boolean)列表 (List) 3.示例4.解析参考文献 1.简介 INI 的全称是 Initialization&#xff0c;即为初始化文件&#xff0c;最早是 Windows 系统配置文件所采用的格式…...

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素&#xff08;机密性、完整性、可用性&…...

SpringMvc有几个上下文

你好&#xff0c;我是柳岸花明。 SpringMVC作为Spring框架的重要组成部分&#xff0c;其启动流程和父子容器机制是理解整个框架运行机制的关键。本文将通过一系列详细的流程图&#xff0c;深入剖析SpringMVC的启动原理与父子容器的源码结构。 SpringMVC 父子容器 父容器的创建 …...

k8s部署rabbitmq集群

1 部署集群 1.1 安装 # 创建一个中间件的命名空间 kubectl create namespace middleware # 创建ConfigMap,包含RabbitMQ的配置文件内容 kubectl apply -f rabbitmq-configmap.yaml # 配置用于存储RabbitMQ数据的PersistentVolume&#xff08;PV&#xff09;和PersistentVolum…...

Python利用包pypinyin汉字转拼音(处理多音字)

一、汉字转拼音 在python中将汉字的拼音输出可以采用pypinyin包&#xff0c;一下是简单的demo示例&#xff1a; 默认调用pinyin方法转换时时默认时带声调的&#xff0c;不带声调需要添加“styleStyle.NORMAL”参数。 from pypinyin import pinyin, Styledef pinyin_transfer…...

数据库核心概念与实战应用全解析

1. 数据库基础概念扫盲 第一次接触数据库时&#xff0c;我被各种术语绕得头晕眼花。直到自己动手建了电商系统用户表才明白&#xff0c;数据库本质上就是个电子文件柜。比如你在淘宝下单时&#xff0c;订单信息就存放在名为"orders"的抽屉里&#xff0c;用户数据放在…...

java Ai开发工具①

笼统了解大模型是个啥&#xff1f;大模型就像个“全能型天才”&#xff0c;天生啥都懂点&#xff0c;你再教它一门手艺&#xff08;比如Java&#xff09;&#xff0c;它就能快速上手并成为高手——但它骨子里还是那个会聊天、会思考、会举一反三的“通才”。三种工具&#x1f9…...

Linux 调度器中的远程抢占:smp_send_reschedule 的实现与应用

一、简介在现代多核处理器架构中&#xff0c;对称多处理&#xff08;SMP, Symmetric Multi-Processing&#xff09; 已成为服务器、桌面乃至移动设备的标准配置。Linux内核作为支持最广泛硬件平台的操作系统&#xff0c;其调度器必须高效地协调多个CPU核心上的任务分配&#xf…...

嵌入式方向输入抽象库:摇杆与按键的语义化状态映射

1. 项目概述direction是一个轻量级、零依赖的嵌入式方向输入抽象库&#xff0c;专为资源受限的微控制器&#xff08;如 STM32F0/F1/L0/L1、nRF52、ESP32-C3、RP2040 等&#xff09;设计。其核心目标并非实现复杂的人机交互逻辑&#xff0c;而是以最小的代码体积和确定性的执行时…...

基于Qwen3-ASR的语音爬虫:音频内容自动化采集与分析

基于Qwen3-ASR的语音爬虫&#xff1a;音频内容自动化采集与分析 1. 引言 你有没有遇到过这样的情况&#xff1a;需要从海量的音频内容中提取有价值的信息&#xff0c;却苦于手动处理效率太低&#xff1f;无论是市场调研、舆情监控&#xff0c;还是内容分析&#xff0c;传统的…...

ERPNext在Ubuntu 22.04上的保姆级安装指南:从零配置到邮件服务设置

ERPNext在Ubuntu 22.04上的深度部署实战&#xff1a;从系统调优到高可用配置 对于技术团队而言&#xff0c;企业级开源ERP系统的自主部署不仅是成本控制的手段&#xff0c;更是掌握核心技术栈的重要途径。作为Frappe框架的旗舰产品&#xff0c;ERPNext在制造业、零售业和项目管…...

如何为LaTeX简历项目贡献代码:开源参与全流程指南

如何为LaTeX简历项目贡献代码&#xff1a;开源参与全流程指南 【免费下载链接】resume Software developer resume in Latex 项目地址: https://gitcode.com/gh_mirrors/res/resume 参与开源项目是提升技能、建立专业网络的绝佳方式。本文将以GitHub加速计划中的res/res…...

别再手动清理了!给RocketMQ客户端日志(rocketmq_client.log)上个“自动瘦身”套餐

RocketMQ客户端日志自动化管理&#xff1a;从配置优化到运维实践 在分布式系统架构中&#xff0c;日志管理往往被视为"二等公民"——直到某个深夜&#xff0c;磁盘告警短信把运维团队从睡梦中惊醒。RocketMQ作为消息中间件的核心组件&#xff0c;其客户端日志(rocke…...

ZYNQ XADC避坑指南:轮询vs中断怎么选?实测PS接口性能与常见误区

ZYNQ XADC深度实战&#xff1a;轮询与中断模式的选择策略与性能优化 在嵌入式系统设计中&#xff0c;模拟信号采集的实时性和效率往往直接影响整体系统性能。ZYNQ SoC内置的XADC模块为工程师提供了便捷的片上模拟监测解决方案&#xff0c;但如何充分发挥其性能潜力却需要深入理…...

【技术解析】交叉注意力网络在小样本分类中的关键作用与实现

1. 小样本分类的困境与突破 想象一下&#xff0c;你面前突然出现一种从未见过的珍稀鸟类&#xff0c;而手头只有3张它的照片。作为鸟类学家&#xff0c;你需要仅凭这几张照片就能在野外准确识别这种鸟类——这就是典型的小样本分类&#xff08;Few-shot Classification&#xf…...