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库的常规使用
中文分词的模式
本文介绍常用的三种分词模式:
- 精确模式: 将句子最精确地打开,适合文本分析
- 全模式: 把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义
- 搜索模式: 在精确模式基础上,对长词再次切分,提高召回率,适合泳池搜索引擎分词
函数 | 描述 |
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)
输出:
方法对比
观察上图的输出内容,可以发现:
- 全模式和搜索引擎模式相较于精确模式,有较大的冗余
-
add_word()
函数有效地将“Python计算机编程语言”定义为一个“新词”
不同分词模式的效果各异,三者的选择需根据实际需求来进行抉择
单词词性划分
词性划分功能可以根据一段输入文本,先进行分词,再判断其词性
示例
代码:
import jieba.posseg as pseg
words = pseg.cut("我今天在福建福州的一家补习机构,跟着陈老师学习Python计算机编程。")
for word, flag in words:
print(f"{word}:{flag}")
输出结果:
词性代号
jieba分词词性对照表
paddle模式词性标注对应表如下:
paddle模式词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)。
本文代码编译环境及版本
- Pycharm Community Edition 2022.3
- Python 3.9.1
- jieba 0.42.1
更新日志