天天看点

python jieba 中文分词工具包

文章目录

    • 1.前言
    • 2.简单上手
      • 1)安装jieba
      • 2)jieba的常用函数
        • 示例
      • 3)解决paddlepaddle-tiny==1.6.1的安装
        • 示例继续
    • 3.jieba背后的“黑科技”算法原理

1.前言

项目Github的地址:

https://github.com/fxsjy/jieba
           

jieba是一个开源的中文分词库。

广泛用于文本分析、词云绘制、关键词提取、自然语言处理等领域。

并且容易上手,还支持繁体中文分词,支持用户自定义词。

如果你只想解决paddlepaddle-tiny==1.6.1的安装和使用问题,直接点击目录跳转。但是如果你是python3.7以上的版本,就不要尝试了,不支持超过python3.7的版本。

2.简单上手

1)安装jieba

pip install jieba
           

2)jieba的常用函数

精确模式:把最有可能组成词语的词切开,没有冗余单词。试图将句子最精确地切开,适合文本分析。

全模式:把所有可能组成词语的词切开,有冗余单词。把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义。

搜索引擎模式:在精确模式的基础上,对分词再次切分,提高召回率,适合用于搜索引擎分词。

paddle模式,利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。

https://www.paddlepaddle.org.cn/#PaddlePaddle官网 
           

示例

import jieba

jieba.lcut('安徽理工大学的大学生')
#精确模式: ['安徽', '理工大学', '的', '大学生']

jieba.lcut('安徽理工大学的大学生',cut_all=True)
#全模式: ['安徽', '安徽理工', '理工', '理工大', '理工大学', '工大', '大学', '的', '大学', '大学生', '学生']

jieba.lcut_for_search('安徽理工大学的大学生')
#搜索引擎模式: ['安徽', '理工', '工大', '大学', '理工大', '理工大学', '的', '大学', '学生', '大学生']

# 启动paddle模式,如果没有安装paddle会自动开始安装。注意!!!你可能无法安装,解决方法在下面。
#必须是python3.7版本
jieba.enable_paddle()
           

3)解决paddlepaddle-tiny==1.6.1的安装

蓝奏云:https://wws.lanzous.com/iGtqpn6ebrg
 密码:9ji7
           

可能不能自动安装,甚至不可以在pip下载,可以选择半自动安装。

python jieba 中文分词工具包

把上面的文件拖到(python安装目录/Lib/site-packages)下

python jieba 中文分词工具包

然后

pip install paddle#这个是可以正常下载的
pip install paddlepaddle-tiny==1.6.1
           
python jieba 中文分词工具包

这个时候就安装成功了,但是还是不能用下面方法来直接打开paddle模式

jieba.enable_paddle() #现在不可以正常启动paddle模式
           

原因如下

python jieba 中文分词工具包

所以我们需要这样,就可以启用

paddle.enable_static()
#In PaddlePaddle 2.x, we turn on dynamic graph mode by default, and 'data()' is only supported in static graph mode. So if you want to use this api, please call 'paddle.enable_static()' before this api to enter static graph mode.
jieba.enable_paddle()
           
python jieba 中文分词工具包

示例继续

import jieba
import paddle

paddle.enable_static()
jieba.enable_paddle()# 启动paddle模式

jieba.lcut('安徽理工大学的大学生',use_paddle=True)
           

但是到这里我还是没办法继续执行下去

我查询了资料发现,paddle这个模式必须要在python3.7的环境下执行

对于我们普通用户,使用精确模式即可。

3.jieba背后的“黑科技”算法原理

基于前缀词典实现高效的词图扫描,生成句子中所有可能成词情况所构成的有向无环图(DAG)。

采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。

对于未登陆词,采用了基于汉字成词能力的HMM模型,使用Viterbi算法。

使用隐马尔可夫、动态规划等概率模型,计算字符之间的关联概率,字符间概论大就认为是一个词。

可能成词情况所构成的有向无环图(DAG)。

采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。

对于未登陆词,采用了基于汉字成词能力的HMM模型,使用Viterbi算法。

使用隐马尔可夫、动态规划等概率模型,计算字符之间的关联概率,字符间概论大就认为是一个词。

使用者不需要知道背后的算法原理,只需要会调用接口就可以了。

未完续待…