Python之jieba分词相关介绍

1.jieba分词的安装 

直接在cmd窗口当中pip install即可

2.jieba分词的介绍

jieba分词是目前比较好的中文分词组件之一,jieba分词支持三种模式的分词(精确模式、全模式、搜索引擎模式),并且支持自定义词典(这一点在特定的领域很重要,有时候需要根据领域的需要来添加特定的词典以提高分词结果的质量)、支持繁体字分词。

3.jieba分词三种分词模式及使用例子

jieba分词模块的主要方法是jieba.cut(),精确模式和全模式的区别主要在于其中的参数不同

(1)精确模式:将文本精确地切开,适用于文本分析

jieba.cut()方法里面的CUT_ALL=False

(2)全模式:将文本里面所有可以成词的词语全部提取出来,速度较快,但是不能解决歧义的问题

 jieba.cut()方法里面的CUT_ALL=True

(3)搜索引擎模式:在精确模式的基础上,将长词再次切分,供搜索使用

需要调用jieba.cut_for_search()方法

仅仅是看这些东西,看不出个所以然来,接下来对三种分词的模式进行测试:

text='北京邮电大学是教育部直属、工业和信息化部共建、首批进行“211工程”建设的全国重点大学'
try_words=jieba.cut(text,cut_all=True)
print ('全模式分词结果:'+','.join(try_words))
try_words=jieba.cut(text,cut_all=False)
print ('精确模式分词结果:'+','.join(try_words))
try_words=jieba.cut_for_search(text)
print ('搜素引擎模式分词结果:'+','.join(try_words))

上述代码运行结果:

全模式分词结果:北京,北京邮电,北京邮电大学,邮电,邮电大学,电大,大学,是,教育,教育部,直属,,,工业,和,信息,信息化,部,
共建,,,首批,进行,,211,工程,,,建设,的,全国,重点,大学
精确模式分词结果:北京邮电大学,是,教育部,直属,、,工业,和,信息化,部,共建,、,首批,进行,“,211,工程,”,建设,的,全国,重点,
大学
搜素引擎模式分词结果:北京,邮电,电大,大学,北京邮电大学,是,教育,教育部,直属,、,工业,和,信息,信息化,部,共建,、,首批,进行,
“,211,工程,”,建设,的,全国,重点,大学

分析上述代码得到的结果,我们看出全模式分词是将文本当中所有的词都提取出来,提词的窗口是允许重叠和包含的,词语当中的字眼可以出现多次,但是这种分词模式有可能会出现歧义;精确模式分词是将文本精确地分隔开,成词较长的优先,不存在成词窗口的重叠与重复的情况,这种分词模式出现歧义的概率比较小,但是有可能会出现分词窗口过大,某些重点词不会单独出现在结果当中的情况。综上所述,这两种模式的分词适用于不同的情景,应当酌情选择。

值得一提的是,这个例子当中的“工业和信息化部”也应当是一个独立的名词,但是这三种分词方法当中都没有出现这个词语,这就需要人工添加词库来实现,放在下一部分。

再对文本当中可能出现的歧义情况进行尝试:

text2='南京市长江大桥是一座大桥'
try_words=jieba.cut(text2,cut_all=True)
print ('全模式分词结果:'+','.join(try_words))
try_words=jieba.cut(text2,cut_all=False)
print ('精确模式分词结果:'+','.join(try_words))
try_words=jieba.cut_for_search(text2)
print ('搜索引擎模式分词结果:'+','.join(try_words))

这个例子当中的文本为“南京市长江大桥是一座大桥”,我们希望提取出来的分词结果应当为:“南京市长江大桥”,或者说,最次也应该是“南京市”和“长江大桥”两个词语,上述代码的运行结果为:

全模式分词结果:南京,南京市,京市,市长,长江,长江大桥,大桥,是,一座,大桥
精确模式分词结果:南京市,长江大桥,是,一座,大桥
搜索引擎模式分词结果:南京,京市,南京市,长江,大桥,长江大桥,是,一座,大桥

分析结果:三种模式当中都没有出现我们的最佳预期(南京市长江大桥),反而在全模式和搜索引擎模式下的分词结果当中出现了歧义词(市长、京市),这跟我们的语境显然是无关的,这也恰好反映了全模式和搜索引擎模式分词的一个缺陷,也就是容易出现与语境无关的歧义词,而精确模式出现的比较少。

至于为什么会出现上述情况,我在查阅相关资料之后,认为原因如下:

中文分词的方法大致可以分为三类:

基于字典、词库匹配的分词方法;基于词频度统计的分词方法和基于知识理解的分词方法(另外还有逐词遍历法,但是因为不论文本有多么短,词库多么大都要逐词遍历一遍,效率过低,所以说大部分情况不予采用)。一般的中文分词模块使用基于字典、词库的分词方法,全模式使用的策略为(设词典中最长词的长度为n):从字段的第一个字符开始,向后读取1,2,...n个字符,并且到词典当中去对应,如果能对应上,就将其取出来,这样就可以达到将所有可以成词的字段提取出来(并且有重复部分)的目的;而相应的,精确模式的分词策略则可能是尽可能将取词窗口扩大,也就是在可能含有重复的长度从1到n的这些词中,取最长的一个输出。

(上述的“原因”只是我在使用分词模块的各个模式时的一点个人看法,不一定正确,对于项目也没有什么影响,毕竟我也没有去专门研究过源码。。。)

4.jieba分词添加自定义的词典

中文分词常常用于许多特定的语境,相应的也就需要添加一些特定语境下的词典,比如上一部分的“南京市长江大桥”就属于“地标建筑”之类的词典,如果分词将其分为“南京市”和“长江大桥”就有可能不能完全反映出原文本的重点(毕竟南京市的东西很多,长江大桥也不止南京市有),这种时候我们就需要添加自定义的词典来提高分词的质量。

jieba.add_word('工业和信息化部')

使用jieba模块的add_word()方法即可对其加入新的词,插入之后的分词结果如下:

全模式分词结果:北京,北京邮电,北京邮电大学,邮电,邮电大学,电大,大学,是,教育,教育部,直属,,,工业,工业和信息化部,信息,
信息化,部,共建,,,首批,进行,,211,工程,,,建设,的,全国,
重点,大学
精确模式分词结果:北京邮电大学,是,教育部,直属,、,工业和信息化部,共建,、,首批,进行,“,211,工程,”,建设,的,全国,重点,
大学
搜素引擎模式分词结果:北京,邮电,电大,大学,北京邮电大学,是,教育,教育部,直属,、,工业,信息,信息化,工业和信息化部,共建,、
,首批,进行“,211,工程,”,建设,的,全国,重点,大学
全模式分词结果:南京,南京市,南京市长江大桥,京市,市长,长江,长江大桥,大桥,是,一座,大桥
精确模式分词结果:南京市长江大桥,是,一座,大桥
搜索引擎模式分词结果:南京,京市,市长,长江,大桥,南京市,南京市长江大桥,是,一座,大桥

主要的改变在于全模式和搜索引擎模式直接加入了这个词,而精确模式则是将新加词的子集词(姑且这么称呼)取代了,这也符合上一部分的假设。

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

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

相关文章

C++(20):list通过erase, erase_if删除元素

C++20前,使用成员函数erase删除元素,与vector的方法一致: iterator erase( iterator pos ); iterator erase( iterator first, iterator last ); 1.通过迭代器删除指定位置元素 需要说明的是,删除元素后,迭代器会失效,可以通过erase返回下一个有效的迭代器 #include &…

SpringBoot使用MockMVC单元测试Controller

对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如启动速度慢,测试验证不方便,依赖网络环境等&#…

GitHub项目推荐-incubator

项目地址 Github地址:GitHub - apache/incubator-anser 官网:Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛,也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…

【MATLAB源码-第109期】基于matlab的哈里斯鹰优化算发(HHO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 哈里斯鹰优化算法(Harris Hawk Optimization, HHO)是一种受自然界捕食行为启发的优化算法。它基于哈里斯鹰的捕猎策略和行为模式,主要用于解决各种复杂的优化问题。这个算法的核心特征在于…

层叠布局(Stack)

目录 1、概述 2、开发布局 3、对齐方式 3.1、TopStart 3.2、Top 3.3、TopEnd 3.4、Start 3.5、Center 3.6、End 3.7、BottomStart 3.8、Bottom 3.9、BottomEnd 4、Z序控制 5、场景示例 1、概述 层叠布局(StackLayout)用于在屏幕上预留一…

31 树的存储结构二

DIsplay() 递归显示 :图示 求树的高度时&#xff0c;递归的技巧 在递归的过程中&#xff1a;ret单独和任意一个子树的子高度比较&#xff0c;如果ret<max&#xff0c;retmax ------------- 注意&#xff1a;组织链表和子链表的【元素类型】都是TLNode* 链表都要先通过TLNod…

JavaScript 动态生成内容的过程

网页使用 JavaScript 动态生成内容的过程涉及到 JavaScript 脚本与网页的 HTML 和 CSS 的交互。基本过程如下&#xff1a; 浏览器加载 HTML&#xff1a;首先&#xff0c;浏览器加载网页的 HTML 内容&#xff0c;这构成了页面的基本结构。 执行 JavaScript&#xff1a;随后&…

Validation--自定义校验

前言&#xff1a; 今天学到这个&#xff0c;闲着也是闲着&#xff0c;就写一个记录一下&#xff0c;也算是总结 我们的步骤是这样的 1.自定义注解State 2.自定义校验数据的类StateValidation实现ConstrainValidator接口 3.在需要校验的地方使用自定义注解 1.自定义注解 这…

C语言如何提高程序的可读性?

一、问题 可读性是评价程序质量的一个重要标准&#xff0c;直接影响到程序的修改和后期维护&#xff0c;那么如何提高程序的可读性呢? 二、解答 提高程序可读性可以从以下几方面来进行。 &#xff08;1&#xff09;C程序整体由函数构成的。 程序中&#xff0c;main()就是其中…

【C++学习笔记】C++多值返回写法

C不像python可以轻易地处理多值返回问题&#xff0c;处理使用指针或者引用将需要返回的值通过参数带出来&#xff0c;还有几种特殊的方式。 引用自&#xff1a;https://mp.weixin.qq.com/s/VEvUxpcJPsxT9kL7-zLTxg 1. Tuple tie 通过使用std::tie&#xff0c;我们可以将tuple…

Mysql事务隔离级别是怎么实现的?

Mysql事务 事务概念事务特性事务并发事务隔离级别MVCC多版本并发控制 事务概念 小钢同学今天发工资了&#xff0c;赶紧打开招商银行app看看工资到账了没有&#xff0c;查看余额300 嗯&#xff0c;今天心情好&#xff0c;给对象转账50大元买lv包包去&#xff0c;最后的结果肯定…

Vmware虚拟机问题解决方案 运行虚拟机系统蓝屏 运行虚拟机时报错VT-x

1. 运行虚拟机系统蓝屏 可能的原因有两个: 1). 虚拟机所在磁盘的空间不足 ; -------> 清理磁盘空间 。 2). 操作系统版本高, 需要适配新版本的Vmware ; ------> 卸载Vmware15版本, 安装Vmware16版本 。 2. 卸载Vmware步骤 1). 卸载已经安装的VMware 弹出确认框, 点击…

四旋翼无人机入门基础知识

电池 聚合物锂电池单体电芯的额定电压都为3.7V 电池的保存电压&#xff1a;单个电芯3.8V 电池的满电电压&#xff1a;单个电芯4.2V 串联&#xff1a;容量不变&#xff0c;电压相加&#xff0c;并联&#xff1a;电压不变&#xff0c;容量相加 S&#xff1a;串联&#xff0c;P&…

基于博弈树的开源五子棋AI教程[7 多线程搜索]

文章目录 引子定义实现结果尾记 引子 多线程加快搜索速度这一认知是经受住实践考验的。博弈树搜索的并行搜索方式有很多种&#xff0c;例如叶子并行&#xff0c;根并行&#xff0c;树分裂等算法。笔者给出一种实现起来比较简单的根并行算法。 在是实现时需要注意两点&#xff…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成&#xff1a;在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口&#xff0c;同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

2_单列模式_懒汉式单例模式

二.懒汉式单例模式 (1) 饿汉式单例模式概念 为了解决饿汉式单例可能带来的内存浪费问题&#xff0c;于是就出现了懒汉式单例的写法。懒汉式单例模式的特点是&#xff0c;单例对象要在被使用时才会初始化。 (2) 代码实现 实现代码方式1&#xff1a;简单的饿汉式单例 /*** 优…

解密威胁:.kat6.l6st6r 勒索病毒的威胁与恢复

导言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒已经成为网络安全威胁中的一大巨头。其中&#xff0c;.kat6.l6st6r 勒索病毒以其狡猾的传播方式和高级的加密算法备受关注。本文将深入介绍.kat6.l6st6r 勒索病毒的特点、应对措施以及如何预防此类威胁。如果您在面对被…

基于java的 aws s3文件上传

aws s3 文件上传代码 首先&#xff0c;确保您已经在AWS上创建了一个S3存储桶&#xff0c;并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。 接下来&#xff0c;需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。以下是一个Ma…

Kubernetes实战(十七)-设置kubernetes允许master调度pod

1 taint节点调度策略 NoSchedule: 一定不能被调度PreferNoSchedule: 尽量不要调度NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod 2 查看节点调度 $ kubectl describe node|grep -E "Name:|Taints:" Name: ops-master-1 Taints: no…