1、基本使用
cut()
cut(self, sentence, cut_all=False, HMM=True, use_paddle=False)
-
sentence: 要切分的句子
-
cut_all:全模式 默认关闭。
-
HMM: 隐马尔可夫算法 默认开启。
import jieba text="宁教我负天下人,休教天下人负我" # 基本使用 seg_1=jieba.cut(text) # 全模式 切分出所有可以成词 seg_2=jieba.cut(text,cut_all=True) # 搜索模式 seg_3 = jieba.cut_for_search(text) print([s for s in seg_1]) print([s for s in seg_2]) print([s for s in seg_3])['宁教', '我', '负', '天下人', ',', '休教', '天下人', '负', '我'] ['宁', '教', '我', '负', '天下', '天下人', '下人', ',', '休', '教', '天下', '天下人', '下人', '负', '我'] ['宁教', '我', '负', '天下', '下人', '天下人', ',', '休教', '天下', '下人', '天下人', '负', '我']
2、词性
posseg.cut
import jieba
from jieba import posseg
text="宁教我负天下人,休教天下人负我"
# 输出词性
seg_4 = jieba.posseg.cut(text)
print([s for s in seg_4])
[pair('宁教', 'nz'), pair('我', 'r'), pair('负', 'v'), pair('天下人', 'n'), pair(',', 'x'), pair('休教', 'nz'), pair('天下人', 'n'), pair('负', 'v'), pair('我', 'r')]
3、关键词提取
textRank() extract_tags()
extract_tags(self, sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False) textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False)
- extract_tags() 是基于 IF-IDF的方式提取关键词的
- textRank()是和PageRank差不多的方式提取关键词的。
- 参数说明:
- sentence 句子或者文本
- topK 关键词的数量
- allowPOS() 检索的词性
- withWeight 权重
import jieba
from jieba import analyse
text="宁教我负天下人,休教天下人负我"
seg_5 = jieba.analyse.extract_tags(text,topK=10,withWeight=True)
seg_6 = jieba.analyse.textrank(text,topK=10,withWeight=True,allowPOS=("nz","n","v"))
print([s for s in seg_5])
print([s for s in seg_6])
[('天下人', 4.81200576648), ('宁教', 2.988691875725), ('休教', 2.988691875725)]
[('天下人', 1.0), ('休教', 0.4076150209527377), ('宁教', 0.23920635385680536)]
4、停用词 和 自定义词典
4.1 停用词 jieba.analyse.set_stop_words()
stop.txt
休教
import jieba
from jieba import analyse
text="宁教我负天下人,休教天下人负我"
seg_5 = jieba.analyse.extract_tags(text)
jieba.analyse.set_stop_words("stop.txt")
seg_6 = jieba.analyse.extract_tags(text)
print("之前:",[s for s in seg_5])
print("之后:",[s for s in seg_6])
之前: ['天下人', '宁教', '休教']
之后: ['天下人', '宁教']
4.2 自定义词典 jieba.load_userdict()
dict.txt
天下人负我 n
我负天下人 10 n
格式:词语 词频(可选)词性(可选)
import jieba
from jieba import analyse
text="宁教我负天下人,休教天下人负我"
seg_5 = jieba.analyse.extract_tags(text)
jieba.load_userdict("dict.txt")
seg_6 = jieba.analyse.extract_tags(text)
print("之前:",[s for s in seg_5])
print("之后:",[s for s in seg_6])
之前: ['天下人', '宁教', '休教']
之后: ['宁教', '我负天下人', '休教', '天下人负我'
5、词性
| 标记 | 含义 | 说明 |
|---|---|---|
| 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首两个字母。 |
本文详细介绍了jieba分词库的基本使用方法,包括不同模式下的分词操作、词性标注、关键词提取等功能,并展示了如何利用停用词和自定义词典优化分词效果。
335

被折叠的 条评论
为什么被折叠?



