jieba分词基础

这篇博客写一些结巴分词的基础操作,参考网站http://github.com/fxsjy/jieba/blob/master/README.md


1.分词

我们对“张三是云计算领域的专家”这句话进行分词,如何让分词达到理想化,就需要自定义词典的引用,并且定期维护词典。

#jieba精确分词
import jieba

sent = "张三是云计算领域的专家"
seg = jieba.cut(sent,cut_all = False)
print("Default Mode:","/".join(seg))

#加载用户词典 userdict.txt{张三\n 是\n}
jieba.load_userdict("./userdict.txt")
seg = jieba.cut(sent,cut_all = False)
print("Userdict Mode:","/".join(seg))

#动态调整用户词典
jiaba.add_word("云计算")
seg = jieba.cut(sent,cut_all = False)
print("AddDict Mode:","/".join(seg))

output:
Default  Mode: 张三是//计算/领域//专家
Userdicr Mode: 张三///计算/领域//专家
AddDict  Mode: 张三//云计算/领域//专家

2.关键词提取

(1)基于TF-IDF的关键词抽取
import jieba.analyse
jieba.analyse.extract_tags(sentence,topK = 20,withWeigth = False,allowPos = 0)

关键词提取用到jieba.analyse类,其中

  • sentence 为待提取文本。
  • topK为返回几个TF-IDF权重最大的关键词,默认值为20.
  • withWeight为是否一并返回关键词权重值,默认为False
  • allowPOS仅包括制定词性的词,默认值为空,即不筛选。
import jieba
import jieba.analyse

sent = "虽然绝大部分国家都有类似的纪念日,但是由于复杂的政治关系,部分国家的这一节日不能够称为国庆日,比如美国只有独立日,没有国庆日,但是两者意义相同。"

seg = jieba.analyse.extract_tags(sent,4,withWeight = True)

for s in seg:
	print(s)

output:
('国庆日', 0.9093258546384615)
('纪念日', 0.37847056313192307)
('但是', 0.32104838408307695)
('国家', 0.30772656862769227)
(2)基于TextRank算法的关键词抽取
jieba.analyse.textrank(sentence,topK = 20,withWeigth = False,allowPOS = ('ns','n','vn','v'))

基本思想:

  • 将待抽取关键词的文本进行分词
  • 以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构件图
  • 计算图中节点的PageRank,注意是无向带权图
import jieba
import jieba.analyse

sent = "虽然绝大部分国家都有类似的纪念日,但是由于复杂的政治关系,部分国家的这一节日不能够称为国庆日,比如美国只有独立日,没有国庆日,但是两者意义相同。"

seg = jieba.analyse.textrank(sent,topK = 4,withWeight = False,allowPOS=('n')) #只抽取名词

for s in seg:
	print(s)

output:
部分
意义
政治
国家

3.词性标注
import jieba.posseg 

sent = "我们中出了一个叛徒"

words = jieba.posseg.cut(sent)

for word,flag in words:
	print(word," ",flag)

output:
我们   r
中   f
出   v
了   ul
一个   m
叛徒   n

4.Tokenize 返回词语原文的起始位置
import jieba

sent = "我们中出了一个叛徒"

result = jieba.tokenize(sent)

for tk in result:
	print("wrod %s \t\t start: %d \tt end:%d" %(tk[0],tk[1],tk[2]))

output:
wrod 我们 		 start: 0 	t end:2
wrod 中出 		 start: 2 	t end:4
wrod 了 		 start: 4 	t end:5
wrod 一个 		 start: 5 	t end:7
wrod 叛徒 		 start: 7 	t end:9

result = jieba.tokenize(sent,mode = 'search') #搜索模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值