首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从tf-idf稀疏矩阵中获取最重要的单词(最高tf-idf值)

从tf-idf稀疏矩阵中获取最重要的单词(最高tf-idf值)
EN

Stack Overflow用户
提问于 2017-10-12 01:23:18
回答 1查看 2.1K关注 0票数 3

我有一个大小为208 (208个句子数组)的列表,如下所示:

代码语言:javascript
复制
all_words = [["this is a sentence ... "] , [" another one hello bob this is alice ... "] , ["..."] ...] 

我想获取tf-idf值最高的单词。我创建了一个tf-idf矩阵:

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer

tokenize = lambda doc: doc.split(" ")
sklearn_tfidf = TfidfVectorizer(norm='l2', tokenizer=tokenize, ngram_range=(1,2))
tfidf_matrix = sklearn_tfidf.fit_transform(all_words)
sentences = sklearn_tfidf.get_feature_names()

dense_tfidf = tfidf_matrix.todense()

现在我不知道如何获得tf-idf值最高的单词。

dense_tfidf的每一列表示一个单词/2个单词。(矩阵为208x5481)

当我对每一列进行求和时,并没有真正的帮助--简单的前几个单词得到了相同的结果(我猜是因为它和简单的单词计数是一样的)。

如何获取tf-idf值最高的单词?或者我如何才能明智地将其规范化?

EN

回答 1

Stack Overflow用户

发布于 2018-06-22 22:31:52

有类似的问题,但在https://towardsdatascience.com/multi-class-text-classification-with-scikit-learn-12f1e60e0a9f上发现了这个,只需根据数据帧更改X和Y输入即可。博客中的代码如下。Sklearn的文档帮助了我:http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.chi2.html

代码语言:javascript
复制
from sklearn.feature_selection import chi2
import numpy as np
N = 2
for Product, category_id in sorted(category_to_id.items()):
features_chi2 = chi2(features, labels == category_id)
indices = np.argsort(features_chi2[0])
feature_names = np.array(tfidf.get_feature_names())[indices]
unigrams = [v for v in feature_names if len(v.split(' ')) == 1]
bigrams = [v for v in feature_names if len(v.split(' ')) == 2]
print("# '{}':".format(Product))
print("  . Most correlated unigrams:\n. {}".format('\n. '.join(unigrams[-N:])))
print("  . Most correlated bigrams:\n. {}".format('\n. '.join(bigrams[-N:])))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46694163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档