我使用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,但无法弄清楚如何做到这一点。也许有人能够将这个帖子中显示的提示连接到我的问题。
答案 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))