python 10行代码生成词云图片(基础词云、形状词云)

2023-11-13

一、词云简介

词云,也称为文本云或标签云。在词云图片中,关键词在文本中出现的次数越多,则表示该词越重要,其在词云中所占面积区域也越大,出现次数越少,所占面积越小。词云可任意更换背景为白色的图形以改变词云形状。

二、WordCloud原理简介

wordcloud的原理比较好理解,大致为:

  1. 首先对文本数据进行分词,使用process_text()方法
  2. 接着计算每个词在文本中的出现频率,生成一个字典。词频用于确定一个词的重要性,即词云文件中词语的显示大小。
  3. 然后根据词频的数值按比例生成一个图片的布局,类IntegralOccupancyMap 是该词云的数据可视化方式的核心。生成词的颜色、位置、方向等。
  4. 最后将词按对应的词频在词云画布上生成图片,核心方法是generate_from_frequencies,不论是generate()还是generate_from_text()都最终用到generate_from_frequencies
  5. 完成词云上各词的着色,默认是随机着色,通过调用to_file()完成词云文件的保存。

参考:https://www.cnblogs.com/jasonhaven/p/7596799.html?ivk_sa=1024320u

三、WordCloud参数

font_path 字体路径 string,如font_path='msyh.ttc'
mask 绘制的词云形状 nd-array/None,default=None,如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被mask取代。全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。
width 画布宽度 int,default=400
height 画布高度 int,default=200
background_color 背景颜色 default="black",如background_color='white',背景颜色为白色
max_words 词的最大个数 number,default=200
stopwords 需要过滤掉的词 如果为空,则使用内置的stopwords
prefer_horizontal 单词水平方向排版出现频率 float,default=0.9,则词语垂直方向排版出现频率为 0.1
scale 按照比例进行放大画布 float,default=1,如设置为1.5,则长和宽都是原来画布的1.5倍
min_font_size 显示最小字体大小 default=4
max_font_size 显示最大字体大小 int/None,default=None
font_step 字体大小迭代步长 int,default=1,若步长大于1,会加快运算但是可能导致结果出现较大的误差
mode 背景 string,default="RGB",当参数为"RGBA"并且background_color为None时,背景为透明
relative_scaling 单词频率对其字体大小的权重 float,一般设置为0.5
color_func 颜色函数 default=None
regexp 使用正则表达式分隔输入的文本 string or None (optional),默认为 r"\w[\w']+"
random_state 每个单词返回一个PIL颜色
collocations 是否包括二元词组 bool, default=True
colormap 对每个词随机分配颜色 default="viridis",若指定color_func,则忽略该方法
normalize_plurals 移除单词末尾的's' bool,default=True

四、使用步骤

安装相应的第三方库:

pip install wordcloud

pip install jieba

pip install matplotlib

因为wordcloud里的process_text函数是针对英文进行分词的,无法对中文更好地分词,只在各种标点符号中切分中文,显然这并不是我们想要的效果,所以我们若要生成中文的词云,需要先对中文文本进行分词再调用相应的函数。 分词操作: 通过jieba分词,用空格拼接词语字符串,process_text函数就能返回正确的分词计数的字典。

五、python代码

1、基础词云,参考代码如下:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

text = '用python制作词云,生成词云图片,只用10行python代码生成词云'
cut_word = " ".join(jieba.cut(text))

wc = WordCloud(font_path = r'/msyh.ttc')
wc.generate(cut_word)

plt.imshow(wc)
plt.axis("off") # 不显示坐标轴
plt.show()

词云展示:

备注:增加停用词处理,效果会更好,可参考以下形状词云代码。

2、形状词云,参考代码如下:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image


# 读取文本
with open("./data/sentences.txt",encoding="utf-8") as f:
sentence = f.read()
print(sentence)
sentence_cut = jieba.lcut(sentence) # 生成分词列表
text = ' '.join(sentence_cut) # 以空格连接字符串

#获取停用词 去掉不需要显示的词
stopwords_path = 'data/stopwords.txt'
stopwords = [line.strip() for line in open(stopwords_path,'r',encoding='utf-8').readlines()]

# 读入背景图片
img = Image.open("./monkey2.jpg") # 打开遮罩图片
mask = np.array(img) #将图片转换为数组

wc = WordCloud(font_path="msyh.ttc",
   mask=mask,
   width = 1000,
   height = 700,
   background_color='white',
   max_words=200,
   stopwords=sentence).generate(text)

# 以下代码显示图片
plt.imshow(wc, interpolation='bilinear')# 用plt显示图片
plt.axis("off") # 不显示坐标轴
plt.show()
# wc.to_file("wordcloud2.png") # 保存为本地图片

注意:调用generate和generate_from_text两种方法一样,最终都是会调用generate_from_text方法。

使用的形状原图:

​​​​​​​

词云生成结果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kerry_55/article/details/122090231

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 10行代码生成词云图片(基础词云、形状词云) 的相关文章

随机推荐

  • C++ bind与回调函数

    1 回调函数 注册回调函数里可以使用functional来统一接口 可以传入函数指针 lambda bind等 函数1 2 为一个模块 为回调函数 函数3为一个模块 为注册回调函数 形参为函数指针 注册回调函数的入参为函数指针 指向回调函数
  • 开发实践

    0x00 前言简述 描述 最近在研究app自动化测试相关资料 正好最近喜欢上了耍快手以及抖音 头条 我突发奇想能否自动的刷视频而不需要我们动手指 我想懒人就是这样炼成的 我作为一名运开 想到我们可以使用adb工具加上PowerShell或者
  • 基于HAL库的STM32单定时器多路输入捕获测量PWM的频率和占空比实现(状态机方式实现)

    目录 写在前面 先回顾下定时器的单路捕获PWM 多路捕获PWM的频率和占空比 状态机实现 我的思路 状态图 配置 给出示例代码 测试效果 写在前面 先有了这篇文章实现了单定时器的多通道测量频率 以外部时钟的方式可测量任意频率的方波 奈何不能
  • UIImage加载本地图片资源

    图片读取 根据是否将创建好的对象缓存入系统内存 有两类创建UIImage 对象的方法可选 UIImage 缓存 imageNamed 只需传入文件名 扩展名 可选 即可 不缓存 imageWithContentsOfFile 必须传入文件的
  • vmware克隆Centos6 网卡无法启动

    原因是以下三处mac地址不一致 1 使用dmesg grep eth 获得eth编号和MAC地址 2 cat etc udev rules d 70 persistent net rules 3 cat etc sysconfig netw
  • 背包问题学习笔记-完全背包

    题意描述 有 N 种物品和一个容量是 V 的背包 每种物品都有无限件可用 第 i 种物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N V
  • c语言规定简单的变量做实参时它和对应行参,C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。...

    根据规范载体形式的不同法律 语言规应形可将渊源法律分为 简单间 变量年 平高比国外先进水油耗 一 规划种方编制的各法中 投入于 分析法属产出 根据可供对各地区的研节水究量和水量 规划需水可减我国的节量6通过亿m水措施约少年 0年到2 下7的
  • android MediaPlayer 中的JNI总结

    1 在android media MediaPlayer cpp 中 定义fields静态变量 里面有两个重要的成员变量 context 用来保存创建的mediaplayer post event 用来将JNI层的事件回调给JAVA层 实现
  • 关于使用IAR软件stlink下载stm8程序失败问题

    以前一直使用IAR很正常 这次使用使用stlink下载 stlink莫名其妙的就不能下载了 断电 重启 有时候能用 有时候真的就不能用了提示信息如下图 Failed to initialize communcation with hardw
  • Nginx 配置TCP代理转发

    Nginx 配置TCP代理转发 使用Nginx 新版的 stream方式 实现TCP UDP代理转发 在Nginx安装了 stream 模块后 修改nginx conf 在主配置文件下 nginx conf 增加 stream配置 如 ng
  • VUE 中Element-ui 添加滚动条

  • C/C++:02 1/2. 类和对象

    文章目录 前言 1 类的定义和对象的创建 类的定义 创建对象 访问类成员 使用对象指针 2 类的成员变量和成员函数 成员函数的定义 类体和类外定义成员函数的区别 3 C 类成员的访问权限以及类的封装 成员的访问限定 类的封装 6 C 构造函
  • c++20特性(模块)

    看了c 白皮书之后 发现c 20有了很大的改变 写下一些其中的内容 模块 export指令可以使代码可以被import到另一个模块中 import指令可以使从另一个模块export出来的代码能够被使用 import的实体不会被隐式的再exp
  • 支付平台--网联详解

    支付清算体系是一个国家的金融基础设施 或说是公共服务 而提供这一服务的机构是银联 而现在是银联和网联 现在我国大体维持 结算 清算 二级制的支付体系 通俗的说 银行与商户 消费者之间为结算关系 而银行之间构成清算关系 这两个层次完成后 支付
  • 训练大模型时显存占用影响因素总结(以starcoderplus 15.5B为例)

    背景 实验室计算资源紧张 单卡最大显存是RTX 3090 24G 但是又要用大模型 指参数量达到10B 做实验 模型文件获取 大约60B https huggingface co bigcode starcoderplus tree mai
  • 2. 2019年《斯坦福大学CS330多任务和元学习》第2讲:多任务和元学习基础【中文字幕】

    2019年 斯坦福大学CS330多任务和元学习 第2讲 多任务和元学习基础 中文字幕 https www bilibili com video BV17a4y1J7eG 斯坦福大学切尔西 芬恩 Chelsea Finn 助理教授 http
  • 微星b560m mortar wifi 开机二检(开机灭了1秒后自动重启)

    微星b560m mortar wifi 开机二检 开机灭了1秒后自动重启 1 起因 为了照顾旧CPU 还想把内存扩容到64GB 就选择了DDR4的4条插槽的 B560M主板 都弄好之后 开机发现在按下电源键之后 通电自检后断电了大概2秒左右
  • ESLint(JavaScript代码校验)

    概要 关于JavaScript的代码校验 2016年5月以来大家一直使用jswatchdog 2018年4月以后 从运维的角度上来说 我们更推荐使用ESLint 关于ESLint的设置 我们更推荐有利于kintone自定义开发的eslint
  • java报错信息--Spring篇【1】

    报错信息一 时间 学习spring的aop容器 xml形式配置aop功能 起因 测试xml形式配置好的aop功能 经过 在运行junit测试时出现以下报错信息 警告 Exception encountered during context
  • python 10行代码生成词云图片(基础词云、形状词云)

    一 词云简介 词云 也称为文本云或标签云 在词云图片中 关键词在文本中出现的次数越多 则表示该词越重要 其在词云中所占面积区域也越大 出现次数越少 所占面积越小 词云可任意更换背景为白色的图形以改变词云形状 二 WordCloud原理简介