python词云生成库-wordcloud

news2024/11/23 4:27:06

内容目录

      • 一、模块介绍
      • 二、WordCloud常用的方法
        • 1. generate(self, text)
        • 2. generate_from_frequencies(frequencies)
        • 3. fit_words(frequencies)
        • 4. generate_from_text(text)
      • 三、进阶技巧
        • 1. 设置蒙版
        • 2. 设置过滤词

WordCloud 是一个用于生成词云的 Python 库,它可以根据提供的文本数据创建出美观的视觉化图像,其中文本的大小和频率成比例。同时也提供了丰富的绘制功能, 可以结合 matplotlib 库进行复杂的操作
关键的方法就是WordCloud方法

一、模块介绍

导入模块

from wordcloud import WordCloud

该类的定义如下:

def __init__(self, font_path=None, width=400, height=200, margin=2,
             ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,
             color_func=None, max_words=200, min_font_size=4,
             stopwords=None, random_state=None, background_color='black',
             max_font_size=None, font_step=1, mode="RGB",
             relative_scaling='auto', regexp=None, collocations=True,
             colormap=None, normalize_plurals=True, contour_width=0,
             contour_color='black', repeat=False,
             include_numbers=False, min_word_length=0, collocation_threshold=30):
    ... ... 

其中各个参数和属性的说明如下:

font_path: 字符串, 词云中字体格式文件的路径
用于字体的字体路径(OTF或TTF)。默认为Linux机器上的DroidSansMono路径。如果你在其他操作系统上或没有这个字体,你需要调整这个路径。
width: 整数,默认=400, 画布的宽度。
height: 整数,默认=200, 画布的高度。
prefer_horizontal: 浮点数,默认=0.90
尝试水平适应相对于垂直适应的比例。如果 prefer_horizontal < 1,算法会在单词不适应时尝试旋转单词。(目前没有内置方法仅获取垂直单词。)
mask: 数组或None,默认=None
如果不为None,给出在何处绘制单词的二进制掩模。如果mask不为None,将忽略width和height,并使用mask的形状。所有白色(#FF或#FFFFFF)条目将被视为“屏蔽”,而其他条目则可以自由绘制。
contour_width: 浮点数,默认=0
如果mask不为None且contour_width > 0,绘制掩模轮廓。
contour_color: 颜色值,默认="black", 掩模轮廓颜色。
scale: 浮点数,默认=1
计算与绘制之间的缩放。对于大的词云图像,使用scale而不是更大的画布尺寸会显著更快,但可能导致单词的拟合更粗糙。
min_font_size: 整数,默认=4, 使用的最小字体大小。当这个大小没有更多空间时停止。
font_step: 整数,默认=1, 字体的步长。font_step > 1可能会加速计算,但可能给出较差的拟合。
max_words: 数量,默认=200, 最大单词数。
stopwords: 字符串集合或None
将被消除的单词。如果为None,将使用内置的STOPWORDS列表。如果使用generate_from_frequencies,则忽略。
background_color: 颜色值,默认="black", 词云图像的背景颜色。
max_font_size: 整数或None,默认=None
最大单词的最大字体大小。如果为None,则使用图像的高度。
mode: 字符串,默认="RGB"
当mode为"RGBA"且background_color为None时,将生成透明背景。
relative_scaling: 浮点数,默认='auto'
单词相对频率对字体大小的重要性。如果relative_scaling=0,只考虑单词排名。如果relative_scaling=1,频率是两倍的单词将有两倍的大小。如果你想同时考虑单词频率和不仅仅它们的排名,relative_scaling大约0.5通常看起来不错。如果为'auto',则除非repeat为真,否则设置为0.5,此时设置为0。版本更新:: 2.0默认现在是'auto'。
color_func: 可调用,默认=None
有参数word, font_size, position, orientation, font_path, random_state的可调用函数,为每个单词返回一个PIL颜色。覆盖"colormap"。有关指定matplotlib色谱的信息,请参见colormap。要创建单色的词云,使用
color_func=lambda *args, **kwargs: "white"。单色也可以使用RGB代码指定。例如,
color_func=lambda *args, **kwargs: (255,0,0)设置颜色为红色。
regexp: 字符串或None(可选)
在process_text中分割输入文本为标记的正则表达式。如果指定为None,则使用r"\w[\w']+"。如果使用generate_from_frequencies,则忽略。
collocations: 布尔,默认=True
是否包括两个单词的搭配(二元组)。如果使用generate_from_frequencies,则忽略。
colormap: 字符串或matplotlib色谱,默认="viridis"
从每个单词随机抽取颜色的matplotlib色谱。如果指定了"color_func",则忽略。
normalize_plurals: 布尔,默认=True
是否去除单词末尾的's'。如果为True,一个单词以's'结尾和不以's'结尾都出现时,去掉以's'结尾的单词并将它的计数加到没有's'结尾的版本上——除非单词以'ss'结尾。如果使用generate_from_frequencies,则忽略。
repeat: 布尔,默认=False
是否重复单词和短语直到达到max_words或min_font_size。
include_numbers: 布尔,默认=False, 是否将数字作为短语包含进来。
min_word_length: 整数,默认=0, 单词必须有的最少字母数才能被包含。
collocation_threshold: 整数,默认=30
大二元组必须具有高于此参数的Dunning似然性搭配分数才能被计为大二元组。默认值30是任意的。

属性
words_: 字符串到浮点数的字典, 关联频率的单词令牌。2.0后words_ 是一个字典
layout_: 元组列表((字符串, 浮点数), 整数, (整数, 整数), 整数, 颜色)
编码拟合的词云。对于每个单词,它编码字符串、规范化频率、字体大小、位置、方向和颜色。频率由最常出现的单词归一化。颜色格式为'rgb(R, G, B)'

二、WordCloud常用的方法

1. generate(self, text)

接收一个字符串作为输入,计算文本中各单词的频率,并生成相应的词云。这是最基础也是最常用的方法之一。

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 示例文本
text = "This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly."

# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=800, max_words=100, background_color='white').generate(text)

# 显示词云
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

在这里插入图片描述

2. generate_from_frequencies(frequencies)

直接接收一个字典,其中键是单词,值是该单词的频率,用来生成词云。这适用于已经计算好词频的情况。

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 示例文本
dic = {'This': 120, 'example': 90, 'showing': 80, 'word': 70, 'cloud': 60, 'Generate': 50, 'method': 40, 'text': 30, 'input': 20, 'directly': 10}
# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=800, max_words=100, background_color='white').generate_from_frequencies(dic)

# 显示词云
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

在这里插入图片描述

3. fit_words(frequencies)

这个方法接收一个字典,其中键是单词,值是对应的频率,然后根据这些频率生成词云。类似于generate_from_frequencies

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 示例文本
dic = {'This': 120, 'example': 90, 'showing': 80, 'word': 70, 'cloud': 60, 'Generate': 50, 'method': 40, 'text': 30, 'input': 20, 'directly': 10}
# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=800, max_words=100, background_color='white').fit_words(dic)

# 显示词云
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

在这里插入图片描述

4. generate_from_text(text)

接收一个字符串作为输入,计算文本中各单词的频率,并生成相应的词云。类似于generate。

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 示例文本
text = "This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly."# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=800, max_words=100, background_color='white').generate_from_text(text)

# 显示词云
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

在这里插入图片描述

三、进阶技巧

1. 设置蒙版

蒙版设置, 设置蒙版之后, 词云的形状就会显示为设置的蒙版形状

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

mask_image = np.array(Image.open('./static/img.png'))

# 示例文本
text = "This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly."# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=800, mask=mask_image, max_words=100, background_color='white')

wordcloud.generate_from_text(text)

# 显示词云
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

在这里插入图片描述

2. 设置过滤词

对于一些不希望出现的词, 可以通过设置stopword过滤, 实现方法有两种

  1. 在切词阶段, 将过滤词剔除, 过滤词要求是一个集合{}
  2. 在生成词云阶段, 使用stopword参数添加过滤词数组, 注意, 此时如果通过generate_from_frequencies方法生成, 此参数则忽略
    方式一:
stop_words = {'?', ',', '有', '其', '非常', '的', '为', '所', ':', '和', '”', "'", '\\u3000', '乎', '?', '这', '不', '在', '比', '“', '"', '而', '很', '被', '我', '那'}
datas = [... ...]  # 词云数据
cloud_data = []
for data in datas:
    qdatas = jieba.lcut(data)
    qdata_filter = [word for word in qdatas if word not in excludes]
    cloud_data.extend(qdata_filter)


wordcloud = WordCloud(
    font_path='./static/msyh.ttc',
    background_color='white',
    colormap='magma',
    max_font_size=40,
    random_state=42,
    max_words=300,
    # 宽
    width=1000,
    # 高
    height=880,
    mask = mask_image
).generate(' '.join(cloud_data))

方式二:

stop_words = {'?', ',', '有', '其', '非常', '的', '为', '所', ':', '和', '”', "'", '\\u3000', '乎', '?', '这', '不', '在', '比', '“', '"', '而', '很', '被', '我', '那'}
datas = [... ...]  # 词云数据

wordcloud = WordCloud(
    font_path='./static/msyh.ttc',
    background_color='white',
    colormap='magma',
    max_font_size=40,
    random_state=42,
    max_words=300,
    # 宽
    width=1000,
    # 高
    height=880,
    mask = mask_image,
    -- 设置过滤词
    stopwords=stop_words
).generate(datas)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6-Maven的使用

6-Maven的使用 常用maven命令 //常用maven命令 mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编译测试代码 mvn test //运行应用程序中的单元测试 mvn site //生成项目相关信息的网站 mvn package //依据项目生成 …

问题:卫生事业的发展受多种因素的影响和制约,以下属于卫生事业发展影响因素的有(? ?)。 #微信#其他

问题&#xff1a;卫生事业的发展受多种因素的影响和制约&#xff0c;以下属于卫生事业发展影响因素的有&#xff08;? ?&#xff09;。 A、经济水平 B、管理水平 C、人口素质 D、科技发展 参考答案如图所示

全面解析:渗压计数据如何预测地下水趋势

随着人们对水资源日益增长的需求和对环境保护意识的提升&#xff0c;地下水位的监测和预测成为了水利工程和环境科学领域的重要研究内容。渗压计作为一种能够测量土壤或岩石中孔隙水压力的仪器&#xff0c;在地下水位的监测中发挥着关键作用。本文将从渗压计的工作原理、安装方…

Ubuntu系统安装docker以及安装yg系统所能使用到的插件

Ubuntu系统安装docker以及安装yg系统所能使用到的插件 前言&#xff1a;建议大家使用ubuntu系统的时候&#xff0c;直接永久关闭防火墙目前我们处于学习状态&#xff0c;这样有利于提高开发效率。 项目地址&#xff1a;https://github.com/xzhHas/yg 文章目录 Ubuntu系统安装do…

Windows搭建apache网站

1、官网下载安装包&#xff0c;注意下载服务器对应操作系统的安装包&#xff08;此案例为64位操作系统&#xff09; Apache VS17 binaries and modules downloadFor (business) webmasters, developers and home-users who want running always up to date Windows VS17 binar…

RK3568笔记三十:PP-ORCv3自训练部署

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 PP-OCR 是百度公布并开源的OCR领域算法&#xff0c;一个轻量级的OCR系统&#xff0c;在实现前沿算法的基础上&#xff0c;考虑精度与速度的平衡&#xff0c; 进行模型瘦身和深度优化&#xff0c;使其尽可能满足产业…

Django request.POST获取提交的表单数据

在Django中&#xff0c;request.POST 是一个特殊的属性&#xff0c;它是一个类似于字典的对象&#xff0c;用于访问通过POST方法提交的表单数据。如果你在视图中使用 print(request.POST.get(username))&#xff0c;这通常意味着你正在尝试从一个HTML表单中获取一个名为 userna…

映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五)

随着多基础设施成为行业发展的主流趋势&#xff0c;数据库选型时需要考虑哪些关键因素&#xff1f;对于云数据库的升级策略&#xff0c;又该如何制定&#xff1f;OceanBase《DB 大咖说》第五期特别邀请了映宇宙&#xff08;原映客&#xff09;的数据库负责人赵智博先生&#xf…

DENet:融合全局与局部,多模块策略,超越传统分割方法,提升青光眼筛查精度

DENet&#xff1a;融合全局与局部&#xff0c;多模块策略&#xff0c;超越传统分割方法&#xff0c;提升青光眼筛查精度 提出背景精细拆解A. 全局视网膜图像层面B. 视盘区域层面 提出背景 论文&#xff1a;https://arxiv.org/pdf/1805.07549 代码&#xff1a;https://github.…

使用mysqldump迁移MySQL数据

将Windows系统中MySQL数据导出到其他系统中MySQL数据库中 1.导出数据 进入MySQL安装目录的bin目录下&#xff0c;打开dos窗口执行以下命令 --single-transaction 参数表示不锁表 1.1 指定部分表导出 mysqldump -u用户名 -p密码 数据库名 表1 表2 表3 --single-transact…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:测控巡检智能机器人

是集研发、生产、制造、销售为一体的高新技术企业&#xff0c;是国内"皮带机智能巡检"领域的技术引领者。公司先后获得国家级高新技术企业、太原市市级企业技术中心、太原市技术创新示范企业、山西省民营科技企业、山西省专精特新中小企业、山西省四新中小企业、太原…

【经验分享】搭建电商项目过程中关于淘宝APP商品数据采集的要点

淘宝APP商品采集的注意事项和应用可以归纳为以下几点&#xff1a; 注意事项&#xff1a; 遵守平台规则&#xff1a; 在进行淘宝商品采集时&#xff0c;务必遵守淘宝平台的相关规则&#xff0c;不得采集敏感信息&#xff0c;如用户隐私、商家敏感数据等。尊重商家权益&#xf…

PMP考试技巧和PMP考试大纲

今日分享PMP考试技巧&#xff0c;文末附上PMP考试大纲&#xff0c;你会喜欢的! PMP考试大纲&#xff1a;人员试题占比42% &#xff0c;流程试题占比50%&#xff0c;商业环境试题占比8%。 PMP解题策略 PMP考试默认条件 精准审题 E(Eye):找到题眼&#xff1b; K(Key):找到考…

ui自动化中,selenium进行元素定位,以及CSS,xpath定位总结

几种定位方式 简单代码 from selenium import webdriver import time# 创建浏览器驱动对象 from selenium.webdriver.common.by import Bydriver webdriver.Chrome() # 参数写浏览器驱动文件的路径&#xff0c;若配置到环境变量就不用写了 # 访问网址 driver.get…

视频大模型 Vidu 支持音视频合成;字节跳动推出语音生成模型 Seed-TTS 丨 RTE 开发者日报 Vol.221

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

618什么数码好物值得入手?优质数码清单分享,错过等明年!

在到来的618年中大促&#xff0c;各种数码好物竞相亮相&#xff0c;正是您更新装备、升级体验的黄金时刻&#xff0c;在这个购物的狂欢节里&#xff0c;我们特别为大家准备了一份精选的优质数码清单&#xff0c;帮助大家从海量的选择中筛选出真正值得入手的宝贝&#xff0c;这些…

问题:与十六进制数AB等值的二进制数是()。 #其他#经验分享

问题&#xff1a;与十六进制数AB等值的二进制数是&#xff08;&#xff09;。 A&#xff0e;10101011 B&#xff0e;10011010 C&#xff0e;10101010 D&#xff0e;11011100 参考答案如图所示

CSS实现3个圆点加载动画

加载动画主要使用了css的animation和transform属性&#xff0c;animation用来实现动画效果&#xff0c;transform实现过渡&#xff0c;让动画看起来更真实 一、html <div class"loadding-box"><div class"dot1"></div><div class&qu…

根据AgentLego 搭建多工具智能体

操作目的和工具介绍 操作目的&#xff1a; 本操作文档旨在指导用户如何使用 AgentLego 进行智能体构建。AgentLego 是一个开源的智能体算法库&#xff0c;它提供了一系列工具和接口&#xff0c;使开发者能够轻松地构建和部署智能体。 工具介绍&#xff1a; AgentLego 支持直接…

【ARM Cache 系列文章 1.2 -- Data Cache 和 Unified Cache 的详细介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Data Cache and Unified Cache数据缓存 (Data Cache)统一缓存 (Unified Cache)数据缓存与统一缓存的比较总结 Data Cache and Unified Cache 在 ARM架构中&#xff0c;缓存&#xff08…