sklearn:TFIDF转换器:如何获取文档中给定单词的tf-idf值

发布于 2021-01-29 18:30:31

我使用 sklearn 使用以下 命令 来计算文档的TFIDF(术语频率与文档频率成反比):

from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(documents)
from sklearn.feature_extraction.text import TfidfTransformer
tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
X_train_tf = tf_transformer.transform(X_train_counts)

X_train_tfscipy.sparse形状的矩阵(2257, 35788)

如何获得特定文档中单词的TF-IDF?更具体地说,如何在给定文档中获取最大TF-IDF值的单词?

关注者
0
被浏览
202
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以从sklean使用TfidfVectorizer

    from sklearn.feature_extraction.text import TfidfVectorizer
    import numpy as np
    from scipy.sparse.csr import csr_matrix #need this if you want to save tfidf_matrix
    
    tf = TfidfVectorizer(input='filename', analyzer='word', ngram_range=(1,6),
                         min_df = 0, stop_words = 'english', sublinear_tf=True)
    tfidf_matrix =  tf.fit_transform(corpus)
    

    上面的tfidf_matix具有语料库中所有文档的TF-IDF值。这是一个很大的稀疏矩阵。现在,

    feature_names = tf.get_feature_names()
    

    这将为您提供所有标记,n-gram或单词的列表。对于语料库中的第一个文档,

    doc = 0
    feature_index = tfidf_matrix[doc,:].nonzero()[1]
    tfidf_scores = zip(feature_index, [tfidf_matrix[doc, x] for x in feature_index])
    

    让我们打印出来

    for w, s in [(feature_names[i], s) for (i, s) in tfidf_scores]:
      print w, s
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看