python中jieba库的使用

函数 描述
jieba.cut(s) 精确模式,返回一个可迭代的数据类型
jieba.cut(s, cut_all = Ture) 全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s) 搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s) 精确模型,返回一个列表模型,建议使用
jieba.lcut(s, cut_all=Ture) 全模型,返回一个列表模型,建议使用
jieba.lcut_for_search(s) 搜索引擎模型,返回一个列表类型,建议使用
jieba.add_word(w) 向分词词典中添加新词w

分词返回值类型:

  • cut 和 cut_for_search 返回值类型都是一个迭代器(可迭代对象, 使用for可以依次遍历出来)
  • lcut 和 lcut_for_search 返回值类型都是一个列表

参数问题:

  • jieba.cut 和 jieba.lcut接受 3 个参数:

    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
    • cut_all 参数:是否使用全模式,默认值为 False
    • HMM 参数:用来控制是否使用 HMM 模型,默认值为 True
  • jieba.cut_for_search和jieba.lcut_for_search 接受 2 个参数:

    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
    • HMM 参数:用来控制是否使用 HMM 模型,默认值为 True

模式问题:

  • 全模式和精确模式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 全模式
    seg_list = jieba.cut("他来自河北地质大学", cut_all=True)
    print("【全模式】:" + "/ ".join(seg_list))

    # 【全模式】:他/ 来自/ 河北/ 北地/ 地质/ 大学


    # 精确模式
    seg_list = jieba.cut("他来自河北地质大学", cut_all=False)
    print("【精确模式】:" + "/ ".join(seg_list))

    #【精确模式】:他/ 来自/ 河北/ 地质/ 大学

    由上面可得:

    • 全模式是吧该文档中所有可能组成的词语划分出来
    • 精确模式就是单纯的对句子进行划分
  • 搜索引擎模式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 搜索引擎模式
    seg_list = jieba.cut_for_search("我朋友现就读于河北地质大学软件工程专业,现在正在自己搞机器学习,他说有点难")
    print("【搜索引擎模式】:" + "|".join(seg_list))

    #【搜索引擎模式】:我|朋友|就读|现就读|于|河北|地质|大学|软件|工程|软件工程|专业|,|现在|正在|自己|搞|机器|学习|,|他|说|有点|难

    # 搜索引擎模式
    seg_list = jieba.lcut_for_search("我朋友现就读于河北地质大学软件工程专业,现在正在自己搞机器学习,他说有点难")
    print(f"【搜索引擎模式】:{seg_list}")

    # 【搜索引擎模式】:['我', '朋友', '就读', '现就读', '于', '河北', '地质', '大学', '软件', '工程', '软件工程', '专业', ',', '现在', '正在', '自己', '搞', '机器', '学习', ',', '他', '说', '有点', '难']

    搜索引擎模式由上面可得,就是先把分词写在前面,然后把组合后的词语放在后面,

  • HMM 模式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 未启用 HMM
    seg_list = jieba.cut("这是奥运史上独特的一次奥运会", HMM=False) #默认精确模式和启用 HMM
    print("【未启用 HMM】:" + "/ ".join(seg_list))

    #【未启用 HMM】:这/ 是/ 奥运/ 史/ 上/ 独特/ 的/ 一次/ 奥运会


    # 启用 HMM
    seg_list = jieba.cut("这是奥运史上独特的一次奥运会") #默认精确模式和启用 HMM
    print("【启用 HMM】:" + "/ ".join(seg_list))

    #【启用 HMM】:这是/ 奥运/ 史上/ 独特/ 的/ 一次/ 奥运会

    HMM模式可以将一些有关联的词语分成一个

词性编码 词性名称 注 解
Ag 形语素 形容词性语素。形容词代码为 a,语素代码g前面置以A。
a 形容词 取英语形容词 adjective的第1个字母。
ad 副形词 直接作状语的形容词。形容词代码 a和副词代码d并在一起。
an 名形词 具有名词功能的形容词。形容词代码 a和名词代码n并在一起。
b 区别词 取汉字“别”的声母。
c 连词 取英语连词 conjunction的第1个字母。
dg 副语素 副词性语素。副词代码为 d,语素代码g前面置以D。
d 副词 取 adverb的第2个字母,因其第1个字母已用于形容词。
e 叹词 取英语叹词 exclamation的第1个字母。
f 方位词 取汉字“方”
g 语素 绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。
h 前接成分 取英语 head的第1个字母。
i 成语 取英语成语 idiom的第1个字母。
j 简称略语 取汉字“简”的声母。
k 后接成分
l 习用语 习用语尚未成为成语,有点“临时性”,取“临”的声母。
m 数词 取英语 numeral的第3个字母,n,u已有他用。
Ng 名语素 名词性语素。名词代码为 n,语素代码g前面置以N。
n 名词 取英语名词 noun的第1个字母。
nr 人名 名词代码 n和“人(ren)”的声母并在一起。
ns 地名 名词代码 n和处所词代码s并在一起
nt 机构团体 “团”的声母为 t,名词代码n和t并在一起。
nz 其他专名 “专”的声母的第 1个字母为z,名词代码n和z并在一起。
o 拟声词 取英语拟声词 onomatopoeia的第1个字母
p 介词 取英语介词 prepositional的第1个字母。
q 量词 取英语 quantity的第1个字母。
r 代词 取英语代词 pronoun的第2个字母,因p已用于介词。
s 处所词 取英语 space的第1个字母。
tg 时语素 时间词性语素。时间词代码为 t,在语素的代码g前面置以T。
t 时间词 取英语 time的第1个字母。
u 助词 取英语助词 auxiliary
vg 动语素 动词性语素。动词代码为 v。在语素的代码g前面置以V。
v 动词 取英语动词 verb的第一个字母。
vd 副动词 直接作状语的动词。动词和副词的代码并在一起。
vn 名动词 指具有名词功能的动词。动词和名词的代码并在一起。
w 标点符号
x 非语素字 非语素字只是一个符号,字母 x通常用于代表未知数、符号。
y 语气词 取汉字“语”的声母。
z 状态词 取汉字“状”的声母的前一个字母。
un 未知词 不可识别词及用户自定义词组。取英文Unkonwn首两个字母。(非北大标准,CSW分词中定义)