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")