按tf-idf排序TfidfVectorizer输出(从最低到最高,反之亦然)

时间:2017-08-21 21:04:34

标签: python scikit-learn ranking tf-idf

我使用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值排名分成两个系列对象,我该如何从代码的最后一行开始?

谢谢。

我正在阅读类似的thread,但无法弄清楚如何做到这一点。也许有人能够将这个帖子中显示的提示连接到我的问题。

1 个答案:

答案 0 :(得分:2)

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))