我在部分文本数据上使用 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但不知道该怎么做。也许有人能够将该线程中显示的提示与我在此处的问题联系起来。
最佳答案
在 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))
关于python - 按 tf-idf 对 TfidfVectorizer 输出进行排序(从最低到最高,反之亦然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805493/