首页Python【Python计算生态】j...

【Python计算生态】jieba3——中文分词库jieba的重构版

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

jieba3jieba分词模块的Modern Python 3重构版本,它删除了Python 2兼容代码,支持type hintsModern Python 3特性。在纯Python实现的前提下,提高了约20%性能,并且与jieba分词结果对齐。
但是需要注意的是,目前jieba3暂不支持除分词外的其他jieba功能,如关键词提取、词性标注等。
关于jieba库的相关内容可以参考前述文章:
【Python计算生态】jieba——中文分词库
jieba3仅支持Python 3.10+版本,可以通过pip命令安装:
pip install jieba3

02
使用

  • 构建分词器实例:

通过 jieba3.jieba3() 创建分词器实例,并可以根据需要指定模型和HMM选项,支持以下参数:

  • model: 分词模型选项,分别对应不同大小和功能的模型,可选值为 small(占用内存较小的模型)base(默认模型)large(支持繁体分词更好的模型);
  • use_hmm: 设置是否开启 HMM 新词发现,可选值为 True(默认)False。

HMM新词发现是指在中文分词过程中,对于未登录词(即那些在词典中不存在的新词)的识别和处理。通过分析上下文关系,HMM能够预测未知词汇的可能性分布,从而帮助系统更好地理解和处理新兴网络语言或专业术语。

import jieba3
tokenizer = jieba3.jieba3()  # 默认为 base 模型,开启 HMM 新词发现tokenizer = jieba3.jieba3(model="small")  # 使用 small 模型tokenizer = jieba3.jieba3(model="base")  # 使用 base 模型tokenizer = jieba3.jieba3(model="large")  # 使用 large 模型tokenizer = jieba3.jieba3(use_hmm=False)  # 关闭 HMM 新词发现tokenizer = jieba3.jieba3(use_hmm=True)  # 开启 HMM 新词发现


  • 分词模式:

jieba3支持文档模式和查询模式,分别对应于jieba的精确模式和搜索引擎模式,适合不同的应用场景。

  • 文档模式:
试图将句子最精确地切开,适合文档分析。当使用默认的 base 模型时,jieba3 文档模式与 jieba 精确模式的分词结果完全一致。
# 开启HMM新词发现

tokenizer = jieba3.jieba3()
tokenizer.cut_text(txt)
# ['小明', '畢業', '於', '中國', '科學院', '大學']

jieba.lcut(txt)
# ['小明', '畢業', '於', '中國', '科學院', '大學']

tokenizer = jieba3.jieba3(model='large')
tokenizer.cut_text(txt)
# ['小明', '畢業', '於', '中國科學院', '大學']

# --------------------- #
# --------------------- #

# 关闭HMM新词发现

tokenizer = jieba3.jieba3(model='base' , use_hmm=False)
tokenizer.cut_text(txt)
# ['小', '明', '畢', '業', '於', '中', '國', '科', '學', '院', '大', '學']

jieba.lcut(txt , HMM=False)
# ['小', '明', '畢', '業', '於', '中', '國', '科', '學', '院', '大', '學']

tokenizer = jieba3.jieba3(model='large' , use_hmm=False)
tokenizer.cut_text(txt)
# ['小', '明', '畢業', '於', '中國科學院', '大學']

  • 查询模式:

在文档模式的基础上,对长词再次切分,提高召回率,适合查询分析。当使用默认的 base 模型时,jieba3 查询模式与 jieba 搜索引擎模式的分词结果完全一致。
# 开启HMM新词发现

tokenizer = jieba3.jieba3()
tokenizer.cut_query(txt)
# ['小明', '畢業', '於', '中國', '科學院', '大學']

jieba.lcut_for_search(txt)
['小明''畢業''於''中國''科學院''大學']

tokenizer = jieba3.jieba3(model='large')
tokenizer.cut_query(txt)
['小明''畢業''於''中國''科學''學院''科學院''中國科學院''大學']

# --------------------- #
# --------------------- #

# 关闭HMM新词发现

tokenizer = jieba3.jieba3(model='base' , use_hmm=False)
tokenizer.cut_query(txt)
# ['小', '明', '畢', '業', '於', '中', '國', '科', '學', '院', '大', '學']

jieba.lcut_for_search(txt, HMM=False)
# ['小', '明', '畢', '業', '於', '中', '國', '科', '學', '院', '大', '學']

tokenizer = jieba3.jieba3(model='large' , use_hmm=False)
tokenizer.cut_query(txt)
# ['小', '明', '畢業', '於', '中國', '科學', '學院', '科學院', '中國科學院', '大學']

更多内容,可以前往官方GitHub页面查看:

https://github.com/yansh97/jieba3


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments