Python——jieba优秀的中文分词库(基础知识+实例)

news/2024/5/9 9:43:57/文章来源:https://blog.csdn.net/m0_63244368/article/details/126837925

Hello,World!

从去年开始学习Python,在长久的学习过程中,发现了许多有趣的知识,不断充实自己。今天我所写的内容也是极具趣味性,关于优秀的中文分词库——jieba库。

🏔关于Jieba

        🐒什么是jieba?

1、jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性:

  • 中文文本需要通过分词获得单个的词语
  • jieba需要额外安装
  • jieba库提供三种分词模式

2、jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。【这一点是很有趣的😄!】

3、jieba库支持四种分词模式:精确模式、全模式、搜索引擎模式、paddle模式,并且支持繁体分词,以及自定义词典。具体介绍:

  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

        算法

  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

正文来了!!!

🏔一、安装jieba库

        🐒1.  此次内容创作,我主要使用的软件有Anaconda,Jupyter Notebook,Pycharm等,看过我之前文章的大佬们,相信对Anaconda都有一个简单的了解,这里就不一一叙述了,直接安装🙂。

因为jieba库不是Anaconda中自带的,所以需要我们自己下载,首先进入jieba库官网:jieba · PyPIhttps://pypi.org/project/jieba/#files

如下图:

 点击官网中文件下载即可(如果下载速度比较慢,可以私聊我!💪)

        🐒2.  将压缩包解压到anaconda的pkgs目录。

        🐒3.  打开anaconda prompt,切换目录至比如我的D:/anaconda/pkgs/jieba-0.42,输入cmd进入命令行模式
执行  python setup.py install   即可。

        🐒4.  再次打开jupyter notebook 测试

import jieba,正常。pycharm中 import jieba ,正常。由此,我们的第一步安装完成!

pip install jiebaimport jieba

 🏔二、jieba库的使用

        🐒1.  精确模式

        将语句最精确的切分,不存在冗余数据,适合做文本分析。

        #精确模式

        jieba.cut(text, cut_all=False)

        案例分析:

        精确模式分析是不存在冗余数据的,把完整的text文本按照中文词库的标准完成拆分。如图所示:

import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

      🐒 2.  全模式

        将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据。

        #全模式

        jieba.cut(text, cut_all=True)

        案例分析:

        全模式与精确模式的不同在于,全模式存在冗余数据,是将存在可能的词语全部切分出来,从第一个字到最后一个字遍历作为词语第一个字。例如:以“吉”开头的词语包括“吉林”,“吉林省”,以“长”开头的名词包括“长春”“长春市”等等。如图所示:

 不难看出,输出的内容存在冗余数据。

seg_list = jieba.cut("我来到吉林省长春市高新技术产业开发区光谷大街1188号", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

      🐒 3、搜索引擎模式

        在精确模式的基础上,对长词再次进行切分,提高召回率,适合用于搜索引擎分词。

        #搜索引擎模式

        jieba.lcut_for_search(text)

        案例分析:

        搜索引擎模式是将精确模式中的长词,再次按照全模式切分。如图所示:

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

        🐒4、Viterbi算法

 此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了。

        🐒5、自定义词典

        在jieba自定义字典方面,目前我所了解到的常见的应用环境是各网络平台对违禁词的查询搜索处理,以及网站也对用户个人信息的处理,对购物方面评价信息的处理等等。因此,我同样也使用了jupyter notebook尝试了自定义词典的使用,text文本文件及运行结果如下图所示:

 

//自定义词典使用
import jieba
test_sent = "李小福是创新办主任也是云计算方面的专家"
jieba.load_userdict("E://userdict.txt")
words = jieba.cut(test_sent)
print(list(words))

         可以看出,我的自定义词典在运行过程中,起到了具体的作用。可想而知,当我们在对一篇文章进行内容的分析处理是,也是可以使用jieba库的!可以通过用户自定义词典来增强歧义纠错能力!

部分文本解析语法:

def getext():fname=input("请输入要打开的文件路径及名称,以txt结尾:")fo=open(fname)      #打开该文件,默认是文本文件,文本文件其实就是一个字符串txt=fo.read()       #<文件名>.read()  默认是读取文件全部内容txt=txt.lower()     #将文本所有字母小写for ch in '!"#$%()*+<_>/:;<>=?@[\]\^_{}|~':txt=txt.replace(ch,'')       #将文本中含有的所有上述字符都变为空格return txt
hamlettxt=getext()
words=hamlettxt.split()      #默认值,是将文本中单词按照空格分成一个一个的单词,并将结果保存成列表类型
counts={}                    #定义一个空字典类型,因为我们希望单词和该单词出现的次数作为一个键值对
for word in words:           #遍历words列表的每一个值counts[word]=counts.get(word,0)+1
items=list(counts.items())      #将该字典转化成一个列表,其中的键值对是以元组的形式存在
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):word,count=items[i]       #items[i] 是个元组,元组可以带括号,可以不带括号;赋值print("{:<10}{:>5}".format(word,count))

  🏔三、 使用语法

                🐒1.  对词组的基本操作

         添加

str = "你好呀,我叫李华!多多关照!"
jieba.add_word("你")
print(jieba.lcut(str))

         删除

str = "你好呀,我叫李华!多多关照!"
jieba.del_word("李华")
print(jieba.lcut(str))

         调整词出现的频率

str = "你好呀,我叫李华!多多关照!"
jieba.suggest_freq(("李", "华"), True)
print(jieba.lcut(str))

               🐒 2.  关键字提取

        TFIDF算法

import jieba.analyse # 导包jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
allowPOS=())
jieba.analyse.TFIDF(idf_path=None) # 创建一个新的 TFIDF 实例,idf_path是指指定 IDF 频率文件的路径

参数:

  • sentence:要提取的文本
  • topK:返回多少个具有最高TF/IDF权重的关键字。默认值为 20
  • withWeight:是否返回关键字的TF/IDF权重。默认为假
  • allowPOS:过滤包含POS(词性)的单词。空无过滤,可以选择['ns', 'n', 'vn', 'v','nr']

        TextRank算法

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) # 有默认词性
jieba.analyse.TextRank() # 新建自定义 TextRank 实例

                🐒3.  词性标注

jieba.posseg.POSTokenizer(tokenizer=None)

新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器

jieba.posseg.dt 为默认词性标注分词器

import jieba.posseg
str = "你好呀,我叫李华!多多关照!"
pt = jieba.posseg.POSTokenizer()
print(pt.lcut(str)) # 得到 pair键值对,使用遍历取值
# print(jieba.posseg.cut(str)) # 作用一样
for i, k in ps.lcut(str):
print(i, k)

                🐒4.  Tokenize:返回词语在原文的起止位置

  • 注意,输入参数只接受 unicode

默认模式

result = jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

搜索模式

result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

         如上文所示,关于Pyhton中文分词库——jieba库的介绍,暂时结束,如果后续学习到了新的内容,会再次进行介绍!各位大佬们,如果发现文章内容错误,希望可以指出,评论或私信都可🙂

部分内容来源:GitHub - fxsjy/jieba: 结巴中文分词

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

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

相关文章

BUG定位---一起学习吧之测试

判断一个BUG是前端还是后端的&#xff0c;通常需要根据BUG的具体表现、发生的环境以及相关的技术栈来进行分析。以下是一些常用的判断方法&#xff1a; 错误发生的位置&#xff1a; 如果BUG涉及的是页面的布局、样式、交互效果等&#xff0c;那么很可能是前端的BUG。如果BUG与…

鸿蒙HarmonyOS应用开发之NDK工程构建概述

OpenHarmony NDK默认使用CMake作为构建系统&#xff0c;随包提供了符合OpenHarmony工具链的基础配置文件 ohos.toolchain.cmake &#xff0c;用于预定义CMake变量来简化开发者配置。 常用的NDK工程构建方式有&#xff1a; 从源码构建 源码构建也有不同方式&#xff1a; 可以使…

29---Nor Flash电路设计

视频链接 Nor Flash硬件电路设计01_哔哩哔哩_bilibili NOR FLASH电路设计 1、NOR FLASH介绍 NOR Flash最早是由Intel公司于1988年开发出的。 NOR Flash虽容量小但速度快,最大特点是支持芯片内执行&#xff08;XIP&#xff09;&#xff0c;即程序可以直接在NOR flash的片内…

Spring Cloud Gateway Server MVC

之前你如果要用spring cloud gateway &#xff0c;就必须是webflux 的&#xff0c;也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。 具体使用mvc的gateway步骤如下 普通的Eureka Client的项目 如果你只是想测…

前端Webpack5高级进阶课程

课程介绍 本套视频教程主要内容包含React/Vue最新版本脚手架分析、基于Webpack5编写自己的loader和plugin等&#xff0c;让你开发时选择更多样&#xff0c;最后&#xff0c;用不到一百行的代码实现Webpack打包。通过本套视频教程的学习&#xff0c;可以帮你彻底打通Webpack的任…

CCleaner2024最新版本win系统清理工具功能介绍及下载

CCleaner是一款在计算机领域广受欢迎的系统清理和优化工具。它以其强大的功能、简洁的操作界面和显著的效果&#xff0c;赢得了众多用户的青睐。下面&#xff0c;我将从功能、特点、使用方法以及优势等方面对CCleaner进行详细介绍。 CCleaner下载如下&#xff1a; https://wm.…

一题学会BFS和DFS,手撕不再怕

先复习一下什么是BFS和DFS&#xff0c;各位读者接着往下看就行 BFS算法 BFS类似于树的层次遍历过程,从根节点开始&#xff0c;沿着树的宽度遍历树的节点。如果所有节点均被访问&#xff0c;则算法中止。 舍去空间换时间。 算法思路队列&#xff08;先进先出&#xff09; 1…

红外遥控器的使用和详细解释

infrared.c #include "infrared.h"/* 红外 --- PA8*/void Infrared_Init(void) {GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;//使能SYSCFG时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, E…

如何绕过CDN查真实IP

1.多地ping看是否有cdn 2.邮件订阅或者rss订阅 二级域名可能不会做cdnnslookup http://xxx.com 国外dns查找域名历史解析记录&#xff0c;因为域名在上CDN之前用的IP&#xff0c;很有可能就是CDN的真实源IP地址6.phpinfo上显示的信息 cloudflare github可以获取真实IP一个网站…

JAVA电商平台 免 费 搭 建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

在数字化时代&#xff0c;电商行业正经历着前所未有的变革。鸿鹄云商的saas云平台以其独特的架构和先进的理念&#xff0c;为电商行业带来了全新的商业模式和营销策略。该平台涉及多个平台端&#xff0c;包括平台管理、商家端、买家平台、微服务平台等&#xff0c;涵盖了pc端、…

鸿蒙雄起!风口就在当下,你如何抉择?

近年来&#xff0c;华为自主研发的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;引起了广泛的关注和讨论。鸿蒙系统不仅标志着华为在软件领域的一次重大突破&#xff0c;也预示着全球智能设备市场格局的潜在变化。本文将深入探讨鸿蒙系统的兴起、其在市场上的表现以及对程序员…

【技巧】PyTorch限制GPU显存的可使用上限

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 从 PyTorch 1.4 版本开始&#xff0c;引入了一个新的功能 torch.cuda.set_per_process_memory_fraction(fraction, device)&#xff0c;这个功能允许用户为特定的 GPU 设备设置进程可使用的显存上限比例。 测试代…

第十篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作Excel

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列博文目录 前言一、重要作用解说二、Python操作Excel的常用库介绍三、数据处理和分析示例代码四、自动化报表生成示例代码五、数据导入和导出示例代码六、数据可视化示例代码八、数据校验和清洗示例代码九、…

开源项目ChatGPT-Next-Web的容器化部署(二)-- jenkins CI构建并推送镜像

一、背景 接着上文已制作好了Dockerfile&#xff0c;接下来就是docker build/tag/push等一系列操作了。 不过在这之前&#xff0c;你还必须在jenkins等CI工具中&#xff0c;拉取源码&#xff0c;然后build构建应用。 因为本文的重点不是讲述jenkins ci工具&#xff0c;所以只…

【动手学深度学习】深入浅出深度学习之线性神经网络

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 线性回归 &#x1f33b;1.1 矢量化加速 &#x1f33b;1.2 正态分布与平方损失 &#x1f33c;2. 线性回归的从零开始实现 &#x1f33b;2.1. 生成数据集 &#x…

优酷造车!影视制作车实现片场协同办公、实时粗剪

3月28日&#xff0c;第十一届中国网络视听大会在成都开幕&#xff0c;会场外&#xff0c;一台长12米的“变形金刚”吸引了众多与会嘉宾。这是优酷发布的行业首款影视制作车&#xff0c;该车为导演和后期工种提供一站式软硬件服务和舒适的集体办公环境。优酷工作人员介绍&#x…

centos中安装docker启动chatwoot

安装docker 1.首先&#xff0c;确保系统处于最新状态&#xff1a; yum update2.安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm23.添加 Docker 的官方 GPG 密钥&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/cent…

OCR研究背景及相关论文分享

光学字符识别&#xff08;Optical Character Recognition&#xff0c;OCR&#xff09;是指使用光学方法将图像中的文字转换为机器可编辑的文本的技术。OCR技术的研究和应用已有数十年的历史&#xff0c;其背景和发展受到多方面因素的影响。 技术需求背景 1.自动化文档处理&am…

数据结构/C++:位图 布隆过滤器

数据结构/C&#xff1a;位图 & 布隆过滤器 位图实现应用 布隆过滤器实现应用 哈希表通过映射关系&#xff0c;实现了O(1)的复杂度来查找数据。相比于其它数据结构&#xff0c;哈希在实践中是一个非常重要的思想&#xff0c;本博客将介绍哈希思想的两大应用&#xff0c;位图…

鸿蒙HarmonyOS应用开发之使用NAPI接口在主线程中进行模块加载

场景介绍 Node-API中的napi_load_module接口的功能是在主线程中进行模块的加载&#xff0c;当模块加载出来之后&#xff0c;可以使用函数napi_get_property获取模块导出的变量&#xff0c;也可以使用napi_get_named_property获取模块导出的函数&#xff0c;目前支持以下场景&a…