Python 模块 - jieba

时间:2024-07-07 18:06:56

安装 jieba

pip3 install jieba

jieba 支持三种分词模式:

精确模式:将句子最精确地切开,适合文本分析

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

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

jieba.cut 方法有三个参数,第一个参数为需要分词的字符串,第二个 cut_all 参数用来控制是否采用全模式,第三个 HMM 参数用来控制是否使用 HMM 模型

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import jieba word_list = jieba.cut("福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田")
print("Default Mode: " + "/ ".join(word_list))
# cut_all=False 为精简模式,是默认的选项 word_list_1 = jieba.cut("福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田", cut_all=True)
print("Full Mode: " + "/" .join(word_list_1))
# cut_all=True 为全模式

运行结果

Python 模块 - jieba

jieba.cut_for_search 方法有两个参数,第一个参数为需要分词的字符串,第二个 HMM 参数用来控制是否使用 HMM 模型

该方法适合用于搜索引擎构建倒排索引的分词

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import jieba word_list_2 = jieba.cut_for_search("福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田")
print("Search Mode: " + "/".join(word_list_2))

运行结果

Python 模块 - jieba

jieba.cut 和 jieba.cut_for_search 返回的类型都是一个可迭代的生成器

jieba.lcut 和 jieba.lcut_for_search 返回列表类型

关键字提取

基于 TF-IDF

jieba.analyse.extract_tags 方法有三个参数,第一个参数为字符串,第二个参数 topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20,第三个参数 withWeight 为是否一并返回关键词权重值,默认值为 False,第四个参数 allowPOS 仅包括指定词性的词,默认值为空,即不筛选

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import jieba.analyse string = "福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田" a = jieba.analyse.extract_tags(string, topK=20, withWeight=False, allowPOS=0) print(a)

运行结果

Python 模块 - jieba

基于 TextRank

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import jieba.analyse string = "福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田" a = jieba.analyse.textrank(string, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) print(a)

运行结果

Python 模块 - jieba

词性标注

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import jieba.posseg strings = jieba.posseg.cut("福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田") for word, flag in strings:
print("%s %s" %(word, flag))

运行结果

Python 模块 - jieba

词性列表

n     名词
nr 人名
nr1 汉语姓氏
nr2 汉语名字
nrj 日语人名
nrf 音译人名
ns 地名
nsf 音译地名
nt 机构团体名
nz 其它专名
nl 名词性惯用语
ng 名词性语素
t 时间词
tg 时间词性语素
s 处所词 (家中、门外、境内、西方……)
f 方位词
v 动词
vd 副动词
vn 名动词
vshi 动词“是”
vyou 动词“有”
vf 趋向动词
vx 形式动词
vi 不及物动词(内动词)
vl 动词性惯用语
vg 动词性语素
a 形容词
ad 副形词
an 名形词
ag 形容词性语素
al 形容词性惯用语
b 区别词 (主要、整个、所有……)
bl 区别词性惯用语
z 状态词
r 代词
rr 人称代词
rz 指示代词
rzt 时间指示代词
rzs 处所指示代词
rzv 谓词性指示代词
ry 疑问代词
ryt 时间疑问代词
rys 处所疑问代词
ryv 谓词性疑问代词
rg 代词性语素
m 数词
mq 数量词
q 量词
qv 动量词
qt 时量词
d 副词
p 介词
pba 介词“把”
pbei 介词“被”
c 连词
cc 并列连词
u 助词
uzhe 着
ule 了 喽
uguo 过
ude1 的 底
ude2 地
ude3 得
usuo 所
udeng 等 等等 云云
uyy 一样 一般 似的 般
udh 的话
uls 来讲 来说 而言 说来
uzhi 之
ulian 连 (“连小学生都会”)
e 叹词
y 语气词(delete yg)
o 拟声词
h 前缀
k 后缀
x 字符串
xx 非语素字
xu 网址URL
w 标点符号
wkz 左括号,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wyz 左引号,全角:“ ‘ 『
wyy 右引号,全角:” ’ 』
wj 句号,全角:。
ww 问号,全角:? 半角:?
wt 叹号,全角:! 半角:!
wd 逗号,全角:, 半角:,
wf 分号,全角:; 半角: ;
wn 顿号,全角:、
wm 冒号,全角:: 半角: :
ws 省略号,全角:…… …
wp 破折号,全角:—— -- ——- 半角:--- ----
wb 百分号千分号,全角:% ‰ 半角:%
wh 单位符号,全角:¥ $ £ ° ℃ 半角:$

载入词典

jieba.load_userdict(file_name), file_name 为文件类对象或自定义词典的路径

file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码

一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒

例子:

创新办 3 i
云计算 5
凱特琳 nz
台中