一、安装jiaba
jieba库的下载地址(支持Python2和Python3):https://github.com/fxsjy/jieba
下载jieba包后,打开命令行,安装jieba
pip install jieba
二、使用jiaba
注意:文件名不能跟jieba重复,否则会报错
使用例子:古风歌曲《我的一个道姑朋友》歌词节选
text = "而你撑伞拥我入怀中一字一句誓言多慎重你眼中有柔情千种如脉脉春风冰雪也消融那年长街春意正浓策马同游烟雨如梦檐下躲雨望进一双深邃眼瞳宛如华山夹着细雪的微风雨丝微凉风吹过暗香朦胧"
1. 分词
全模式
seg_list = jieba.cut(text, cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
输出效果为:
全模式.png
全模式把文本分成了尽量多的词,有一些字跟前后都组成了词语。
精确模式
seg_list = jieba.cut(text, cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
输出效果为:
精确模式.png
相比全模式,精确模式分得更加准确一些,但由于古风歌曲的特殊性,部分词语被拆分开了。
2. 载入词典
新建 dict.txt 文件,按格式在文件中写入自定义的词组,注意将文件编码设置为utf-8格式,在这里我没有设置它的词频和词性。
自定义字典.png
jieba.load_userdict("dict.txt")
定义词典后,可以用add_word(word, freq=None, tag=None) 和 del_word(word)对词典进行修改。
jieba.add_word('拥我入怀中')
修改后输出结果如下:
结果.png
3. 关键词抽取
关键词抽取应该是提取出与文章语义相关度最高的词;先抽取出候选词,然后用相应算法对各个词进行权重打分,然后输出topK个分值最高的候选词作为关键词。
基于 TF-IDF 算法的关键词抽取
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 是待提取的文本,topK 指定返回前n个权重最高的词,withWeight 选择是否返回权重值,allowPOS指定返回词的词性。在这里我没有加限制,使用的默认值。
from jieba import analyse
key = jieba.analyse.extract_tags
keywords = key(text)
print("keywords:") # 输出抽取出的关键词
for keyword in keywords:
print(keyword + "/")
输出结果:
关键词抽取.png
基于 TextRank 算法的关键词抽取
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
使用方法与上一个基本相同。
4. 词性标注
import jieba.posseg as pseg
words = pseg.cut("而你撑伞拥我入怀中一字一句誓言多慎重")
for word,flag in words:
print('%s %s' % (word, flag))
标注结果如下:
词性标注.png
5. 并行分词
原理:将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,提高分词效率,目前不支持Windows系统。
jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
jieba.disable_parallel() # 关闭并行分词模式
6. Tokenize:返回词语在原文的起止位置
搜索模式:
result = jieba.tokenize(text,mode='search')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
输出部分结果如下:
搜索模式.png
参考链接:
Python 自然语言处理 入门—关于jieba库的使用
官方文档:https://github.com/fxsjy/jieba
网友评论