1. 结巴分词¶
NLP(自然语言)领域现在可谓是群雄纷争,各种开源组件层出不穷,其中一支不可忽视的力量便是jieba分词,号称要做最好的 Python 中文分词组件。
“最好的”这三个字可不是空穴来风,jieba在开源社区的受欢迎程度非常之高。
支持繁体分词
支持自定义词典
MIT 授权协议
jieba项目目前的github star数已经达到24k,其他热门分词组件像HanLP star数20k、ansj_seg star数5.6k、pkuseg-python star数5k。 可见jieba已经稳居中文分词领域c位。
jieba的主要功能是做中文分词,可以进行简单分词、并行分词、命令行分词,当然它的功能不限于此, 目前还支持关键词提取、词性标注、词位置查询等。
更让人愉悦的是jieba虽然立足于python,但同样支持其他语言和平台, 诸如:C++、Go、R、Rust、Node.js、PHP、 iOS、Android等。 所以jieba能满足各类开发者的需求。
1.1. 安装说明¶
代码对 Python 2/3 均兼容 。
全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba
半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install
手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录,通过
import jieba
来引用如果需要使用paddle模式下的分词和词性标注功能,请先安装 paddlepaddle-tiny ,
pip install paddlepaddle-tiny==1.6.1
。
安装:
pip3 install common dual tight data prox paddle
pip3 install jieba
以上为原资料。
2024年更新:
安装使用:
pip3 install paddlepaddle jieba
这个貌似是用百度算力, tiny 只是应用模式?
Debain / Ubuntu 中安装,注意无法使用 paddlepaddle
。
sudo apt install -y python3-jieba
1.2. 算法¶
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的
有向无环图 (DAG)
采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

图 1.3 有向无环图 (DAG)¶
有向无环图 (DAG)
1.3. 主要功能¶
分词
**添加自定义词典
开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。
用法: jieba.load_userdict(file_name)
其中 file_name
为文件类对象或自定义词典的路径。
词典格式和 dict.txt
一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
词频省略时使用自动计算的能保证分出该词的词频。
关键词提取
词性标注
jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。
标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
除了jieba默认分词模式,提供paddle模式下的词性标注功能。paddle模式采用延迟加载方式,通过enable_paddle()安装paddlepaddle-tiny,并且import相关代码;
并行分词
原理:将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,然后归并结果,从而获得分词速度的可观提升
基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows
用法:
jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
jieba.disable_parallel() # 关闭并行分词模式
Tokenize:返回词语在原文的起止位置
ChineseAnalyzer for Whoosh 搜索引擎
命令行分词