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首两个字母。 |