这篇博客写一些结巴分词的基础操作,参考网站http://github.com/fxsjy/jieba/blob/master/README.md
我们对“张三是云计算领域的专家”这句话进行分词,如何让分词达到理想化,就需要自定义词典的引用,并且定期维护词典。
#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: 张三/是/云计算/领域/的/专家
import jieba.analyse
jieba.analyse.extract_tags(sentence,topK = 20,withWeigth = False,allowPos = 0)
关键词提取用到jieba.analyse类,其中
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)
jieba.analyse.textrank(sentence,topK = 20,withWeigth = False,allowPOS = ('ns','n','vn','v'))
基本思想:
import jieba
import jieba.analyse
sent = "虽然绝大部分国家都有类似的纪念日,但是由于复杂的政治关系,部分国家的这一节日不能够称为国庆日,比如美国只有独立日,没有国庆日,但是两者意义相同。"
seg = jieba.analyse.textrank(sent,topK = 4,withWeight = False,allowPOS=('n')) #只抽取名词
for s in seg:
print(s)
output:
部分
意义
政治
国家
import jieba.posseg
sent = "我们中出了一个叛徒"
words = jieba.posseg.cut(sent)
for word,flag in words:
print(word," ",flag)
output:
我们 r
中 f
出 v
了 ul
一个 m
叛徒 n
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') #搜索模式