Jieba 分词简介
Jieba 是一个用于中文分词的开源库,特别适合处理中文文本。它的名字“结巴”来源于中文“结巴”(stutter),是因为该库能够将中文文本“结巴地”分割成一个个词语。Jieba 提供了多种分词模式,支持自定义词典,并且能够很好地处理中文中的歧义问题。
安装 Jieba
你可以通过 pip 安装 Jieba:
pip install jieba
Jieba 的分词模式
Jieba 提供了三种分词模式:
-
精确模式 (default mode):
- 尽可能精确地切分词语,适合文本分析使用。
- 示例:
"我来到北京清华大学"->["我", "来到", "北京", "清华大学"]
-
全模式:
- 把句子中所有可能的词语都扫描出来,但不能解决歧义问题,适合用于需要尽可能多地提取词语的场景。
- 示例:
"我来到北京清华大学"->["我", "来到", "北京", "清华", "华大", "大学", "清华大学"]
-
搜索引擎模式:
- 在精确模式的基础上,对长词再次进行切分,适合用于搜索引擎构建索引时的切分。
- 示例:
"我来到北京清华大学"->["我", "来到", "北京", "清华", "华大", "大学", "清华大学"]
基本使用
精确模式
import jieba
text = "我来到北京清华大学"
seg_list = jieba.cut(text, cut_all=False) # 默认使用精确模式
print("精确模式: " + "/ ".join(seg_list))
输出:
精确模式: 我/ 来到/ 北京/ 清华大学
全模式
seg_list = jieba.cut(text, cut_all=True)
print("全模式: " + "/ ".join(seg_list))
输出:
全模式: 我/ 来到/ 北京/ 清华/ 华大/ 大学/ 清华大学
搜索引擎模式
seg_list = jieba.cut_for_search(text)
print("搜索引擎模式: " + "/ ".join(seg_list))
输出:
搜索引擎模式: 我/ 来到/ 北京/ 清华/ 华大/ 大学/ 清华大学
自定义词典
Jieba 允许用户添加自己的自定义词典,适应特定领域的分词需求。
添加自定义词典
你可以创建一个文本文件(如user_dict.txt),内容格式为:
清华大学 3 nr
北京大学 3 nr
清华大学和北京大学是词语3是词频(可选)nr是词性标签(可选)
然后在代码中加载这个词典:
jieba.load_userdict('user_dict.txt')
text = "我来到北京清华大学"
seg_list = jieba.cut(text)
print("/ ".join(seg_list))
如果没有词频和词性,Jieba 会自动计算并处理。
动态添加词语
你可以在运行时动态添加新词:
jieba.add_word('新词语')
seg_list = jieba.cut("这是一个新词语")
print("/ ".join(seg_list))
删除词语
你也可以在运行时删除词语:
jieba.del_word('词语')
关键词提取
Jieba 还提供了基于 TF-IDF 和 TextRank 算法的关键词提取功能。
使用 TF-IDF 提取关键词
import jieba.analyse
text = "我来到北京清华大学,清华大学的校园非常美丽。"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
for word, weight in keywords:
print(f"{word}: {weight}")
使用 TextRank 提取关键词
keywords = jieba.analyse.textrank(text, topK=5, withWeight=True)
for word, weight in keywords:
print(f"{word}: {weight}")
词性标注
Jieba 支持对分词结果进行词性标注:
import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for word, flag in words:
print(f"{word}: {flag}")
输出:
我: r
爱: v
北京: ns
天安门: ns
并行分词
Jieba 还支持并行分词,加快大文本的处理速度:
seg_list = jieba.cut(text, cut_all=False, HMM=True)
print(" ".join(seg_list))
并行分词的性能取决于文本长度和CPU核心数量。通常,对于短文本,并行分词可能不如单线程模式。
总结
Jieba 是一个功能强大的中文分词库,支持多种分词模式、关键词提取、词性标注以及自定义词典。它能够处理各种中文分词需求,尤其适合自然语言处理任务中的文本预处理阶段。通过Jieba,你可以灵活地处理中文文本,实现高效、准确的分词。
1万+

被折叠的 条评论
为什么被折叠?



