一、jieba 库简介
jieba库是由中国开发者 fxsjy 开发的一款优秀的中文分词工具,它基于 Python 语言实现,具有以下特点:
高效快速:采用基于前缀词典的分词方法,结合动态规划查找最大概率路径,分词速度快,能满足大规模文本处理需求。
准确率高:支持多种分词模式,在不同场景下都能保持较高的分词准确率。
易用性强:API 设计简洁直观,上手难度低,即使是 NLP 新手也能快速掌握。
扩展性好:支持用户自定义词典,方便处理专业领域词汇;还支持繁体分词、词性标注等功能。
正是这些优点,让 jieba 库成为了中文 NLP 领域的 “瑞士军刀”,被广泛应用于文本挖掘、情感分析、信息检索等诸多场景。
二、jieba 库的安装与基本使用
1.安装
安装 jieba 库非常简单,使用 pip 命令即可:
pip install jieba
如果需要安装指定版本,可以加上版本号:
pip install jieba==0.42.1
2. 基本分词功能
jieba 库提供了三种基本的分词模式,满足不同的需求:
精确模式:试图将句子最精确地切开,适合文本分析。
全模式:把句子中所有可以成词的词语都扫描出来,速度快,但不能解决歧义。
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
示例:
import jieba
text = "我来到北京清华大学"
# 精确模式
cut_result = jieba.cut(text, cut_all=False)
print("精确模式:", "/ ".join(cut_result)) # 输出:我/ 来到/ 北京/ 清华大学
# 全模式
cut_result = jieba.cut(text, cut_all=True)
print("全模式:", "/ ".join(cut_result)) # 输出:我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
# 搜索引擎模式
cut_result = jieba.cut_for_search(text)
print("搜索引擎模式:", "/ ".join(cut_result)) # 输出:我/ 来到/ 北京/ 清华/ 华大/ 大学/ 清华大学
jieba.cut()
方法返回的是一个可迭代的生成器,通过 join()
方法可以将其转换为字符串。如果需要直接得到列表,可以使用 jieba.lcut()
系列方法,它们返回的是列表类型:
result = jieba.lcut(text, cut_all=False)
print(result) # 输出:['我', '来到', '北京', '清华大学']
三、自定义词典
1.jieba中的字典
jieba 库内置了一个很大的词典,但在处理特定领域的文本时,可能会遇到一些专业术语或新词无法正确分词的情况。这时,我们可以通过自定义词典来提高分词的准确性。
自定义词典的格式为:每个词占一行,每行分三部分,分别为词语、词频(可省略)、词性(可省略),用空格隔开。例如:
云计算 5 n
李小福 2 nr
创新办 3 i
然后使用 jieba.load_userdict()
方法加载自定义词典:
jieba.load_userdict("user_dict.txt") # 加载自定义词典
text = "李小福在创新办负责云计算相关工作"
cut_result = jieba.cut(text)
print("/ ".join(cut_result)) # 输出:李小福/ 在/ 创新办/ 负责/ 云计算/ 相关/ 工作
2. 动态调整词典
除了加载自定义词典,jieba 还提供了动态添加或删除词语的方法:
jieba.add_word(word, freq=None, tag=None)
:向词典中添加词语。
jieba.del_word(word)
:从词典中删除词语。
jieba.suggest_freq(segment, tune=True)
:调整词语的词频,使其能(或不能)被分出来。
示例:
text = "台中"
print("默认分词:", "/ ".join(jieba.cut(text))) # 输出:台/ 中
# 调整词频,使"台中"作为一个词
jieba.suggest_freq(("台", "中"), tune=False)
print("调整后分词:", "/ ".join(jieba.cut(text))) # 输出:台中