使用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 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()

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

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

相关文章

ios Framework版本号的问题。

自己创建的framework和普通的app的版本号设置的地方是有所有不同的。 framework 的版本号是在 TARGETS -> Build Settings -> current Project Version 这个地方设置的&#xff0c; 在创建framework的时候xcode 会自动创建一个framework.h的文件名&#xff0c;framewo…

Axure设计之多级菜单导航教程(中继器)

在数字化时代&#xff0c;优化产品设计&#xff0c;提升用户界面交互&#xff0c;是产品设计着重考虑的点。针对传统菜单导航复杂繁琐的问题&#xff0c;本设计提出了一套灵活的菜单导航方案&#xff0c;结合中继器与动态面板&#xff0c;实现一键搜索、菜单收藏、多级菜单导航…

真题总结和整理

补码的符号位在最高位 IEEE754 规格化要求 小数点前面是1,其他的认为是小数点后面为1即可 计算之前要对阶 左移和右移在寄存器中如果未说明定点数,可以通过移动小数点实现 涉及最小帧长要记得除以2 求用于外设的时钟周期数 指令两端只允许有寄存器,间接寻址要通过MA…

计组-层次化存储结构

这里主要看存储的整体结构&#xff0c;cache&#xff0c;内存 这里看存储结构是按什么样的层次来划分存储结构&#xff0c;速度由慢到快&#xff0c;容量由大到小&#xff0c;这是基于性价比的考虑&#xff0c;所以分为多级多层次&#xff0c;可以做到提高速度的同时没有增加多…

Rust整合Elasticsearch

Elasticsearch是什么 Lucene&#xff1a;Java实现的搜索引擎类库 易扩展高性能仅限Java开发不支持水平扩展 Elasticsearch&#xff1a;基于Lucene开发的分布式搜索和分析引擎 支持分布式、水平扩展提高RestfulAPI&#xff0c;可被任何语言调用 Elastic Stack是什么 ELK&a…

CoTAM——思维属性操纵链,一种利用大规模语言模型的新的高效快速学习方法

概述 近年来&#xff0c;大规模语言模型已显示出惊人的能力&#xff0c;可以从少量样本中学习。然而&#xff0c;这种能力需要昂贵的大规模模型&#xff0c;其运行成本是一大挑战。此外&#xff0c;在推理过程中&#xff0c;需要对所有测试输入的上下文&#xff08;包括演示&a…

Chromium 中chrome.topSites扩展接口定义c++

一、chrome.topSites 使用 chrome.topSites API 访问新标签页上显示的热门网站&#xff08;即最常访问的网站&#xff09;。不包括用户自定义的快捷方式。 权限 topSites 您必须声明“topSites”扩展程序清单中授予使用此 API 的权限。 {"name": "My exten…

物联网设备如何助力实现高效远程老人监护

在发达国家&#xff0c;老龄化进程加速&#xff0c;老年人常需医疗、行动辅助、安全保障及个人卫生护理&#xff0c;费用高昂。传统老人监护依赖护士或助理现场照料&#xff0c;而物联网远程监控方案能有效改进此模式。它通过运用传感器等技术&#xff0c;实现全天候低成本实时…

NPM 包开发与优化全面指南

前言 Hey, 我是 Immerse系列文章首发于【Immerse】&#xff0c;更多内容请关注该网站转载说明&#xff1a;转载请注明原文出处及版权声明&#xff01; 1. 理解 NPM 包的结构 1.1 package.json 文件&#xff1a;包的核心 package.json文件是 NPM 包的中央配置&#xff0c;定…

基于redis实现延迟队列

Redis实现延时队列 延时队列里装的主要是延时任务&#xff0c;用延时队列来维护延时任务的执行时间。 1、延时队列有哪些使用情景&#xff1f; 1、如果请求加锁没加成功 可以将这个请求扔到延时队列里&#xff0c;延后处理。 2、业务中有延时任务的需要 比如说&#xff0…

探索Python安全字符串处理的奥秘:MarkupSafe库揭秘

文章目录 探索Python安全字符串处理的奥秘&#xff1a;MarkupSafe库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;MarkupSafe是什么&#xff1f;第三部分&#xff1a;如何安装MarkupSafe&#xff1f;第四部分&#xff1a;MarkupSafe的简单使用方法1. 使用escape函数2.…

Docker(一):Docker简介及安装

目录 1 Docker简介1.1 容器跟虚拟机的区别1、虚拟机是什么2、容器是什么3、容器和虚拟机的区别 1.2 为什么要学习容器1.3 Docker 是什么 2 Docker安装2.1 安装docker-centos71、环境初始化2、安装docker-ce3、配置docker镜像加速器 2.2 安装docker-ubuntu22.041、安装2、添加镜…

scp免密传输教程

scp免密传输教程 为了在使用 scp 命令时不需要输入密码&#xff0c;通常的做法是通过设置 SSH 公钥认证来实现。这种方法不仅避免了每次都要输入密码的麻烦&#xff0c;而且也更加安全。下面是如何设置 SSH 公钥认证的步骤&#xff1a; 1. 生成 SSH 密钥对&#xff08;如果你…

使用Postman发送POST请求的指南

作为一名软件测试工程师&#xff0c;掌握如何使用Postman发送POST请求是非常重要的技能。POST请求通常用于向服务器发送数据&#xff0c;以创建或更新资源。本文将详细介绍如何在Postman中发送POST请求&#xff0c;帮助你高效地进行接口测试。 什么是POST请求&#xff1f; PO…

<项目代码>YOLOv8 猫狗识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

auto占位符(C++11~C++17)

文章目录 1. 定义1.1 注意事项 2. 推导规则3. 返回类型推导(C14)4. lambda表达式中使用auto类型推导5. 非类型模板形参占位符&#xff08;C17&#xff09; 1. 定义 在C11以前&#xff0c;auto关键字是用来声明自动变量的。从C11起auto被用来&#xff1a;声明变量时根据初始化表…

栈虚拟机和寄存器虚拟机,有什么不同?

本来这节内容是打算直接讲字节码指令的&#xff0c;但讲之前又必须得先讲指令集架构&#xff0c;而指令集架构又分为两种&#xff0c;一种是基于栈的&#xff0c;一种是基于寄存器的。 那不妨我们这节就单独来讲讲栈虚拟机和寄存器虚拟机&#xff0c;它们有什么不同&#xff0…

Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143388189 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Ground…

vxe-table v4.8+ 与 v3.10+ 虚拟滚动支持动态行高,虚拟渲染更快了

Vxe UI vue vxe-table v4.8 与 v3.10 解决了老版本虚拟滚动不支持动态行高的问题&#xff0c;重构了虚拟渲染&#xff0c;渲染性能大幅提升了&#xff0c;行高自适应和列宽拖动都支持&#xff0c;大幅降低虚拟渲染过程中的滚动白屏&#xff0c;大量数据列表滚动更加流畅。 自适…

Docker | 将本地项目发布到阿里云的实现流程

发布到阿里云 本地镜像发布到阿里云流程具体流程1. docker commit 生成新镜像文件2. 查看镜像3. 阿里云开发者平台选择控制台&#xff0c;进入容器镜像服务&#xff0c;选择个人实例创建命名空间仓库名称进入管理界面获得脚本推送到阿里云 补充&#xff1a; docker tag 命令基本…