python使用jieba库进行中文分词,我们可以吧一篇中文文章里面的词语提取出来进行分析,这时候我们可以采用jieba库,python2和python3都支持,目前jieba库支持3种分词模式:精确模式、全模式、搜索引擎模式,并且支持繁体分词,还支持自定义词典。

使用之前我们要先安装jieba库

pip install jieba

然后导入jieba库

import jieba
import jieba.posseg as pseg #词性标注
import jieba.analyse as anls #关键词提取

分词

我们首先看下精确模式、全模式、搜索引擎模式的输出情况,默认是精确模式。

  • jieba.cut 方法接受两个输入参数: 第一个参数为需要分词的字符串,cut_all参数用来控制是否采用全模式,默认是精确模式。
  • jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。

jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list

# 全模式
seg_list = jieba.cut("我要进行关键词提取", cut_all=True)
print("【全模式】:" + "/ ".join(seg_list)) 

# 精确模式
seg_list = jieba.cut("我要进行关键词提取", cut_all=False)
print("【精确模式】:" + "/ ".join(seg_list)) 


#【全模式】:我/ 要/ 进行/ 关键/ 关键词/ 提取
#【精确模式】:我要/ 进行/ 关键词/ 提取
#【搜索引擎模式】:我要/ 进行/ 关键/ 关键词/ 提取

精确模式,返回的是一个生成器,这对大数据量数据的分词十分重要。
全模式,可见全模式就是把文本分成尽可能多的词。

获取词性

我们还可以通过jiaba这个库把词性进行区分,比如动词,名词等

import jieba.posseg as psg

seg_list = psg.cut("我要进行关键词提取")
print([(s.word, s.flag) for s in seg_list])
# [('我', 'r'), ('要', 'v'), ('进行', 'v'), ('关键词', 'n'), ('提取', 'v')]

我们还可以提取动词或者名词,我们来提取下里面的动词

import jieba.posseg as psg

seg_list = psg.cut("我要进行关键词提取")
print([(s.word, s.flag) for s in seg_list if s.flag.startswith('v')])

获取出现次数最多的词语

from collections import Counter
c = Counter("我要进行关键词提取,我要进行学习,好好学习,天天向上。").most_common(3)
print(c)

添加字典增加准确性

我们可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率。
用法: jieba.load_userdict(file_name) # file_name为自定义词典的路径

并行分词

在文本数据量非常大的时候,为了提高分词效率,开启并行分词就很有必要了。jieba支持并行分词,基于python自带的multiprocessing模块,但要注意的是在Windows环境貌似不支持。
用法:
开启并行分词模式,参数为并发执行的进程数 jieba.enable_parallel(5)
关闭并行分词模式 jieba.disable_parallel()

Last modification:October 17, 2020
If you think my article is useful to you, please feel free to appreciate