【问题标题】:Sorting TfidfVectorizer output by tf-idf (lowest to highest and vice versa)按 tf-idf 对 TfidfVectorizer 输出进行排序(从最低到最高,反之亦然)
【发布时间】:2018-01-30 00:33:42
【问题描述】:

我在我的部分文本数据上使用来自 sklearn 的 TfidfVectorizer() 来了解每个特征(单词)的词频。我当前的代码如下

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(analyzer='word', stop_words = 'english')

# fit_transform on training data
X_traintfidf = tfidf.fit_transform(X_train)

如果我想将'X_traintfidf'中每个术语的tf-idf值从最低到最高(反之亦然)排序,例如top10,并将这些排序的tf-idf值排名分成两个Series对象,如何我应该从代码的最后一行开始吗?

谢谢。

我正在阅读类似的thread,但不知道该怎么做。也许有人可以将该线程中显示的提示与我的问题联系起来。

【问题讨论】:

    标签: python scikit-learn ranking tf-idf


    【解决方案1】:

    fit_transform() 之后,您将可以通过get_feature_names() 方法访问现有词汇表。你可以这样做:

    terms = tfidf.get_feature_names()
    
    # sum tfidf frequency of each term through documents
    sums = X_traintfidf.sum(axis=0)
    
    # connecting term to its sums frequency
    data = []
    for col, term in enumerate(terms):
        data.append( (term, sums[0,col] ))
    
    ranking = pd.DataFrame(data, columns=['term','rank'])
    print(ranking.sort_values('rank', ascending=False))
    

    【讨论】:

    • 由于 tf 是术语频率,即术语计数/术语总数,我相信计算“总和”的正确方法是找到 X_traintfidf 与长度向量的点积X_train 中的文档集合
    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2020-12-28
    • 2018-06-07
    • 2018-03-23
    • 2011-08-21
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多