Python8 使用结巴(jieba)分词并展示词云

news2025/1/16 2:37:58

Python的结巴(jieba)库是一个中文分词工具,主要用于对中文文本进行分词处理。它可以将输入的中文文本切分成一个个独立的词语,为后续的文本处理、分析、挖掘等任务提供基础支持。结巴库具有以下功能和特点:

  1. 中文分词: 将中文文本按照一定的规则和算法切分成独立的词语,方便后续的文本处理和分析。

  2. 支持不同分词模式: 结巴库支持精确模式、全模式和搜索引擎模式等不同的分词模式,满足不同场景下的需求。

  3. 支持自定义词典: 用户可以根据实际需求自定义词典,增加、删除或修改词语,提高分词的准确性。

  4. 高效处理: 结巴库采用了基于前缀词典的分词算法,具有较高的分词速度和效率。

  5. 开源免费: 结巴库是一个开源项目,可以免费获取并在各种应用中使用,广泛应用于文本处理、自然语言处理等领域。

本次将展示一个使用jieba库生成16首歌曲歌词文本关键词词云的示例,演示的形象化表达如下:

图片

1.用jieba库进行不同模式的分词

示例代码:

import jieba  # 导入结巴模块
seg_list=jieba.cut('我来到北京清华大学',cut_all=True)  # 使用全模式分词将文本"我来到北京清华大学"进行分词
# (cut_all=True)将使用全模式将句子中所有可能的词语都进行分词,可能会产生大量的冗余词语,这种模式适用于对文本进行初步分析或者处理速度要求较高的场景
print("全模式:"+"/".join(seg_list))

seg_list = jieba.cut("我来到北京清华大学", cut_all=False) # (cut_all=False或者不指定参数)将使用精准模式分词将文本"我来到北京清华大学"进行分词
print("精准模式:"+"/".join(seg_list))
seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精准模式
print(','.join(seg_list))

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
# 搜索引擎模式是在精准模式的基础上,对长词再次切分,以适应搜索引擎的需求,这种模式适用于对文本进行搜索引擎优化或者需要更多精准匹配的场景
print(','.join(seg_list))

运行结果:

Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\26320\AppData\Local\Temp\jieba.cache
Loading model cost 0.398 seconds.
Prefix dict has been built successfully.

全模式:我/来到/北京/清华/清华大学/华大/大学
精准模式:我/来到/北京/清华大学
他,来到,了,网易,杭研,大厦
小明,硕士,毕业,于,中国,科学,学院,科学院,中国科学院,计算,计算所,,,后,在,日本,京都,大学,日本京都大学,深造

2.根据歌词文本文件使用jieba库分析功能生成词云

将指定文件夹‘lyric’中的所有文本文件的内容合并到一个字符串中,并打印出这个字符串。该文件夹中共有16首歌曲的歌词文本文件和两张图片。

图片

import os  # os模块用于处理文件路径
content=''  #  定义空字符串content用于存储所有文本文件的内容
content_path=r'F:\桌面\python100\files\lyric'  # 设置变量content_path为指定的文件夹路径
files=os.listdir(content_path)  # 使用os.listdir()函数列出指定文件夹中的所有文件和子文件夹,将结果存储在列表files中
for file in files:  # 遍历files列表中的每一个文件或子文件夹
   full_path=os.path.join(content_path,file)  # 使用os.path.join()函数将文件夹路径和文件名拼接成完整的文件路径,存储在变量full_path中
    print(full_path)
    if full_path.endswith('.txt'):  # 如果文件路径以.txt结尾
        f=open(full_path,'r',encoding='utf-8')  # 使用open()函数以只读模式打开文本文件,指定编码为UTF-8,返回文件对象f
        content+=f.read()  # 读取文件对象f的内容,并将其追加到content字符串中
    else:  # 如果文件不是文本文件(不以.txt结尾),则跳过
        pass
print(content)  # 打印合并后的所有文本文件的内容字符串
F:\桌面\python100\files\lyric\qiaoba.jpg
F:\桌面\python100\files\lyric\xiong.jpg
F:\桌面\python100\files\lyric\《林中鸟》.txt
F:\桌面\python100\files\lyric\《逐世行》.txt
F:\桌面\python100\files\lyric\三生三世.txt
···
F:\桌面\python100\files\lyric\灵主不悔.txt
F:\桌面\python100\files\lyric\盗心贼.txt
《林中鸟》
词曲:高进
演唱:葛林
编曲:张亮
混音:侯春阳
来不及祈祷就开始奔跑
总觉得外面世界有多美好
···
盗心的贼
我的一腔热血就化作眼泪
不要再让我悲伤 如痴如醉
再爱一回

将上面的读取指定文件夹中的所有文本文件(.txt)并将它们的内容读取并合并到一个字符串中的操作完整地封装成一个 read_content()函数。

import os
# 读取指定路径下的所有文件,返回所文件接起来的内容
def read_content(content_path):
    # 初始化内容为空
    content=''
    # print(os.listdir(file_path))
    files=os.listdir(content_path)  # 使用os.listdir()函数列出‘content_path’中的所有文件和子文件夹,将结果存储在列表files中
    for file in files:  # 列表中的每一个文件或子文件夹
        # 拼接完整路径
        full_path=os.path.join(content_path,file)  # 使用os.path.join()函数将文件夹路径和文件名拼接成完整的文件路径,存储在变量full_path中
        
        if os.path.isfile(full_path): # 判断full_path是否是一个文件,而非目录
            if full_path.endswith('.txt'):  # 进一步判断文件是否以.txt结尾
                print('正在加载歌词文本{}'.format(full_path))  # 打印正在加载的文件名
                content+=open(full_path,'r',encoding='utf8').read()  # 读取文件内容并追加到content变量中
                
                content += '\n'  # 在每个文件内容后添加换行符以便区分不同文件的内容
            else:  # 对于非.txt文件
                print('{}不是歌词文本\n'.format(full_path))  # 打印文件不是歌词文本的信息
    print('加载歌词完毕\n')
    return content  # 函数返回最终拼接的内容
content=read_content(r'F:\桌面\python100\files\lyric')
print(content)

图片

在得到所有文本组合成的字符串后,利用TextRank算法提取歌词字符串中的关键词。这是一种基于图的排序算法,用于从文本中提取关键词,根据词与词之间的共现关系来确定每个词的重要性。这种方法适用于自动提取文本关键信息,常用于文本摘要、关键词提取等自然语言处理任务。下面的代码示例使用结巴(jieba)库的 analyse 模块来提取文本中的关键词,并计算它们的重要性。

import jieba.analyse  # 专门用于文本关键词提取的模块

#使用jieba的textrank提取出1000个关键词及其比重
result=jieba.analyse.textrank(content,topK=1000,withWeight=True)  # 使用 textrank 方法从变量 content(应该包含所有文本内容的字符串)中提取前1000个关键词。参数 withWeight=True 表示返回关键词及其相应的权重(重要性)
print(result)
keywords = dict()  # 初始化一个空字典 keywords,用于存储关键词及其权重
for i in result:  # 每个元素i是一个元组,其中i[0]是关键词i[1]是该关键词的权重
    keywords[i[0]] = i[1]  # 将关键词和其权重添加到字典 keywords 中
#   print(i[0])
print(keywords)

运行结果(部分):

图片

结果可视化,生成一个基于文本关键词频率的词云,其中还结合了一个指定的图片形状‘熊大’和图片颜色。

图片

from PIL import Image, ImageSequence  # 导入图像处理模块
import numpy as np  # np库常用于处理大型多维数组和矩阵
import matplotlib.pyplot as plt  # 绘图模块
from wordcloud import WordCloud, ImageColorGenerator  # 用于生成词云

# 初始化图片
image = Image.open(r'F:\桌面\python100\files\lyric\xiong.jpg')
graph = np.array(image)  # 图片转换为数组

# 生成云图,指定字体路径,因为WordCloud默认不支持中文,所以需要指定中文字体
# 指定字体路径,因为WordCloud默认不支持中文,所以需要指定中文字体。background_color: 设置词云的背景颜色。max_words: 设置最多显示的词数。mask: 设置词云形状的掩模图像,此处使用之前转换的图片数组。
wc = WordCloud(font_path='‪C:/Windows/Fonts/STFANGSO.TTF',
    background_color='white', max_words=100, mask=graph) 

# 生成词云
wc.generate_from_frequencies(keywords)
# 创建一个颜色生成器,它会基于提供的图片数组来为词云生成颜色
image_color = ImageColorGenerator(graph)
# 显示图片
plt.imshow(wc)
plt.imshow(wc.recolor(color_func=image_color))
plt.axis("off") # 关闭图像坐标系
plt.show()

图片


以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

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

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

相关文章

【原创】springboot+mysql小区用水监控管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

视频怎么旋转方向?3种旋转视频方法分享

视频怎么旋转方向?视频旋转方向,在视频编辑过程中,扮演着至关重要的角色。这一操作不仅能有效调整视频的视觉呈现,使之更加符合我们的预期,还能解决由于拍摄角度不当导致的画面倾斜问题。通过简单的旋转调整&#xff0…

从网络配置文件中提取PEAP凭据

我的一位同事最近遇到了这样一种情况:他可以物理访问使用802.1X连接到有线网络的Windows计算机,同时保存了用于身份验证的用户凭据,随后他想提取这些凭据,您可能认为这没什么特别的,但是事情却有点崎岖波折…… 如何开…

shell脚本监控docker容器和supervisor 运行情况

1.ASR服务 需求: 在ASR服务器中 docker 以下操作中 忽略容器名字叫 nls-cloud-mongodb 的容器 在ASR服务器中 docker ps 查看正在运行的容器 docker stats -a --no-stream 可以监控容器所占资源 确认是否有pid且不等于0 docker inspect -f “{{.RestartCount}}” 容器名称 可…

llama-factory微调工具使用入门

一、定义 环境配置案例: https://zhuanlan.zhihu.com/p/695287607chatglm3 案例多卡训练deepspeedllama factory 案例Qwen1.5报错 二、实现 环境配置 git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda …

百元内平价蓝牙耳机推荐,四款高热度平价耳机推荐!

在追求高品质音乐体验的同时,我们也不得不考虑预算的限制,不过市面上有不少百元内平价蓝牙耳机,它们在保证音质和舒适度的同时,也兼顾了价格的亲民性,身蓝牙耳机测评的达人,经手过不少的百元蓝牙耳机&#…

CleanMyMac for Mac系统优化垃圾清理软件卸载 工具(小白轻松上手,简单易学)

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、启动台显示软件图标,表示安装成功 三、运行测试1、打开软件,配置2、授权,允许完全磁盘访问 安装完成&a…

.NET 分享一个强大的内网渗透工具集合|果断收藏

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

15天搭建ETF量化交易系统Day8—强化自动交易模块

搭建过程 每个交易者都应该形成一套自己的交易系统。 很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。 授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我…

硬盘分区无法访问:深度解析与解决之道

一、硬盘分区无法访问的现象描述 在日常使用电脑的过程中,有时会遇到硬盘分区无法访问的情况。这通常表现为双击分区时系统提示“无法访问”、“磁盘未格式化”或“需要格式化”等错误消息,导致分区内的文件无法读取或操作。这种情况可能会给用户带来极…

echarts dataZoom用按钮代替鼠标滚轮实现同样效果

2024.06.19今天我学习了echarts dataZoom如何用按钮来控制放大缩小的功能, 效果如下: 通过控制按钮来实现图表放大缩小数据的效果。 步骤如下: 一、写缩放按钮,以及图表数据。 二、设置初始位置的变量,我这边是七个…

【前端项目笔记】3 用户管理

用户管理相关功能实现 涉及表单、对话框、Ajax数据请求 基本页面 用户列表开发 在router.js中导入Users.vue 解决用户列表小问题 选中(激活)子菜单后刷新不显示高亮 给二级菜单绑定单击事件,点击链接时把对应的地址保存到sessionSto…

WPS相同字体但是部分文字样式不一样解决办法

如下图,在使用wps编辑文档的时候发现有些电脑的文字字体很奇怪,但是把鼠标移到这个文字的位置,发现它和其他正常文字的字体是一样的,都是仿宋_GB2312 正常电脑的文字如下图所示 打开C:\Windows找到Fonts这个文件夹 把仿宋_GB2312这…

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)

热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务,能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理,这些热门高效的免费API提供了强大的功能和高效的性能&am…

格雷母线技术革新:推动斗轮堆取料机进入精准操作时代

随着工业4.0时代的到来,智能化、自动化已成为工业发展的必然趋势。特别是在港口、电力、冶金等行业中,散料装卸机械的智能化水平直接关系到整个生产流程的效率与安全。斗轮堆取料机作为这些行业中的关键设备,其操作方式的革新显得尤为重要。 …

Apple Watch开发入门知识,还是很有必要的

随着现在 Apple 生态圈的发展,越来越多的 App 会把自己的简化版从 iOS 迁移至 WatchOS(支付宝、微信、手Q、头条、QQ音乐、网易云音乐等等,都有Watch版App)。官方开发文档:Setting up a watchOS project | Apple Devel…

NPDP含金量、考试内容、报考要求、适合人群?

01.NPDP核心价值解读 NPDP认证的核心价值在于整合产品开发管理的理论与实践,包含新产品开发策略、研发流程管理、市场研究、销规划、团队管理、项目管理等等,理论体系和知识内容穿插在产品发展的全过程。 对于职场打工人来说,拥有NPDP证书证…

csrf+xss组合拳

csrfxss组合拳 一、环境搭建 靶场cms文章管理系统 二、流程开始 这是系统前端 系统管理后台 而我们要打到后台管理员的cookie,结合前端存储型的xss完全可以实现,那后端怎么被打到cookie呢,我们来从这里添加用户开始分析数据包来说明 看看…

【CT】LeetCode手撕—手撕快排

目录 题目1-思路-快排1-1 快排的核心思想快速排序算法步骤优美的调整区间 1-2 ⭐快排的实现 2- 实现⭐912. 排序数组——题解思路 3- ACM 实现 题目 原题连接:912. 排序数组 1-思路-快排 1-1 快排的核心思想 选择一个基准 基准左侧的元素都小于该元素基准右侧的元…

乾坤微服务的使用

前言: 在这里整理下用乾坤来开发微服务的一些资料。 使用好处: 使用乾坤可以实现什么效果呢?众所周知,前端的框架五花八门,react/vue/angular等各领风骚,那么如果我们有需要把不同技术栈的项目整合起来&…