使用wordcloud与jieba库制作词云图

目录

一、WordCloud库

例子:

结果:

二、Jieba库

两个基本方法

jieba.cut()

jieba.cut_for_serch()

关键字提取:

jieba.analyse包

extract_tags()


一、WordCloud库

        词云图,以视觉效果提现关键词,可以过滤文本信息,掌握关键信息,通过一个例子理解它的大概用法

例子:

pip install wordcloud

        由于一开始一直报字体文件格式错误(明明是 .ttf 没什么问题),因此在晚上查到需要把pillow库更新一下, 解决了

conda update pillow

        代码: 

from wordcloud import WordCloud 
with open(r"C:\Users\zxd\Desktop\a_new_hope.txt",mode='r',encoding="utf-8") as file:# 数据文件txt = file.read()# 如果数据文件中包含的有中文的话,font_path必须指定字体,否则中文会乱码# collocations:是否包括两个词的搭配,默认为True,如果为true的时候会有重复的数据,这里我不需要重复数据,所以设置为False# generate 读取文本文件mycloud = WordCloud(font_path=r"C:\Windows\Fonts\msyh.ttc",collocations=False,max_words=50).generate(txt)# 生成image = mycloud.to_image()# 展示image.show()# 写入文件
#      mycloud.to_file("tag.jpg")

WordCloud实例化参数:

  • font_path:字体路径,若为英文可以不指定,若文本含中文需指定字体否则会乱码(windows绝对路径为:"C:/Windows/Fonts/xxx",也可以将文件放到项目的相对路径下面),注意仅支持使用 .ttf 格式的字体
  • collocation:是否包含两个词的搭配
  • max_words:显示词的最大个数
  • width/height/background_color:其他图形设置

实例化后的几个方法:

  • WordCloud().generate(txt文件):传递文本数据
  • mycloud.to_image():将词云图生成
  • image.show():展示图片
  • mycloud.to_file():写入到文件

结果:

        txt 的赋值可以自己随便敲单词,文本即可

二、Jieba库

        在使用 wordcloud 时,处理中文文本有可能会出现以下问题:

        我用了一个较短文本,可以看出通过 wordcloud 方法划分后的并不是词,而是句子,这是由于英文分词可以通过空格拆分,中文会不准确,因此我们需要针对性地做分词,分词后,再传递给 wordcloud

两个基本方法

jieba.cut()

  • 字符串
  • cut_all:默认 False精确模式,否则为全模式
  • 是否使用HMM模型

jieba.cut_for_serch()

  • 字符串
  • 是否使用HMM模型

        返回迭代器,每个元素是拆分后的一个词

        直接上例子看区别,根据个人需求选择

import jiebaprint(' '.join(jieba.cut('林妹妹毕业于中国科学院计算机研究所,后前往日本东京大学深造',cut_all=True)))
print(' '.join(jieba.cut('林妹妹毕业于中国科学院计算机研究所,后前往日本东京大学深造',cut_all=False)))
print(' '.join(jieba.cut_for_search('林妹妹毕业于中国科学院计算机研究所,后前往日本东京大学深造')))林妹妹 妹妹 毕业 于 中国 中国科学院 科学 科学院 学院 计算 计算机 算机 研究 研究所 , 后 前往 往日 日本 日本东京大学 东京 东京大学 大学 深造林妹妹 毕业 于 中国科学院 计算机 研究所 , 后 前往 日本东京大学 深造妹妹 林妹妹 毕业 于 中国 科学 学院 科学院 中国科学院 计算 算机 计算机 研究 研究所 , 后 前往 日本 东京 大学 日本东京大学 深造

关键字提取:

from wordcloud import WordCloud 
with open(r"C:\Users\zxd\Desktop\新蝙蝠侠评论.txt",mode='r',encoding="utf-8") as file:# 读取数据文件txt = file.read()# 如果数据文件中包含的有中文的话,font_path必须指定字体,否则中文会乱码# collocations:是否包括两个词的搭配,默认为True,如果为true的时候会有重复的数据,这里我不需要重复数据,所以设置为False# generate 读取文本文件mycloud = WordCloud(font_path=r"C:\Windows\Fonts\msyh.ttc",collocations=False,max_words=50).generate(jb_txt)# 生成image = mycloud.to_image()# 展示image.show()# 写入文件
#      mycloud.to_file("tag.jpg")

        在使用上述代码分析中文文本过程中,我们又遇到新问题:

        有许多如“我”、“是”、“的”等无效信息,因此需要进一步处理

jieba.analyse包

        里面有一个 extract_tags() 方法,可以用于提取关键字,返回一个可以迭代的列表,方法的具体介绍可以再看看这个文章

3、Python 中文分词组件Jieba_jieba.analyse-CSDN博客

extract_tags()方法:

重要参数:

  • text,写入的文本
  • topK:返回关键词的数量,重要性从高到底排序
  • withWeight:是否同时返回每个关键字的权重
  • allowPOS=():词性过滤,n、v、a 等,可传入元组
from wordcloud import WordCloud 
import jieba.analysewith open(r"C:\Users\zxd\Desktop\新蝙蝠侠评论.txt",mode='r',encoding="utf-8") as file:# 读取数据文件txt = file.read()#获取关键字标签txt_tag_list=jieba.analyse.extract_tags(txt,allowPOS=('n'))print(analysed_txt_list)print(type(analysed_txt_list))['蝙蝠侠', '电影', '谜语', '剧情', '猫女', '小时', '黑色', '蝙蝠', '镜头', '正义', '氛围', '故事', '漫画', '全片', '观众', '人物', '感觉', '角色', '骑士', '文艺']
<class 'list'>

        使用 extract_tags() 做词云图

from wordcloud import WordCloud 
import jieba.analysewith open(r"C:\Users\zxd\Desktop\新蝙蝠侠评论.txt",mode='r',encoding="utf-8") as file:# 读取数据文件txt = file.read()txt_tag_list=jieba.analyse.extract_tags(txt,allowPOS=('n'))print(analysed_txt_list)print(type(analysed_txt_list))analysed_txt_tag=' '.join(txt_tag_list)# 如果数据文件中包含的有中文的话,font_path必须指定字体,否则中文会乱码# generate 读取文本文件mycloud = WordCloud(font_path=r"C:\Windows\Fonts\msyh.ttc",collocations=False,max_words=20).generate(analysed_txt_tag)# 生成image = mycloud.to_image()# 展示image.show()

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

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

相关文章

深入解析缓存模式下的数据一致性问题

今天&#xff0c;我们来聊聊常见的缓存模式和数据一致性问题。 常见的缓存模式有&#xff1a;Cache Aside、Read Through、Write Through、Write Back、Refresh Ahead、Singleflight。 缓存模式 Cache Aside 在 Cache Aside 模式中&#xff0c;是把缓存当做一个独立的数据源…

ffmpeg视频滤镜:膨胀操作-dilation

滤镜介绍 dilation 官网链接 > FFmpeg Filters Documentation 膨胀滤镜会使图片变的更亮&#xff0c;会让细节别的更明显。膨胀也是形态学中的一种操作&#xff0c;在opencv中也有响应的算子。此外膨胀结合此前腐蚀操作&#xff0c;可以构成开闭操作。 开操作是先腐蚀…

多线程和线程同步基础篇学习笔记(Linux)

大丙老师教学视频&#xff1a;10-线程死锁_哔哩哔哩_bilibili 目录 大丙老师教学视频&#xff1a;10-线程死锁_哔哩哔哩_bilibili 线程概念 为什么要有线程 线程和进程的区别 在处理多任务的时候为什么线程数量不是越多越好? Linux提供的线程API 主要接口 线程创建 pth…

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据&#xff1a;菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…

3种AI黑科技,让照片中的人物开口说话的简易方法,快进来学!

本文背景 用AI工作这么久了&#xff0c;我经常碰到各种关于AI的问题&#xff0c;比如制作让照片中人物开口说话的数字人。 很多小伙伴想知道是怎么弄的&#xff0c;不知从何下手。不过不用担心&#xff0c;今天就给大家带来三种实用的方法&#xff0c;快来一起试试吧。 首先是腾…

【docker compose】docker compose的hello world

安装docker desktop后在终端使用以下命令&#xff0c;代表安装成功&#xff0c;并查看当前安装的版本 docker-compose --version示例docker-compose.yml文件 version: 3.8 # 指定 Docker Compose 文件的版本services:scau_jwc: # 定义一个名为 scau_jwc 的服务image: scau_…

【js逆向学习】某多多anti_content逆向(补环境)

文章目录 声明逆向目标逆向分析逆向过程总结 声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的…

【C++】动态内存

一、内存区域分布 首先我们来看一段代码并尝试解决以下问题&#xff1a; 1. GlobalVar是全局变量&#xff0c;存储在数据段&#xff08;静态区&#xff09;&#xff0c;选C。2. staticGlobalVar是静态全局变量&#xff0c;也存储在数据段&#xff08;静态区&#xff09;&#x…

基于STM32的温湿度监测器教学

引言 随着科技的发展&#xff0c;温湿度监测在农业、仓储、环境监测等领域的应用越来越广泛。本文将指导您如何基于STM32开发一个简单的温湿度监测器&#xff0c;使用常用的DHT11或DHT22传感器进行数据采集&#xff0c;并将监测结果显示在LCD或OLED屏幕上。 项目名称 STM32温湿…

哈希表,哈希桶及配套习题

我们今天带大家简单了解哈希表是怎样的&#xff0c;和简单模拟哈希桶&#xff0c;还有几道练习题 一&#xff0c;哈希表 什么是哈希表&#xff0c;哈希表是一种非常非常高效的数据结构&#xff0c;它用来搜索我们想要的数据&#xff0c;我们之前学过很多查找方法&#xff0c;最…

二百七十四、Kettle——ClickHouse中对错误数据表中进行数据修复(实时)

一、目的 在完成数据清洗、错误数据之后&#xff0c;需要根据修复规则对错误数据进行修复 二、Hive中原有代码 insert into table hurys_db.dwd_queue partition(day) selecta3.id,a3.device_no,a3.source_device_type,a3.sn,a3.model,a3.create_time,a3.lane_no,a3.lane_…

Golang | Leetcode Golang题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; func getMinimumDifference(root *TreeNode) int {ans, pre : math.MaxInt64, -1var dfs func(*TreeNode)dfs func(node *TreeNode) {if node nil {return}dfs(node.Left)if pre ! -1 && node.Val-pre < ans {ans node.Val -…

Android Studio打包时不显示“Generate Signed APK”提示信息

Android Studio打包时&#xff0c;默认显示“Generate Signed APK”提示信息&#xff0c;如下图所示&#xff1a; 如果在打包时不显示“Generate Signed APK”提示信息&#xff0c;解决办法是&#xff1a; Android Studio菜单栏&#xff0c;“File->Settings->Appearan…

手游和应用出海资讯:可灵AI独立APP即将上架;Rollic在英国推出芭比合并解谜手游

NetMarvel帮助游戏和应用广告主洞察全球市场、获取行业信息&#xff0c;以下为10月第四周资讯&#xff1a; ● 苹果开发全新游戏中心应用 ● Meta计划开发人工智能搜索引擎 ● 微软已拥有20个游戏IP&#xff0c;收入达10亿美元 ● OpenAI计划在12月推出其下一代前沿模型Orion ●…

js中多let与var

在 JavaScript 中&#xff0c;let 和 var 都用于声明变量&#xff0c;但它们有一些关键的区别。主要区别包括作用域、变量提升、可重复声明、以及在全局作用域中的行为。 1. 作用域&#xff08;Scope&#xff09; let&#xff1a;块级作用域。用 let 声明的变量只在其所在的代…

qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)

概述 最近一个项目用QT开发&#xff0c;然后找了美工帮设计了下界面。总算完工&#xff0c;后想一下干脆抽出一个基础框架&#xff0c;方便以后用。 功能 支持mysql、echarts。 支持加载动态权限菜单&#xff0c;轻松权限控制。 支持遮罩对话框、抽屉 支持开机启动动画界面 内…

华为云计算知识总结——及案例分享

目录 一、华为云计算基础知识二、华为云计算相关案例实战案例一&#xff1a;搭建弹性云服务器&#xff08;ECS&#xff09;并部署Web应用案例二&#xff1a;构建基于OBS的图片存储和分发系统案例三&#xff1a;基于RDS的高可用数据库应用案例四&#xff1a;使用华为云DDoS防护保…

11.1组会汇报-基于区块链的安全多方计算研究现状与展望

基础知识 *1.背书&#xff0c;这个词源来自银行票据业务&#xff0c;是指票据转让时&#xff0c;原持有人在票据背面加盖自己的印鉴&#xff0c;证明该票据真实有效、如果有问题就可以找原持有人。 区块链中的背书就好理解了。可以简单的理解为验证交易并声明此交易合法&…

【Linux】进程间通信(命名管道、共享内存、消息队列、信号量)

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux 创作时间 &#xff1a;2024年11月2日 命名管道&#xff1a; 如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;它经常被称为命名管道。命名管道是一种特殊类型的文…

划界与分类的艺术:支持向量机(SVM)的深度解析

划界与分类的艺术&#xff1a;支持向量机&#xff08;SVM&#xff09;的深度解析 1. 引言 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是机器学习中的经典算法&#xff0c;以其强大的分类和回归能力在众多领域得到了广泛应用。SVM通过找到最优超平面来分…