欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jieba(结巴)分词的使用

程序员文章站 2022-06-04 09:02:06
...
"""
jieba添加自定义词或词库
"""
import jieba
str_text="李小福是创新办主任也是云计算方面的专家"
str_jing2=jieba.cut(str_text,cut_all=False)
print('add_word前:'+"/".join(str_jing2))
#添加自定义词
for i in ["创新办","云计算"]:#准备自定义词
    jieba.add_word(i)#动态添加自定义词
str_jing3=jieba.cut(str_text,cut_all=False)
print('add_word后:'+"/".join(str_jing3))
jieba.del_word("云计算")#动态删除词
str_jing3=jieba.cut(str_text,cut_all=False)
print('del_word后:'+"/".join(str_jing3))

"""
add_word前:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家
add_word后:李小福/是/创新办/主任/也/是/云计算/方面/的/专家
del_word后:李小福/是/创新办/主任/也/是/云/计算/方面/的/专家
"""

s="李小福是创新办主任也是云计算方面的专家"
temp=jieba.cut(s)
print(",".join(temp))
#自定义词典(创新办 5 nt 云计算 10 n)
jieba.load_userdict(r"D:\Users\Administrator\PycharmProjects\test\dict.txt")
temp=jieba.cut(s)
print("修正词频前:"+"/".join(temp))
# 可调节单个词语的词频,使其能(或不能)被分出来
jieba.suggest_freq("也是",tune=True)
temp=jieba.cut(s)
print("修正词频后:"+"/".join(temp))
"""
修正词频前:李小福/是/创新办/主任/也/是/云计算/方面/的/专家
修正词频后:李小福/是/创新办/主任/也是/云计算/方面/的/专家
"""
import jieba
#默认模式(精确模式)
s = '我想和女朋友一起去北京故宫博物院参观和闲逛。'
cut=jieba.cut(s)
#分词结果返回的是一个生成器(这对大数据量数据的分词尤为重要)
print(cut,type(cut))#结果<class 'generator'>
print(",".join(cut))#我,想,和,女朋友,一起,去,北京故宫博物院,参观,和,闲逛,。

#全模式就是把文本分成尽可能多的词。
cut=jieba.cut(s,cut_all=True)
print(",".join(cut))
#我,想,和,女朋友,朋友,一起,去,北京,北京故宫,北京故宫博物院,故宫,故宫博物院,博物,博物院,参观,和,闲逛,

#搜索引擎模式
slist=jieba.cut_for_search(s)
#我,想,和,朋友,女朋友,一起,去,北京,故宫,博物,博物院,北京故宫博物院,参观,和,闲逛,。
print(",".join(slist))

抽取关键词

"""基于TF-IDF算法的关键词抽取
#jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
                           allowPOS=())
"""
import jieba
import jieba.analyse#分析

sentence = '全国港澳研究会会长徐泽在会上发言指出,' \
           '学习系列重要讲话要深刻领会 主席关于香港回' \
           '归后的宪制基础和宪制秩序的论述,这是过去20年' \
           '特别是*十八大以来"一国两制"在香港实践取得成功的根本经验。' \
           '首先,要在夯实 香港的宪制基础、巩固香港的宪制秩序上着力。' \
           '只有牢牢确立起"一国两制"的宪制秩序,才能保证"' \
           '一国两制"实践不走样 、不变形。其次,要在完善基本法' \
           '实施的制度和机制上用功。' \
           '*直接行使的权力和特区高度自治权的结合是特区宪制秩 ' \
           '序不可或缺的两个方面,同时必须切实建立以行政长官为核心的行政' \
           '主导*。第三,要切实加强香港社会特别是针对公 ' \
           '职人员和青少年的宪法、基本法宣传,牢固树立"一国"意识,' \
           '坚守"一国"原则。第四,要努力在全社会形成聚焦发展、抵 制泛政治' \
           '化的氛围和势能,全面准确理解和落实基本法有关经济事务的规定,' \
           '使香港继续在国家发展中发挥独特作用并由' \
           ' 此让最广大民众获得更实在的利益。'
"""基于TF-IDF算法的关键词抽取
TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集
或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成
正比增加,但同时会随着它在语料库中出现的频率成反比下降。该算法在数据挖掘、
文本处理和信息检索等领域得到了广泛的应用,如从一篇文章中找到它的关键词。
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,
并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类
对于如何获取一篇文章的关键词,我们可以计算这边文章出现的所有名词的 
TF-IDF,TF-IDF越大,则说明这个名词对这篇文章的区分度就越高,
取 TF-IDF 值较大的几个词,就可以当做这篇文章的关键词。"""
keywords = jieba.analyse.extract_tags(sentence, topK=3, withWeight=True,
                                      allowPOS=('n','nr','ns'))
#sentence :为待提取的文本
#topK: 为返回几个 TF/IDF 权重最大的关键词,默认值为 返回20个
#withWeight : 为是否一并返回关键词权重值,默认值为 False
#allowPOS : 仅包括指定词性的词,默认值为空,即不筛选

print(type(keywords))
#print(keywords)#[('宪制', 1.3431386920067796),。。。。
for item in keywords:
    print(item[0],item[1])
	
	
	
print("**************************")
# 基于TextRank算法的关键词抽取(与前一个算法相比相对提取速度慢)
#基本思想:
#将待抽取关键词的文本进行分词
#以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
#计算图中节点的PageRank,注意是无向带权图

#基于TextRank算法的关键词抽取
keywords = jieba.analyse.textrank(sentence, topK=6, withWeight=True,
                                  allowPOS=('n','nr','ns'))
for item in keywords:
    print(item[0],item[1])
相关标签: python进阶