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

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

图片


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

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

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

相关文章

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

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

图纸管理的方法、图纸管理软件

图纸管理是一个复杂且关键的过程,它涉及到图纸的创建、存储、共享、修改、审核、存档和检索等多个环节。以下是根据参考文章总结的图纸管理的具体内容和方法: 一、图纸管理的目的 1、确保图纸的准确性:通过规范的管理流程和质量控制措施&…

设计模式——观察者模式(发布/订阅模式)

观察者模式(发布/订阅模式) 是一种行为模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时&am…

这么多人追捧的伦敦金陷阱是什么?

我们经常说伦敦金交易是有风险的,整个伦敦金市场中随时可能会出现陷阱,如果投资者不小心掉进这些陷阱,轻则被震荡离场,丢失原来已经盈利的仓位,重则可能还会承受交易本金的亏损。下面我们就来介绍两个在伦敦金交易市场…

基于DMAIC的SMT TX插件撞伤不良改善

在快速发展的电子制造领域,SMT(表面贴装技术)已经成为电子产品组装的核心技术之一。然而,SMT TX插件撞伤不良问题一直是制约生产效率与产品质量的瓶颈。本文将基于DMAIC(定义、测量、分析、改进、控制)方法…

网格布局之网格线编号定位

网格布局之网格线编号定位 欢迎关注:xssy5431 小拾岁月 参考链接:https://mp.weixin.qq.com/s/aOO1G3r1kH-cHDXJGPzK6g 点击查看 名词解释 网格线:用与表示网格开始与结束的线。每条网格线都是从 1 开始,分为 行网格线 与 列网…

Mcgs屏幕脚本程序

目录 1.脚本程序概述1.1 脚本程序简介1.2 脚本程序编辑环境 2.脚本程序语言要素2.1 变量和常量2.2 对象2.3 事件2.4 表达式2.5 联行符2.6 运算符2.7 系统函数 3. 基本语句3.1 赋值语句3.2 条件语句3.3 循环语句3.4 跳出语句3.5 退出语句3.6 注释语句3.7 声明语句3.6 命名规则 1…

小白如何重装系统win10?电脑一键重装系统傻瓜式操作!超详细步骤!

随着电脑的广泛应用,给笔记本/台式电脑系统重装已成为一项基本技能。对于电脑新手而言,如何重装Win10系统,或者更高版本的Win11系统可能是一个巨大的挑战。如果对电脑重装系统刚好有需要了解的小伙伴,不妨看看下面的干货分享。本文…

AI智能写作工具, 免费在线智能创作内容网站

对于需要创作内容的同学,选择一款适合自己的AI写作工具可以极大的提高创作效率。下面小编就来和大家分享几款可以生成高质量原创内容的AI写作工具。 1. Kimi智能助手 Kimi智能助手是一款集成了先进算法的AI工具,它能够理解复杂的语言模式,生…

Mp3文件结构全解析(一)

Mp3文件结构全解析(一) MP3 文件是由帧(frame)构成的,帧是MP3 文件最小的组成单位。MP3的全称应为MPEG1 Layer-3 音频 文件,MPEG(Moving Picture Experts Group) 在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG 音频文件…

vue3delete请求报403forbidden,前后端解决方式,cookie无效问题

在做开发时,前期已经在Controller类加上CrossOrigin(origins "*"),发送get和post请求都没问题,但遇到delete请求时,又报出跨域问题 一.前端添加proxy代理服务器(未能解决) 在vue.config.js中使…

【实战】Spring Cloud Stream 3.1+整合Kafka

文章目录 前言新版版本优势实战演示增加maven依赖增加applicaiton.yaml配置新增Kafka通道消费者新增发送消息的接口 实战测试postman发送一个正常的消息postman发送异常消息 前言 之前我们已经整合过Spring Cloud Stream 3.0版本与Kafka、RabbitMQ中间件,简直不要太…

要改Google签名?这些你足够了解吗!

大家好,我是小编阿文。欢迎您关注我们,经常分享有关Android出海,iOS出海,App市场政策实时更新,互金市场投放策略,最新互金新闻资讯等文章,期待与您共航世界之海。 老项目keystore签名信息包含国…

python-画三角形

[题目描述] 输入一个正整数n,请使用大写字母拼成一个这样的三角形图案(参考样例输入输出):三角形图案的第1行有1个字母,第2行有2个字母,以此类推;在三角形图案中,由上至下、由左至右…

【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)

揭秘高效存储模型与数据结构底层实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 链表使用场景List(列表)和 链表的关系链表的实现链表的节点list的源码实现结构模…

零信任是对抗AI威胁的“解药”

人工智能的变革力量正在重塑众多行业的业务运营。通过机器人流程自动化(RPA),人工智能正在将人力资源从重复的、基于规则的任务中解放出来,并将其重点放在战略性的、复杂的操作上。此外,人工智能和机器学习算法可以以前…

防爆气象仪的工作原理

TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…

BottomSheet 半模态视图

先看效果图: 越来越多的app,使用半模态视图,弹窗从底部弹窗,手动滑动收起。交互流程丝滑,体验流畅。我这一研究才发现,官方出了一个控件叫 UISheetPresentationController,使用起来及其方便,只需要关注业务逻辑就可以,着急的朋友可以直接把demo拿去。BottomSheetDemo…

项目二 OpenStack快速入门

任务一 熟悉OpenStack图形界面操作 1.1 Horizon项目 •各OpenStack服务的图形界面都是由Horizon提供的。 •Horizon提供基于Web的模块化用户界面。 •Horizon为云管理员提供一个整体的视图。 •Horizon为终端用户提供一个自主服务的门户。 •Horizon由云管理员进行管理…

2024最新版Vcpkg安装第三方库报错error: building XXXX failed with: BUILD_FAILED

很多朋友用Vcpkg安装第三方库的时候基本都会遇到报错的情况,而且大部分都会出现下面这个页面里面的红色报错信息,但是实际上真正错误应该是上面的Cmake Error提示,下面的红色警告只是Vcpkg官方提供给我们的一个最基础的解决方式,而…