使用wordcloud与jieba库制作词云图

news2024/11/24 10:42:40

目录

一、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 jieba



print(' '.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.analyse

with 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.analyse

with 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.coloradmin.cn/o/2229795.html

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

相关文章

安卓13 连接usb设备后不更新ui

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码更改4.彩蛋1.前言 有些界面在链接usb设备后,ui会被刷新,导致闪烁问题。 2.问题分析 像这种问题一般是usb事件,导致的ui事件更新了,处理方法是禁止该事件 3.代码更改 这块我们就需要在输入事件管理里面…

根号下-1等于多少

根号下的负数在实数范围内是没有定义的&#xff0c;但在复数范围内&#xff0c;我们可以用虚数单位 来表示。具体来说&#xff1a; 因此&#xff0c;根号下的负一等于虚数单位 。

什么是人工智能(AI)?

人工智能AI&#xff08;即Artificial Intelligence&#xff09;是计算机科学的一个分支&#xff0c;旨在让计算机模仿人类的决策能力、像人类一样思考和行动&#xff0c;来解决如自然语言处理、推荐、智能数据检索、预测等方面人类无法处理或难以处理的复杂工作。 为什么需要人…

国标GB28181公网直播EasyGBS国标GB28181软件的应用场景

随着科技的飞速发展&#xff0c;安防视频监控技术已经成为现代社会不可或缺的一部分&#xff0c;它在保障公共安全、企业运营安全以及个人财产安全方面发挥着举足轻重的作用。国标GB28181网页直播平台EasyGBS安防视频监控平台&#xff0c;作为集高效性、稳定性与智能化于一体的…

[java][基础]JSP

目标&#xff1a; 理解 JSP 及 JSP 原理 能在 JSP中使用 EL表达式 和 JSTL标签 理解 MVC模式 和 三层架构 能完成品牌数据的增删改查功能 1&#xff0c;JSP 概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的…

Bacnet+springboot部署到linux后,无法检测到网络中的其他设备

场景描述 springbootbacnet4j项目完成后&#xff0c;在window环境可以正常检测到其他设备&#xff0c;但是部署到linux环境之后&#xff0c;无法获取。 解决办法 首先bacnet的子网掩码要设置为&#xff1a;255.255.255.0 确保linux服务器的防火墙允许 255.255.255.255 广播。…

HarmonyOS 5.0应用开发——音频播放组件的封装

【高心星出品】 文章目录 音频播放组件的封装开发步骤封装类代码测试代码 音频播放组件的封装 鸿蒙中提供了AVPlayer来实现音频播放的功能&#xff0c;播放的全流程包含&#xff1a;创建AVPlayer&#xff0c;设置播放资源&#xff0c;设置播放参数&#xff08;音量/倍速/焦点模…

深度探索C++对象模型

文章目录 前言一、关于对象C对象模型 二、构造函数实例分析 拷贝构造函数程序转化语意学(Program Transformation Semantics)成员初始化列表 三、数据语义学(The Semantics of Data)数据存取多种继承情况讨论仅单一继承加上虚函数多重继承虚拟继承 Pointer to Data Members 四、…

TLV320AIC3104IRHBR 数据手册 一款低功耗立体声音频编解码器 立体声耳机放大器芯片麦克风

TLV320AIC3104 是一款低功耗立体声音频编解码器&#xff0c;具有立体声耳机放大器以及在单端或全差分配置下可编程的多个输入和输出。该器件包括基于寄存器的全面电源控制&#xff0c;可实现立体声 48kHz DAC 回放&#xff0c;在 3.3V 模拟电源电压下的功耗低至 14mW&#xff0…

【Rust中的序列化:Serde(一)】

Rust中的序列化&#xff1a;Serde Serde是什么&#xff1f;什么是序列化序列化&#xff1f;Serde运行机制Serde Data ModelVistor ApiSerializer ApiDeserializer Api 具体示例流程分析具体步骤&#xff1a;那么依次这个结论是如何得出的呢?什么是de? 总结 Serde是什么&#…

普通的Java程序员,需要深究源码吗?

作为Java开发者&#xff0c;面试肯定被问过多线程。对于它&#xff0c;大多数好兄弟面试前都是看看八股文背背面试题以为就OK了&#xff1b;殊不知现在的面试官都是针对一个点往深了问&#xff0c;你要是不懂其中原理&#xff0c;面试就挂了。可能你知道什么是进程什么是线程&a…

【vue项目中添加告警音频提示音】

一、前提&#xff1a; 由于浏览器限制不能自动触发音频文件播放&#xff0c;所以实现此类功能时&#xff0c;需要添加触发事件&#xff0c;举例如下&#xff1a; 1、页面添加打开告警声音开关按钮 2、首次进入页面时添加交互弹窗提示&#xff1a;是否允许播放音频 以上两种方…

2024 windos运行程序的时候弹窗:找不到ddl文件【已经解决,只要三步】修复ddl文件

一、错误复现 就是这个错误&#xff0c;网上一顿乱找&#xff0c;也解决不来&#xff0c;不是花钱就是付费就是充会员&#xff01;&#xff01; 二、ddl官网地址下载新的ddl文件&#xff08;自己缺哪个&#xff0c;搜索哪个下载&#xff09; 然灵机一动&#xff0c;ddl肯定有官…

Java并发常见面试题总结(上)

线程 ⭐️什么是线程和进程? 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一…

分类算法——逻辑回归 详解

逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛使用的分类算法&#xff0c;特别适用于二分类问题。尽管名字中有“回归”二字&#xff0c;逻辑回归实际上是一种分类方法。下面将从底层原理、数学模型、优化方法以及源代码层面详细解析逻辑回归。 1. 基本原理 …

AutoGLM:智谱AI的创新,让手机成为你的生活全能助手

目录 引言一、AutoGLM&#xff1a;开启AI的Phone Use时代二、技术核心&#xff1a;AI从“语言理解”到“执行操作”三、实际应用案例&#xff1a;AutoGLM的智能力量1. 智能生活管理&#x1f34e;2. 社交网络的智能互动&#x1f351;3. 办公自动化&#x1f352;4. 电子商务的购物…

利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析

利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛&#xff1a;台风预测与分析 引言 在2024年MathorCup大数据挑战赛中&#xff0c;赛道A聚焦于气象数据分析&#xff0c;特别是台风的生成、路径预测、和降水风速特性等内容。本次比赛的任务主要是建立一个分类评价模型&…

Latex中Reference的卷号加粗的问题

找到模板中的.bst文件&#xff0c;查找volume&#xff0c;修改如下 添加bold&#xff0c;卷号会加粗&#xff0c;去掉则正常

国产光耦合器在现代应用中的作用和进步

国产光耦合器已成为各行各业必不可少的元件&#xff0c;有助于确保信号完整性、保护控制系统并提供强大的电气隔离。随着技术的进步&#xff0c;国内制造商提高了光耦合器的质量和可靠性&#xff0c;使其适用于一系列关键应用。本文探讨了国产光耦合器的优势、其应用及其对关键…

《数值分析》实验报告-线性方程组求解

文章目录 1. 实验目标2. 实验内容2.1 设计界面2.2 实现解法2.2.1 高斯消元法2.2.2 克劳斯消元法2.2.3 列主元素法 2.3 结果展示 3. 实现过程3.1 选择并设计算法3.1.1 高斯消元法3.1.2 克劳斯消元法3.1.3 列主元素法 3.2 设计 Tkinter 界面3.3 编写代码实现3.4 结果显示 4. 输入…