Python学习笔记(十四)——中文分词jieba库的使用

2022年6月19日 313点热度 0人点赞 0条评论
  过火
TRAVEL
图片
点“云龙派”



关注我们

图片
内容

摘要:jieba是Python中一个重要的第三方中文分词函数库。

注:本文主要内容整理自北京理工大学嵩天老师的《Python语言程序设计基础》。

图片

1. jieba库的概率

对于一段英文文本,例如“Who we were does not dictate who we will be.”,中文意思是过去都已过去,未来由我们自己决定。如果希望提取其中的单词,只需要使用字符串处理函数split()方法即可,例如:
>>> "Who we were does not dictate who we will be.".split()['Who', 'we', 'were', 'does', 'not', 'dictate', 'who', 'we', 'will', 'be.']>>>
然而,对于一段中文文本,例如,“中国是一个伟大的国家”,获取其中的单词(不是字符)十分困难,因为英文文本可以通过空格或者标点分隔,而中文单词之间缺少分隔符,这是中文及类似语言独有的“分词”的问题。上面的例子中,分词能够将“中国是一个伟大的国家”分为“中国”、“是”、“一个”、“伟大”、“的”、“国家”等一系列词语。
jieba(“结巴”)是Python中一个重要的第三方中文分词函数库,例如:
>>> import jieba>>> jieba.lcut("中国是一个伟大的国家")['中国', '是', '一个', '伟大', '的', '国家']>>>
jieba是第三方库,不是Python安装包自带的,因此,需要通过pip指令安装,首先打开电脑的window键+r,进入以下界面

图片

输入cmd,进入终端命令窗口

图片

图片

输入以下命令进行安装

pip install jieba
jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行对比,通过图结构和动态规划方法找到最大概率的词组。除了分词,jieba还提供增加自定义中文单词的功能,可以自行向词库中增加特定的词组。
jieba库支持3种分词模式:
(1)精确模式,将句子最精确地切开,适合文本分析;
(2)全模式,把句子所有可以成词的词语都扫描出来,速度非常快,但是不能消除歧义;
(3)搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
图片

2. jieba库解析

jieba库主要是提供分词功能,可以辅助自定义分词词典。jieba库中包含的主要函数如表所示。

jieba库常用的分词函数(共7个)

函数 描述
jieba.cut(s) 精确模式,返回一个可迭代的数据类型
jieba.cut(s,cut_all=True) 全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s) 搜索引擎模式,适合搜索建立索引的分词结果
jieba.lcut(s) 精确模式,返回一个列表类型,建议使用
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型,建议使用
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型,建议使用
jieba.add_word(w) 向分词词典中增加新词w

针对上述分词函数,举例如下:

>>> import jieba>>> jieba.lcut("中华人民共和国是一个伟大的国家")['中华人民共和国', '是', '一个', '伟大', '的', '国家']>>> jieba.lcut("中华人民共和国是一个伟大的国家",cut_all=True)['中华', '中华人民', '中华人民共和国', '华人', '人民', '人民共和国', '共和', '共和国', '国是', '一个', '伟大', '的', '国家']>>> jieba.lcut_for_search("中华人民共和国是一个伟大的国家")['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '一个', '伟大', '的', '国家']
  1. jieba.lcut()函数返回精确模式,输出的分词能够完整且不多余地组成原始文本;

  2. jieba.lcut(,True)函数返回全模式,输出原始文本中可能产生的所有问题,冗余性最大;

  3. jieba.lcut_for_search()函数返回搜索引擎模式,该模式首先执行精确模式,然后再对其中的长词进一步切分获得结果。

    由于列表类型的通用且灵活,一般是使用返回带有列表类型的分词函数。

对于无法识别的分词,可以通过jieba.add_word()函数向分词词库添加,例如:
>>> import jieba>>> jieba.lcut("湘潭大学信息工程学院2016级自动化四班")['湘潭', '大学', '信息', '工程学院', '2016', '级', '自动化', '四班']>>> jieba.add_word("湘潭大学")>>> jieba.add_word("信息工程学院")>>> jieba.lcut("湘潭大学信息工程学院2016级自动化四班")['湘潭大学', '信息工程学院', '2016', '级', '自动化', '四班']>>> jieba.lcut("湘潭大学琴湖9栋407成员:王建徽、刘先镨、谭湘勇、郭志龙")['湘潭大学', '琴湖', '9', '栋', '407', '成员', ':', '王建徽', '、', '刘先', '镨', '、', '谭湘勇', '、', '郭志龙']>>> jieba.add_word("刘先镨")>>> jieba.add_word("琴湖9栋")>>> jieba.lcut("湘潭大学琴湖9栋407成员:王建徽、刘先镨、谭湘勇、郭志龙")['湘潭大学', '琴湖9栋', '407', '成员', ':', '王建徽', '、', '刘先镨', '、', '谭湘勇', '、', '郭志龙']>>>
jieba库还有更丰富的分词功能,这些会涉及到自然语言的领域,需要用的时候可以进一步深入学习。
图片

Python学习笔记往期回顾

Python学习笔记(一)入门基础知识

Python 学习笔记(二) 异常处理集合

Python学习笔记(三)——解析温度转化实例

视频讲解Python学习笔记(三)——解析温度转化实例

Python学习笔记(四)——turtle库绘制蟒蛇

视频讲解Python学习笔记(四)——turtle库绘制蟒蛇

Python学习笔记(五)——基本数字类型和math库

视频讲解Python学习笔记(五)基本数字类型和math库

Python学习笔记(六)——字符串类型及格式化输出

视频讲解Python学习笔记(六)字符串类型及格式化输出

视频讲解Python学习笔记(七)制作文本进度条

Python学习笔记(八) 程序的分支结构(条件语句)

视频讲解Python学习笔记(八) 程序的条件语句

Python学习笔记(九) 程序的循环结构

视频讲解Python学习笔记(九) 程序的循环结构

Python学习笔记(十)蒙特卡罗法计算圆周率

视频讲解Python学习笔记(十)蒙特卡罗法计算圆周率

Python学习笔记(十一) 函数的基本使用和参数传递

视频讲解Python函数的基本使用和参数传递

Python学习笔记(十二)——组合数据类型序列和集合

视频讲解Python的组合数据类型序列和集合

Python学习笔记(十三)——字典类型和操作

视频讲解Python的字典类型和操作

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

图片
打赏,分享,点赞,在看,
谢谢你的支持与关注!
图片
图片
与门派共成长!
书山有路勤为径
学海无涯苦作舟

71950Python学习笔记(十四)——中文分词jieba库的使用

这个人很懒,什么都没留下

文章评论