NLP--jieba(关键词提取(TFIDF/TextRand))

关键词提取–TFIDF词频(Term Frequency,缩写为TF):出现次数最多的词如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。“逆文档频率”(IDF)TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比基于 TF-IDF 算法的关键词抽取import jieba.analysej...
摘要由CSDN通过智能技术生成

关键词提取–TFIDF

词频(Term Frequency,缩写为TF):出现次数最多的词
在这里插入图片描述
如果某个词比较少见,但是它在这篇文章中多次出现,
那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。
“逆文档频率”(IDF)
在这里插入图片描述
TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比

基于 TF-IDF 算法的关键词抽取

import jieba.analyse

  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
    • sentence 为待提取的文本
    • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
    • withWeight 为是否一并返回关键词权重值,默认值为 False
    • allowPOS 仅包括指定词性的词,默认值为空,即不筛选
import jieba
import jieba.analyse as analyse

lines=open('NBA.txt',encoding='utf-8').read()
print ("  ".join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=())))
韦少  杜兰特  全明星  全明星赛  MVP  威少  正赛  科尔  投篮  勇士 
球员  斯布鲁克  更衣柜  张卫平  三连庄  NBA  西部  指导  雷霆  明星队

关于TF-IDF 算法的关键词抽取补充

  • 关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
    • 用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径
  • 关键词提取所使用停止词(St
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Python程序,用于实现TF-IDF提取关键词: ```python import jieba.analyse import jieba import os import codecs from sklearn import feature_extraction from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.metrics.pairwise import cosine_similarity # 加载停用词 def get_stopwords_list(): stopwords_file = os.path.join(os.getcwd(), 'stopwords.txt') stopwords_list = [line.strip() for line in codecs.open(stopwords_file, 'r', encoding='utf-8').readlines()] return stopwords_list # 分词 def cut_words(text): words = jieba.cut(text) stopwords_list = get_stopwords_list() result = '' for word in words: if word not in stopwords_list: result += word + ' ' return result # TF-IDF提取关键词 def tfidf_extract(texts, topK): corpus = [] for text in texts: text = cut_words(text) corpus.append(text) vectorizer = TfidfVectorizer() transformer = TfidfTransformer() tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) word = vectorizer.get_feature_names() weight = tfidf.toarray() ids = [] for i in range(len(weight)): ids.append(i) for i in range(len(weight)): cosine_similarities = cosine_similarity(tfidf[i], tfidf).flatten() related_docs_indices = [index for index in cosine_similarities.argsort()[::-1] if index != i] top_k = related_docs_indices[:topK] print("关键词:") for index in top_k: print(word[index], end=" ") print("\n") if __name__ == '__main__': texts = ['中文语料库', '汉语分词', '自然语言处理', '机器学习', '深度学习'] topK = 3 tfidf_extract(texts, topK) ``` 该程序使用了jieba库进行分词,并使用sklearn库中的TfidfVectorizer和TfidfTransformer进行TF-IDF计算和特征转换。在程序中,我们使用了一个停用词表来过滤掉一些无意义的词语,同时在输出关键词时,我们使用余弦相似度来计算相关性,并输出与当前文本最相关的前topK个关键词

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值