python jieba 分词

1.分词

import jieba
#全模式 , HMM 代表新词发现模式,一般关闭
seg_list = jieba.cut("我来到北京清华大学",cut_all = True, HMM = False)
我 来到 北京 清华 清华大学 华大 大学

#精确模式
seg_list = jieba.cut("我来到北京清华大学",cut_all = False) #默认是 False
我 来到 北京 清华大学

2.添加自定义词典

载入词典,开发者可以使用自己定义的词典,以便包含 jieba 词库中没有的词。

import jieba
jieba.load_userdict(file_name)
'''file_name 若为文件路径或者二进制方式打开的文件,则文件必须为 UTF-8 编码'''

# 词典格式,一词占一行,每一行分三部分 :  词语 词频(可省略) 词性(可省略)
云计算 5
阿狸 nz
妖姬 3 nz
台钟

调整词典

# 使用 add_word(word,freq = None,tag = None) 和 del_word(word)
# 可以在程序中动态增加、删除词典
jieba.add_word("程序")
jiabe.del_word("发行")

# 使用 suggest_freq(segment,tune = True)
# 可以调节单个词语,使其能/不能 被分出来
jieba.cut("我将带你飞")
我 将 带 你 飞

# 合
jieba.suggest_freq("带你飞",tune = True)
jieba.cut("我将带你飞")
我 将 带你飞

# 分
jieba.cut("我吃饭")
我 吃饭
jieba.suggest_freq(("吃","饭"), tune = True)
jieba.cut("我吃饭")
我 吃 饭

3.关键词提取

3.1 基于 TF-IDF 算法

#import jieba.analyse
jieba.analyse.extract_tags(sentence,topK = 20,withWeight = False,allowPOS = ())
'''
sentence 为待提取的文本
topK 为返回 n 个 TF-IDF 权重最大的值,默认 20
withWeight 为是否返回权重值,默认 False
allowPOS 仅包括制定词性的词,默认为空,不筛选
'''

# 关键词提取所使用的逆向文件频率 IDF 可以设置成自定义的语料库路径
jieba.analyse.set_idf_path(file_name)
# 自定义 IDF 语料库示意
'''
我 12.00001121
今天 13.991230123
本周 12.12312123
'''

# 关键词提取所使用停止词可以设置成自定义语料库路径
jieba.analyse.set_stop_words(file_name)
# 自定义停止词语料库示意
'''
啊
吗
吧
呵呵
是啊
嗯
'''

3.2 基于textrank 算法

#import jieba.analyse
jieba.analyse.textrank(sentence,topK = 20,withWeight = False,allowPOS = ('ns','n','vn','v'))
#参数同 TF-IDF 算法含义一致

4.词性标注

import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
ss = [[o.word,o.flag] for o in words if not o.flag.startswith("x")]

5.并行分词

原理:将目标文本进行分隔后,把各行文本分配到各个 python 进程并行分词,然后归并结果,从而获得分词速度的可观提升。

基于python 自带的 multiprocessing 模块,不支持 Windows

#开启并行分词模式,参数为打开的进程数
jieba.enable_parallel(4)

#关闭并行分词模式
jieba.disable_parallel()

6.返回词语在原文的起止位置

# 返回 (词语,起始位置索引,终止位置索引)
# 注意必须是 unicode
result = jieba.tokenize(u"我爱北京天安门")
for w in result:
    print "word:%s start:%d end:%d" %(w[0],w[1],w[2])

# 搜索模式,同前面一样,只不过相当于分词的 full 模式
result = jieba.tokenize(u"我爱北京天安门",mode = "search")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值