import jieba
'''
添加自定义词典
1、载入词典:
a、开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
b、用法: jieba.load_userdict(file_name),file_name 为文件类对象或自定义词典的路径
c、词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
d、词频省略时使用自动计算的能保证分出该词的词频。
'''
content = '李小福是创新办主任也是云计算方面的专家'
jieba.load_userdict('text.txt')
print('-'.join(jieba.cut(content, cut_all=False, HMM=True)))
# 李小福-是-创新办-主任-也-是-云计算-方面-的-专家
print(','.join(jieba.cut(content, cut_all=False, HMM=True)))
# 李小福-是-创新-办-主任-也-是-云-计算-方面-的-专家
'''
2、调整词典
a、使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。
b、使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
'''
print(','.join(jieba.cut('如果放到post中将出错', HMM=False)))
# 如果,放到,post,中将,出错
jieba.suggest_freq(('中', '将'), True)
print(','.join(jieba.cut('如果放到post中将出错', HMM=False)))
# 如果,放到,post,中,将,出错
'''
3、关键词提取
1、import jieba.analyse
a、jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight 为是否一并返回关键词权重值,默认值为 False
allowPOS 仅包括指定词性的词,默认值为空,即不筛选
b、jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件
2、关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径
自定义语料库示例:
劳动防护 13.900677652
勞動防護 13.900677652
生化学 13.900677652
生化學 13.900677652
......
用法示例:
jieba.analyse.set_idf_path("../extra_dict/idf.txt.big");
tags = jieba.analyse.extract_tags(content, topK=topK)
print(",".join(tags))
3、关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径
自定义语料库示例:
the
of
is
and
用法示例:
jieba.analyse.set_stop_words("../extra_dict/stop_words.txt")
jieba.analyse.set_idf_path("../extra_dict/idf.txt.big");
tags = jieba.analyse.extract_tags(content, topK=topK)
print(",".join(tags))
4、基于 TextRank 算法的关键词抽取
基本思想:
a、将待抽取关键词的文本进行分词
b、以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
c、计算图中节点的PageRank,注意是无向带权图
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
jieba.analyse.TextRank() 新建自定义 TextRank 实例
'''
'''
4、词性标注
jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。
jieba.posseg.dt 为默认词性标注分词器。标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
用法示例:
import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for word, flag in words:
print('%s %s' % (word, flag))
结果:
我 r
爱 v
北京 ns
天安门 ns
'''
'''
5、Tokenize:返回词语在原文的起止位置
注意,输入参数只接受 unicode
默认模式:
result = jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
结果:
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限公司 start: 6 end:10
搜索模式:
result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
结果:
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限 start: 6 end:8
word 公司 start: 8 end:10
word 有限公司 start: 6 end:10
'''
编辑整理参考:https://blog.youkuaiyun.com/alis_xt/article/details/53522435
jieba入门2
最新推荐文章于 2022-09-14 08:26:13 发布