3.2.3 分词工具

  1. 概述

目前市面上可用于中文分词的工具种类繁多,按照实现方式大致可以分为如下两类:

  • 一类是基于词典或模型的传统方法,主要以“词”为单位进行切分;
  • 另一类是基于子词建模算法(如BPE)的方式,从数据中自动学习高频字组合,构建子词词表。

前者的代表工具包括 jieba、HanLP等,这些工具广泛应用于传统 NLP 任务中。 

后者的代表工具包括 Hugging Face Tokenizer、SentencePiece、tiktoken等,常用于大规模预训练语言模型中。

  1. jieba分词器概述

jieba 是中文分词领域中应用广泛的开源工具之一,具有接口简洁、模式灵活、词典可扩展等特点,在各类传统 NLP 任务中依然具备良好的实用价值。

  • 安装

pip install jieba

  • 分词模式

jieba分词器提供了多种分词模式,以适应不同的应用场景。

  • 精确模式(默认)

试图将句子最精确地切开,适合文本分析。分词效果如下:

小明毕业于北京大学计算机系

⬇️[小明|毕业|于|北京大学|计算机系]

精确模式分词可使用jieba.cut或者jieba.lcut方法,前者返回一个生成器对象,后者返回一个list。具体代码如下:

import jieba

text = "小明毕业于北京大学计算机系"

words_generator = jieba.cut(text)  # 返回一个生成器
for word in words_generator:
    print(word)

words_list = jieba.lcut(text)  # 返回一个列表
print(words_list)
  • 全模式

把句子中所有的可以成词的词语都扫描出来,分词效果如下:

小明毕业于北京大学计算机系

⬇️

[小|明|毕业|于|北京|北京大学|大学|计算|计算机|计算机系|算机|系]

全模式分词可使用jieba.cut或者jieba.lcut,并将cut_all参数设置为True,具体代码如下:

import jieba

text = "小明毕业于北京大学计算机系"

words_generator = jieba.cut(text, cut_all=True)  # 返回一个生成器
for word in words_generator:
    print(word)

words_list = jieba.lcut(text, cut_all=True)  # 返回一个列表
print(words_list)
  • 搜索引擎模式

在精确模式基础上,对长词进一步切分,适合用于搜索引擎分词,分词效果如下:

小明毕业于北京大学计算机系

⬇️

[小明|毕业|于|北京|大学|北京大学|计算|算机|计算机|计算机系]

可使用jieba.cut_for_search或者jieba.lcut_for_search,具体代码如下:

import jieba

text = "小明毕业于北京大学计算机系"

words_generator = jieba.cut_for_search(text)  # 返回一个生成器
for word in words_generator:
    print(word)

words_list = jieba.lcut_for_search(text)  # 返回一个列表
print(words_list)
  • 自定义词典

jieba支持用户自定义词典,以便包含 jieba 词库里没有的词,用于增强特定领域词汇的识别能力。

自定义词典的格式为:一个词占一行,每一行分三部分:词语、词频(可省略,词频决定某个词在分词时的优先级。词频越高被优先切分出来的概率越大)、词性标签(可省略,不影响分词结果),用空格隔开,顺序不可颠倒。例如

云计算

云原生 5

大模型 10 n

可使用jieba.load_userdict(file_name)加载词典文件,也可以使用jieba.add_word(word, freq=None, tag=None)与jieba.del_word(word)动态修改词典。

import jieba

jieba.load_userdict('dict.txt')
words_list = jieba.lcut("随着云计算技术的普及,越来越多企业开始采用云原生架构来部署服务,并借助大模型能力提升智能化水平,实现业务流程的自动化与智能决策。")
print(words_list)
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容