python中如何生成词云

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

在这里插入图片描述

今天给大家看看,如何使用python实现根据记录创建生成词云

首先我们看下效果图。

在这里插入图片描述
在这里插入图片描述
一个是生成了新闻的词云,另一个是生成了聊天记录的词云。下面是代码:

# coding: utf-8

import codecs
import logging
import os

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image, ImageFont, ImageDraw
import numpy as np
import jieba
import pandas
import imageio

from common_util.config import PROJECT_PATH


# content:需要生成的内容
# filename词云图片名称
# title 标题
def createciyun(content, filename, title):
    stopwords_filename = PROJECT_PATH+'userdict/stop_words_full.txt'
    # 加载自定义词典
    jieba.load_userdict( PROJECT_PATH+"userdict/custom_dict.txt")
    # 配置停用词
    stopwords = set([line.strip()
                     for line in codecs.open(stopwords_filename, 'r', 'utf-8')])

    # 使用jieba进行分词
    _seg_list = jieba.cut(content)
    words = []
    for seg in _seg_list:
        word = seg.strip().lower()
        if len(word) > 1 and word not in stopwords:
            words.append(word)
    words_df = pandas.DataFrame({'word': words})
    words_stat = words_df.groupby(by=['word'])['word'].agg(np.size)
    words_stat = words_stat.to_frame()
    words_stat.columns = ['number']
    words_stat = words_stat.reset_index().sort_values(by="number", ascending=False)
    print("共去重 %d 个词(已去重)" % len(words_stat))

    # 生成词云图片
    _background_img = imageio.imread( PROJECT_PATH+"Images/cat.jpg")
    _word_cloud = WordCloud(font_path= PROJECT_PATH+"font/jiangxizhuokai.ttf",
                            background_color=(255, 255, 255),
                            mask=_background_img,
                            max_font_size=600,
                            random_state=100
                            )
    _word_cloud = _word_cloud.fit_words(
        dict(words_stat.head(100).itertuples(index=False))
    )
    _background_img_colors = ImageColorGenerator(_background_img)
    _word_cloud.recolor(color_func=_background_img_colors)
    # 将词云图片保存到文件
    _word_cloud.to_file(filename)
    # 添加标题
    add_title(filename, title)
    logging.debug("生成词云成功!!")


# file:文件
# title_name:标题名
def add_title(file, title_name):
    # 加载图片
    body_img = Image.open(file)
    width, height = body_img.size
    # 增加的高度,用来放头部
    additional_height = 100
    height += additional_height
    # 生成一个尺寸为width,height的背景色为白色的图片
    bg = Image.new('RGB', (width, height), color=(255, 255, 255))
    # 将原始图片粘贴到新背景的顶部
    bg.paste(body_img, (0, additional_height))
    # 字体路径
    fontpath =  PROJECT_PATH+'font/jiangxizhuokai.ttf'
    font = ImageFont.truetype(fontpath, 32)
    # 计算出需要写入的文字占用的像素
    w, h = font.getsize(title_name)
    # 创建画布
    draw = ImageDraw.Draw(bg)
    # 计算标题的起始位置,使其位于图片的正上方
    title_y = additional_height - h  # 从顶部开始,减去标题的高度
    # 绘制标题文本
    draw.text(((width - w) / 2, title_y), title_name, font=font, fill="#ff0000")
    bg.save(file, "PNG")
    print("{}标题添加完成".format(file))

用到的生成图片如下:

在这里插入图片描述
用到的其他字典和过滤池如下所示:

雄雄的小课堂 3 nz
穆雄雄 3 nz
雄雄 3 nz
雄雄的工具箱 3 nz
小鱼早晚安打卡 3 nz
AT&T 3 nz
B超 3 n
c# 3 nz
C# 3 nz
c++ 3 nz
C++ 3 nz
T恤 4 n
A座 3 n
A股 3 n
A型 3 n
A轮 3 n
AA制 3 n
AB型 3 n
B座 3 n
B股 3 n
B型 3 n
B超 3 n
B轮 3 n
BB机 3 n
BP机 3 n
C盘 3 n
C座 3 n
C语言 3 n
CD盒 3 n

"

$
&

(
)
*
+
,

.



./
.一
.数
.日
/
//
0
1
2
3
4

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记(19)

双列集合 键值对 一一对应 键值对对象 entry Map Put第一次给不存在的key,会把键值对添加到map中,返回null Put给同一个key是会覆盖value的,返回被覆盖的值value Remove根据key删除键值对,返回被删除的值value Map遍历 键找值 …

python语法踩坑 | list的append操作如何从in-place改为out-of-place

背景 博主写python遇到一个问题,需要把对list添加元素改为非原地操作,即不修改原list。 但是由于列表中的元素是字典类型,无法直接用运算符。 于是写出了下面这行代码 query_list message_list.copy().append(one_question) 其中message…

Anaconda安装 (windowsLinux)

文章目录 Anaconda简介设置国内源pip || conda 一、Anaconda (Windows系统)1.1 下载及安装1.2 虚拟环境创建1.3 在Pycharm中配置conda的环境 二、Anaconda(Linux系统) Anaconda简介 conda是一个开源的包、环境管理器,可…

探索 Atlassian 云平台:组织、站点、产品架构解析

我们通常访问的是 Atlassian 的某个云站点,比如填空题-中国站点为:cloze-cn.atlassian.net。当我们访问该站点内的具体产品时,只需在该站点的 URL 后添加相应产品的缩写,例如: Confluence: cloze-cn.atlassian.net/wi…

12.电子产品拆解分析-LED T8_16W灯管

12.电子产品拆解分析~LED_T8_16W家用灯管 一、功能介绍二、电路分析以及器件作用一、功能介绍 ①无需使用镇流器(启辉器),只需接到220V即可点亮使用;②节能省电 透光性强 无可视频闪;二、电路分析以及器件作用 220V交流电经过MB10F桥式整流出300V脉动直流电,然后经过6.8u…

某J 集成 cas5.3res api登录

在学习一个开源项目是时集成了cas,但文档过于简单,研究了两天这次记录做个补充 1.下载cas项目 GitHub - apereo/cas-overlay-template at 5.3 2.编译 解压zip,命令行进去,执行mvn clean package 结束之后会出现 target 文件夹&…

Android14 - Framework- Configuration的创建和更新

本文描述从启动一个新进程的Activity起,Framwork层Configuration的创建和传导过程。 首先,我们知道所有的Window容器都继承于WindowContainer,而WindowContainer本身是ConfigurationContainer的子类。于此同时,WindowProcessContr…

[NOIP1998 提高组] 拼数

[NOIP1998 提高组] 拼数 题目描述 设有 n n n 个正整数 a 1 … a n a_1 \dots a_n a1​…an​,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。 输入格式 第一行有一个整数,表示数字个数 n n n。 第二行有 n n …

【Vue3遇见的问题】创建vue3的项目使用vscode打开后项目的app.vue里面存在爆红

出现的问题 直接上上问题:问题的图片如下: 解决方法 解决效果 补充 因为vetur的插件禁用了 所以需要一个新插件来 这里发现的官网推荐的插件 也就是volar 他两是一样的

各位老板,你需要的工厂数字孪生可视化库在这

各位老板是不是很喜欢下面这种有逼格的大屏,下面介绍一下怎么实现的,保证有所收获。 Cesium是一个开源的WebGL JavaScript库,用于创建高性能的三维地球、地图和虚拟环境。它支持在浏览器中实现高质量的地球模拟,同时提供了丰富的功能特点,使得…

【Linux进程的状态】

目录 看Linux源码中的说法 如何查看进程状态? 各个状态的关系 僵尸进程 举个栗子 现象 僵尸进程的危害 孤儿进程 举个栗子 现象 进程的优先级 基本概念 为什么要有进程优先级? 查看系统进程 进程的大致属性 进程优先级vs进程的权限 Linu…

AI基础知识(4)--贝叶斯分类器

1.什么是贝叶斯判定准则(Bayes decision rule)?什么是贝叶斯最优分类器(Bayes optimal classifier)? 贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的…

用 Open-Sora 高效创作视频,让创意触手可及

近年来,视频内容以爆炸式增长席卷了我们的生活。从短视频平台到直播带货,视频正成为人们获取信息和娱乐的主要方式。然而,传统视频制作流程往往耗时费力,对于普通用户来说门槛较高。 为了降低视频创作门槛,让更多人享…

Git的 .gitignore文件及标签使用

Git的 .gitignore文件及标签使用 什么是.gitignoregit check-ignore -v 文件名 查看.gitignore里面什么内容忽略了该文件 git add -f [filename] 强制添加把指定文件排除在 .gitignore 规则外的写法给命令配置别名标签创建标签git tag [name] 创建标签git tag 列出所有标签git …

RESNET的复现pytorch版本

RESNET的复现pytorch版本 使用的数据为Object_102_CaDataset,可以在网上下载,也可以在评论区问。 RESNET模型的亮点 1.提出了残差模块。 2.使用Batch Normalization加速训练 3.残差网络:易于收敛,很好的解决了退化问题&#…

真实数据!一张切片实现101种蛋白的超多重空间单细胞原位成像

头颈鳞状细胞癌 (HNSCC) 是第七大常见癌症。免疫检查点抑制剂 (ICIs) 在治疗复发/转移病例方面显示出良好前景,约30%的患者可获得持久获益。但是目前反映HNSCC肿瘤微环境 (TME) 特征的生物标志物有限,需要更深入的组织表征分析。因此,需要新的…

linux查看cpu/内存/磁盘利用率

1、cpu 命令: top 2、内存 命令: free -h 3、磁盘 命令: df -h

《操作系统真相还原》读书笔记九:用c编写内核

用c语言先编写一个死循环 main.c int main(void) {while(1);return 0; }编译该文件 gcc -c -o main.o main.c-- Ttext参数表示起始虚拟地址为0xc0001500 -e参数表示程序入口地址 ld main.o -Ttext 0xc0001500 -e main -o kernel.bin-- 将kernel.bin写入第9个扇区 dd if/ho…

十九、网络编程

目录 一、什么是网络编程二、网络编程三要素2.1 IP2.2 InetAddress的使用2.3 端口号2.4 协议 三、UDP通信程序3.1 发送数据3.2 接收数据3.3 练习 四、UDP的三种通信方式五、TCP的通信程序六、三次握手和四次挥手七、练习7.1 TCP通信练习1——多发多收7.2 TCP通信练习2——接收和…

Cookie使用

文章目录 一、Cookie基本使用1、发送Cookie2、获取Cookie 二、Cookie原理三、Cookie使用细节 一、Cookie基本使用 1、发送Cookie package com.itheima.web.cookie;import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.I…