jieba,为中文分词而生的Python库
最好的Python中文分词组件
“结巴”中文分词:做最好的Python中文分词组件
jieba的使用方法
Step1. 安装jieba
pip install jieba
Step2. 调用jieba进行分词
import jieba
test_content = '迅雷不及掩耳盗铃儿响叮当仁不让世界充满爱之势'
cut_res = jieba.cut(test_content, cut_all=True)
print(list(cut_res))
运行结果:
['迅雷', '迅雷不及', '迅雷不及掩耳', '不及', '掩耳', '掩耳盗铃',
'儿', '响叮当', '叮当', '当仁不让', '不让', '世界', '充满', '爱',
'之', '势']
jieba分词的四种模式
jieba分词支持四种分词模式:
1.精确模式
cut_res = jieba.cut(test_content, cut_all=False)
print('[精确模式]:', list(cut_res))
cut_res = jieba.cut(test_content, cut_all=False, HMM=False)
print('[精确模式]:', list(cut_res))
[精确模式]: ['迅雷不及', '掩耳盗铃', '儿响', '叮', '当仁不让',
'世界', '充满', '爱之势']
[精确模式]: ['迅雷不及', '掩耳盗铃', '儿', '响', '叮', '当仁不让',
'世界', '充满', '爱', '之', '势']
2.全模式
cut_res = jieba.cut(test_content, cut_all=True)
print('[全模式]:', list(cut_res))
[全模式]: ['迅雷', '迅雷不及', '迅雷不及掩耳', '不及', '掩耳', '掩耳盗铃',
'儿', '响叮当', '叮当', '当仁不让', '不让', '世界', '充满', '爱', '之', '势']
3.搜索引擎模式
cut_res = jieba.cut_for_search(test_content)
print('[搜索引擎模式]:', list(cut_res))
[搜索引擎模式]: ['迅雷', '不及', '迅雷不及', '掩耳', '掩耳盗铃', '儿响',
'叮', '不让', '当仁不让', '世界', '充满', '爱之势']
4.paddle模式
5.小结
自定义分词词典
1.添加自定义词语到词典中
jieba.add_word('铃儿响叮当')
jieba.add_word('让世界充满爱')
jieba.add_word('迅雷不及掩耳之势')
lcut_res = jieba.lcut(test_content, cut_all=True, HMM=False)
print('[添加自定义词语]:', lcut_res)
[添加自定义词语]: ['迅雷', '迅雷不及', '迅雷不及掩耳', '不及', '掩耳', '掩耳盗铃',
'铃儿响叮当', '响叮当', '叮当', '当仁不让', '不让', '让世界充满爱', '世界',
'充满', '爱', '之', '势']
2.添加指定的文件作为分词词典
迅雷不及掩耳之势 3 a
掩耳盗铃 3 a
铃儿响叮当 3 a
当仁不让 3 a
让世界充满爱 3 n
jieba.load_userdict('mydict.txt')
lcut_res = jieba.lcut(test_content, cut_all=True, HMM=False)
print('[使用自定义词典]:', lcut_res)
[使用自定义词典]: ['迅雷', '迅雷不及', '迅雷不及掩耳', '不及', '掩耳', '掩耳盗铃',
'铃儿响叮当', '响叮当', '叮当', '当仁不让', '不让', '让世界充满爱', '世界',
'充满', '爱', '之', '势']
3.从词典中删除词语
jieba.del_word('不及')
jieba.del_word('不让')
jieba.del_word('之')
lcut_res = jieba.lcut(test_content, cut_all=True, HMM=False)
print('[删除词语]:', lcut_res)
[删除词语]: ['迅雷', '迅雷不及', '迅雷不及掩耳', '掩耳', '掩耳盗铃', '儿',
'响叮当', '叮当', '当仁不让', '世界', '充满', '爱', '之', '势']
4.调整词语的词频
lcut_res = jieba.lcut(test_content, cut_all=False, HMM=False)
print('[设置前]:', lcut_res)
jieba.suggest_freq('让世界充满爱', True)
lcut_res = jieba.lcut(test_content, cut_all=False, HMM=False)
print('[设置后]:', lcut_res)
[设置前]: ['迅雷不及', '掩耳盗铃', '儿', '响', '叮', '当仁不让', '世界', '充满', '爱', '之', '势']
[设置后]: ['迅雷不及', '掩耳盗铃', '儿', '响叮当', '仁', '不', '让世界充满爱', '之', '势']
关键词提取
1.基于TF-IDF算法的关键词提取
from jieba import analyse
key_word = analyse.extract_tags(test_content, topK=3)
print('[key_word]:', list(key_word))
key_word = analyse.extract_tags(test_content, topK=3, withWeight=True)
print('[key_word]:', list(key_word))
[key_word]: ['迅雷不及', '儿响', '爱之势']
[key_word]: [('迅雷不及', 1.7078239289857142), ('儿响', 1.7078239289857142), ('爱之势', 1.7078239289857142)]
2.基于TextRank算法的关键词提取
key_word = analyse.textrank(test_content, topK=3)
print('[key_word]:', list(key_word))
allow = ['ns', 'n', 'vn', 'v', 'a', 'm', 'c']
key_word = analyse.textrank(test_content, topK=3, allowPOS=allow)
print('[key_word]:', list(key_word))
[key_word]: ['儿响', '世界']
Prefix dict has been built successfully.
[key_word]: ['充满', '儿响', '世界']
词性标注
from jieba import posseg
pos_word = posseg.lcut(test_content)
print(pos_word)
[pair('迅雷不及', 'i'), pair('掩耳盗铃', 'i'), pair('儿响', 'n'),
pair('叮', 'v'), pair('当仁不让', 'i'), pair('世界', 'n'),
pair('充满', 'a'), pair('爱', 'v'), pair('之', 'u'), pair('势', 'ng')]
标签 | 含义 | 标签 | 含义 | 标签 | 含义 | 标签 | 含义 |
---|---|---|---|---|---|---|---|
n | 普通名词 | f | 方位名词 | s | 处所名词 | t | 时间 |
nr | 人名 | ns | 地名 | nt | 机构名 | nw | 作品名 |
nz | 其他专名 | v | 普通动词 | vd | 动副词 | vn | 名动词 |
a | 形容词 | ad | 副形词 | an | 名形词 | d | 副词 |
m | 数量词 | q | 量词 | r | 代词 | p | 介词 |
c | 连词 | u | 助词 | xc | 其他虚词 | w | 标点符号 |
PER | 人名 | LOC | 地名 | ORG | 机构名 | TIME | 时间 |
返回词语在原文的起止位置
res = jieba.tokenize(test_content)
for r in res:
if len(r[0]) > 3:
print('word:{}\t start:{}\t end:{}'.format(*r))
elif len(r[0]) > 1:
print('word:{}\t\t start:{}\t end:{}'.format(*r))
else:
print('word:{}\t\t\t start:{}\t end:{}'.format(*r))
word:迅雷不及 start:0 end:4
word:掩耳盗铃 start:4 end:8
word:儿响 start:8 end:10
word:叮 start:10 end:11
word:当仁不让 start:11 end:15
word:世界 start:15 end:17
word:充满 start:17 end:19
word:爱之势 start:19 end:22
参考文档:https://github.com/fxsjy/jieba