结巴-关键词提取
无监督学习算法:
先抽取出候选词,然后对各个候选词进行打分,然后输出topK个分值最高的候选词作为关键词。
根据打分的策略不同,有不同的算法,例如TF-IDF,TextRank等算法
from jieba import analyse
'''
sentence: 待提取关键词的文本
topK: 返回关键词的数量,重要性从高到低排序
withWeight:是否同时返回每个关键词的权重
allowPOS: 词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词
默认为('ns', 'n', 'vn', 'v'),即仅提取地名、名词、动名词、动词
'''
# 原始文本
text = "线程是程序执行时的最小单位,它是进程的一个执行流,\
是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,\
线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。\
线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。\
同样多线程也可以实现并发操作,每个请求分配一个线程来处理。"
# 基于TF-IDF算法进行关键词抽取
tfidf = analyse.extract_tags
keywords = tfidf(text,topK=20, withWeight=True, allowPOS=())#list
# 结果 keywors
[('线程', 1.6092956253903845),
('CPU', 0.6896981251673077),
('进程', 0.3764666465751923),
('调度', 0.32615933279615383),
('多线程', 0.2673207240769231)]
# 基于TextRank算法进行关键词抽取
textrank=analyse.textrank
keywords=textrank(text)#list
#结果 keywords ['线程', '进程', '调度', '单位', '操作']
# 输出抽取出的关键词
for keyword in keywords:
print(keyword[0],keyword[1])#分别为关键词和相应的权重
posted on 2018-11-02 18:31 happygril3 阅读(445) 评论(0) 收藏 举报