Python 模块 - jieba

Posted Sch01aR#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 模块 - jieba相关的知识,希望对你有一定的参考价值。

安装 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 为全模式

运行结果

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))

运行结果

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)

运行结果

基于 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)

运行结果

词性标注

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

import jieba.posseg

strings = jieba.posseg.cut("福建的地理特点是依山傍海,九成陆地面积为山地丘陵地带,被称为八山一水一分田")

for word, flag in strings:
    print("%s %s" %(word, flag))

运行结果

词性列表

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
台中

 

以上是关于Python 模块 - jieba的主要内容,如果未能解决你的问题,请参考以下文章

Python 模块 - jieba

中文自然语言处理(NLP)python jieba模块

Python jieba 𴱟

python有一个中文分词工具叫Jieba

Python jieba -- 2019-08-11 18:43:19

#19 re&jieba模块