Python——jieba库的使用

  • jieba库概述
  • 中文的“窘境”
  • jieba——中文分词函数库
  • 下载jieba库
  • jieba库的常规使用
  • 中文分词的模式
  • 示例
  • 方法对比
  • 单词词性划分
  • 示例
  • 词性代号
  • 本文代码编译环境及版本
  • 更新日志


jieba库概述

中文的“窘境”

请对比以下两句话:

英文:I am a college student. I love programming, sports and reading books.
中文:我是一名大学生,热爱编程,运动和看书。

这两句话表达的意思是完全相同的,但使用的语言不同,一个是英语,一个是中文。

仔细观察可以发现,中文不同于英文,词是由一个一个汉字间组合而成的,而英文的词与词之间本身就有空格,由于中文文本中的单词不是通过空格标点符号分割,中文及类似语言存在一个重要的“分词”问题,常用的分词库是jieba。

jieba——中文分词函数库

正由于中文分词面临着一系列挑战,jieba(“结巴”) 库的诞生很好地解决了该问题。它可以帮助我们有效地将一段中文文本分割成中文词语的序列。

关于jieba库的详细介绍请访问:https://github.com/fxsjy/jieba

原理: 利用一个中文词库,将待分词的内容与分词词库进行比对,通过结构和动态规划方法找到最大概率的词组。

下载jieba库

pip install jieba

jieba库的常规使用

中文分词的模式

本文介绍常用的三种分词模式:

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

函数

描述

jieba.lcut(txt)

精确模式,返回一个列表类型

jieba.lcut(txt, cut_all=True)

全模式,返回一个列表类型

jieba.lcut_for_search(txt)

搜索引擎模式,返回一个列表类型

jieba.lcut_for_search(w)

向分词词典中增加新词w

示例

代码:

import jieba

txt = '每一位同学都应该好好学习Python计算机编程语言'

# 精确模式:不产生冗余
ls = jieba.lcut(txt)
print('精确模式:', ls)

# 全模式
ls1 = jieba.lcut(txt, cut_all = True)
print('全模式:', ls1)

# 搜索引擎模式
ls2 = jieba.lcut_for_search(txt)
print('搜索引擎模式:', ls2)

# 词库添新词
jieba.add_word('Python计算机编程语言')
ls3 = jieba.lcut(txt)
print('精确模式(自定义新词库):', ls3)

输出:

python词性分析里eng代表意思 python中文词性分类_jieba

方法对比

观察上图的输出内容,可以发现:

  1. 全模式和搜索引擎模式相较于精确模式,有较大的冗余
  2. add_word() 函数有效地将“Python计算机编程语言”定义为一个“新词”

不同分词模式的效果各异,三者的选择需根据实际需求来进行抉择

单词词性划分

词性划分功能可以根据一段输入文本,先进行分词,再判断其词性

示例

代码:

import jieba.posseg as pseg

words = pseg.cut("我今天在福建福州的一家补习机构,跟着陈老师学习Python计算机编程。")
for word, flag in words:
    print(f"{word}:{flag}")

输出结果:

python词性分析里eng代表意思 python中文词性分类_python词性分析里eng代表意思_02

词性代号

jieba分词词性对照表

paddle模式词性标注对应表如下:

paddle模式词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)。

python词性分析里eng代表意思 python中文词性分类_自然语言处理_03

本文代码编译环境及版本

  1. Pycharm Community Edition 2022.3
  2. Python 3.9.1
  3. jieba 0.42.1

更新日志