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,工程,”,建设,的,全国,重点,大学
全模式分词结果:南京,南京市,南京市长江大桥,京市,市长,长江,长江大桥,大桥,是,一座,大桥
精确模式分词结果:南京市长江大桥,是,一座,大桥
搜索引擎模式分词结果:南京,京市,市长,长江,大桥,南京市,南京市长江大桥,是,一座,大桥

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

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

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

相关文章

VMware workstation搭建与安装AlmaLinux-9.2虚拟机

VMware workstation搭建与安装AlmaLinux-9.2虚拟机 适用于需要在VMware workstation平台安装AlmaLinux-9.2(最小化安装、无图形化界面)虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径VMware-workstation 1…

【前端素材】bootstrap5实现美食餐饮网站RegFood

一、需求分析 美食餐饮网站是指专门提供关于美食和餐饮的信息、服务和资源的在线平台。这类网站通常提供以下功能: 餐厅搜索和预订:用户可以在网站上搜索附近的餐厅,并预订桌位。网站会提供餐厅的详细信息,包括菜单、地址、电话号…

Jmeter 性能-监控服务器

Jmeter监控Linux需要三个文件 JMeterPlugins-Extras.jar (包:JMeterPlugins-Extras-1.4.0.zip) JMeterPlugins-Standard.jar (包:JMeterPlugins-Standard-1.4.0.zip) ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Perform…

JDK介绍

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit),JDK是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之…

vue3-计算属性

计算属性 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。 根据作者今年是否看过书展示不同信息 <script lang"ts" setup> import { ref, reactive } from "…

C++11 14 17内存管理

智能指针 unique_ptr 初始化 访问和移动赋值 重置和移动内存资源 自定义删除器 shared_ptr 原理 自定义删除器 分配器allocator和new重载 new表达式原理 operator new delete placement new new (buf) 是一种 "placement new" 的使用方式&#xff0c;它允许在已…

thinkphp学习06-连接数据库与模型初探

新建数据库 CREATE DATABASE tp6stu01 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;创建表和数据 DROP TABLE IF EXISTS tp_user; CREATE TABLE tp_user (id mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自动编号,username varchar(20) CHARACTER SET utf8 COLL…

绘制几何图形(Shape)

目录 1、创建绘制组件 2、形状视口viewport 3、自定义样式 4、场景示例 绘制组件用于在页面绘制图形&#xff0c;Shape组件是绘制组件的父组件&#xff0c;父组件中会描述所有绘制组件均支持的通用属性。具体用法请参考Shape。 1、创建绘制组件 绘制组件可以由以下两种形式…

Spring MVC的RequestMapping注解、controller方法返回值

1.使用说明 作用&#xff1a;用于建立请求URL和处理请求方法之间的对应关系。 出现位置&#xff1a; 类上&#xff1a; 请求 URL的第一级访问目录。此处不写的话&#xff0c;就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理&…

Netty开篇——NIO章上(三)

Java NIO基本介绍 java non-blocking I/O 称为NIO(也叫New IO)。JDK4开始提供,同步非阻塞相关内容在 java.nio 包及子包下&#xff0c;对java.io 包中的很多类进行改写。三大核心: Channel(通道)&#xff0c;Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区或者面向块编程的。…

企业网站建设中常用的英文翻译

下面好代码网在长期的网站建设业务中总结的&#xff0c;一些在企业网站建设中词语的常用翻译&#xff0c;可以让你的企业网站更具有专业性。如果你做中英文双语版本网站或者外贸网站的请收藏备用。 网站导航 site map 公司简介 PROFILE or COMPANY Profile or Company 综述 Gen…

Java文件自动生成文档

说明 此文章根据Gemini Pro 生成资料整理。 生成文档 javadoc -d mydoc -author -version HelloWorld.java javadoc -d mydoc -author -version HelloWorld.java 命令用于生成 Java 源文件的javadoc文档&#xff0c;并将javadoc文档输出到 mydoc 目录中。 javadoc&#xf…

【SQL注入】SQLMAP v1.7.11.1 汉化版

下载链接 【SQL注入】SQLMAP v1.7.11.1 汉化版 简介 SQLMAP是一款开源的自动化SQL注入工具&#xff0c;用于扫描和利用Web应用程序中的SQL注入漏洞。它在安全测试领域被广泛应用&#xff0c;可用于检测和利用SQL注入漏洞&#xff0c;以验证应用程序的安全性。 SQL注入是一种…

【服务器数据恢复】Hyper-V虚拟化数据恢复案例

服务器数据恢复环境&#xff1a; Windows Server操作系统服务器&#xff0c;部署Hyper-V虚拟化环境&#xff0c;虚拟机的硬盘文件和配置文件存放在某品牌MD3200存储中&#xff0c;MD3200存储中有一组由4块硬盘组成的raid5阵列&#xff0c;存放虚拟机的数据文件&#xff1b;另外…

C++11 左右值引用、移动语义

右值引用和移动语义 什么是左值&#xff1f;什么是左值引用&#xff1f; 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff0c;我们可以获取它的地址可以对它赋值&#xff0c;左值可以出现赋值符号的左边&#xff0c;右值不能出现在赋值符号左边。定义时const修饰…

Oracle数据库 CentOS7上修改hostname后无法启动解决办法

目录 一、问题背景 二、解决问题 三、重启数据库 四、重启监听 一、问题背景 CentOS系统需要修改hostname&#xff0c;修改后oracle数据库无法启动和正常运行。 系统&#xff1a;CentOS7.3 数据库版本&#xff1a;Oracle 11g Express Edtion 二、解决问题 通过which orac…

迈入AI智能时代!ChatGPT国内版免费AI助手工具 peropure·AI正式上线 一个想法写一首歌?这事AI还真能干!

号外&#xff01;前几天推荐的Peropure.Ai迎来升级&#xff0c;现已支持联网模式&#xff0c;回答更新更准&#xff0c;欢迎注册体验&#xff1a; https://sourl.cn/5T74Hu 相信很多人都有过这样的想法&#xff0c;有没有一首歌能表达自己此时此刻的心情&#xff1a; 当你在深…

线性代数——行列式相关性质

目录 一、行列式与它的转置列行列式相等 二、对换行列式的两行&#xff08;列&#xff09;&#xff0c;行列式变号 三、行列式某行&#xff08;列&#xff09;有公因子k&#xff0c;则k可以提到行列式外 四、行列式中若两行成比例&#xff0c;则行列式为0 五、行列式的某一行…

使用numpy处理图片——分离通道

大纲 读入图片分离通道堆叠法复制修改法 生成图片 在《使用numpy处理图片——滤镜》中&#xff0c;我们剥离了RGB中的一个颜色&#xff0c;达到一种滤镜的效果。 如果我们只保留一种元素&#xff0c;就可以做到PS中分离通道的效果。 读入图片 import numpy as np import PIL.…

整合junit与热部署

整合junit <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.7.0</version></dependency> 测试类上添加SpringBootTest 如&#xff1a; 注意测试类的…