目录
jieba实现了两种关键词抽取算法,分别是TF-IDF和TextRank。
TF-IDF关键词抽取
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。实际应用中主要是将TF(词频,词t在文档d中出现的频率)* IDF(逆文档率,语料库中包含词t的文档的数目的倒数)
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
其中,sentence为待提取文本,topK为返回几个TF-IDF值最大的关键词,默认20,withWeight为是否一并返回关键词权重值,默认值为False,allowPOS仅包括指定词性的词,默认值为空(不筛选)
from jieba import analyse
tfidf = analyse.extract_tags
text = "传统数据基本都是结构化数据,每个字段都是有用的,价值密度非常高。\
大数据时代,越来越多数据都是半结构化和非结构化数据,比如网站访问日志,\
里面大量内容都是没价值的,真正有价值的比较少,虽然数据量比以前大了N倍,\
但价值密度确实低了很多。"
# 基于TF-IDF算法关键词提取
keywords = tfidf(text, topK=20, withWeight=True)
print('keywords by tfidf:')
for keyword, val in keywords:
print(keyword + " " + str(val))
输出:
TextRank关键词抽取
TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=())
参数对应参考TF-IDF
from jieba import analyse
textrank = analyse.textrank
text = "传统数据基本都是结构化数据,每个字段都是有用的,价值密度非常高。\
大数据时代,越来越多数据都是半结构化和非结构化数据,比如网站访问日志,\
里面大量内容都是没价值的,真正有价值的比较少,虽然数据量比以前大了N倍,\
但价值密度确实低了很多。"
# 基于TF-IDF算法关键词提取
keywords = textrank(text, topK = 10, withWeight = True)
print('keywords by tfidf:')
for keyword, val in keywords:
print(keyword + " " + str(val))
输出: