Chapter 2.2 高频词和关键词提取(二)续

知识点2.2.5 基于sklearn的TF-IDF关键词提取

基于sklearn的TF-IDF关键词提取的特点:

  1. 能够使用jieba库分词
  2. 能够使用自定义词典(新词、停用词)
  3. 适用于多文本关键词提取(而非单文本)
  4. 能够根据导入的语料库计算TF-IDF值(需训练模型)
  5. 计算结果不便阅读(以矩阵呈现而非列表)

scikit-learn官方网站(https://scikit-learn.org.cn/)

#载入需要的程序模块
from sklearn.feature_extraction.text import TfidfVectorizer
#将原始文档转换为TF-IDF的矩阵(实例化模型、训练模型)
vect = TfidfVectorizer(tokenizer = jieba.lcut, stop_words = list(stopword.stopword), max_df = 50, smooth_idf = True)
matrix = vect.fit_transform(txt_list)
  • tokenizer——设置使用的分词器
  • stop_word——设置使用的停用词表
  • max_df——设置词汇出现的最大文档频数,用于忽略出现频率过高的词汇,如果是整数表示文档的计数,如果是浮点数表示文档的比例,默认为1.0
  • min_df——设置词汇出现的最小文档频数,用于忽略出现频率过低的词汇,如果是整数表示文档的计数,如果是浮点数表示文档的比例,默认为1
  • smooth_idf——设置计算IDF值的平滑方法,如果是True表示按照ln(1+语料库中的总文档数/(1+语料库中出现某个词的文档数))+1计算IDF值,如果是False表示按照ln(语料库中的总文档数/语料库中出现某个词的文档数)+1计算IDF值
#分别打印IDF值、词坐标与TF-IDF值、TF-IDF矩阵、TF-IDF特征词、TF-IDF特征词和索引
print('IDF值:\n', vect.idf_)
print('词坐标与TF-IDF值:\n', matrix)
print('TF-IDF矩阵:\n', matrix.todense())
print('TF-IDF特征词:\n', vect.get_feature_names())
#或者print('TF-IDF特征词:\n', vect.get_feature_names_out())
print('TF-IDF特征词和索引:\n', vect.vocabulary_)

欢迎关注微信公众号“Trihub数据社”

你可能感兴趣的:(手把手陪你学Python,手把手陪你学文本分析,python,sklearn,机器学习,nlp,自然语言处理)