当前位置: 首页 > 图灵资讯 > 行业资讯> Python之jieba分词相关介绍

Python之jieba分词相关介绍

发布时间:2025-10-16 21:16:01

1.jieba分词安装

pip直接在cmd窗口 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,工程,建设,国家,重点,大学

相关建议:Python视频教程

通过分析上述代码获得的结果,我们可以看到整个模式的分词是提取文本中的所有单词,允许重叠和包含提取单词的窗口。单词中的单词可以多次出现,但这种分词模式可能存在歧义;精确模式的分词是准确分离文本,优先考虑成词较长。成词窗口没有重叠和重复。这种分词模式歧义的概率相对较小,但分词窗口可能太大,一些关键词不会单独出现在结果中。综上所述,这两种模式的分词适用于不同的情况,应酌情选择。

值得一提的是,这个例子中的“工业和信息化部”也应该是一个独立的术语,但这个词没有出现在这三种分词方法中,这需要在下一部分手动添加词库。

然后尝试文本中可能出现的歧义:

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('工业和信息化部')

add_使用jieba模块word()方法可以添加新单词,插入后的分词结果如下:

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

主要的变化是直接在整个模式和搜索引擎模式中添加了这个词,而精确的模式取代了新单词的子集词(更不用说这个名字了),这也符合上一部分的假设。

相关文章

python如何通过日志分析加入黑名单

python如何通过日志分析加入黑名单

2025-10-17
python抽象基类之_subclasshook_方法

python抽象基类之_subclasshook_方法

2025-10-17
Python3 面向对象

Python3 面向对象

2025-10-17
Python中可迭代对象、迭代器详解

Python中可迭代对象、迭代器详解

2025-10-17
Python3 XML解析

Python3 XML解析

2025-10-17
Python之类方法、__new__方法和__init__方法介绍

Python之类方法、__new__方法和__init__方法介绍

2025-10-17