Python 如何获得单词的TF-IDF分数?

Python 如何获得单词的TF-IDF分数?,python,nlp,tf-idf,tfidfvectorizer,Python,Nlp,Tf Idf,Tfidfvectorizer,我有一个很大的语料库(大约40万个独特的句子)。我只想得到每个单词的TF-IDF分数。我试图通过扫描每个单词并计算频率来计算每个单词的分数,但这太耗时了 我用过: X= tfidfVectorizer(corpus) 从sklearn,但它直接返回句子的向量表示。是否有任何方法可以获得语料库中每个单词的TF-IDF分数?使用(取自文档): 现在,如果我打印X.toarray(): 此2D数组中的每一行都引用一个文档,该行中的每个元素都引用相应单词的TF-IDF分数。要了解每个元素代表的单词

我有一个很大的语料库(大约40万个独特的句子)。我只想得到每个单词的TF-IDF分数。我试图通过扫描每个单词并计算频率来计算每个单词的分数,但这太耗时了

我用过:

  X= tfidfVectorizer(corpus)
从sklearn,但它直接返回句子的向量表示。是否有任何方法可以获得语料库中每个单词的TF-IDF分数?

使用(取自文档):

现在,如果我打印
X.toarray()

此2D数组中的每一行都引用一个文档,该行中的每个元素都引用相应单词的TF-IDF分数。要了解每个元素代表的单词,请查看
.get\u feature\u names()
函数。它将打印出一个单词列表。例如,在本例中,请查看第一个文档的行:

[0., 0.46979139, 0.58028582, 0.38408524, 0., 0., 0.38408524, 0., 0.38408524]
在本例中,
.get\u feature\u names()
返回以下内容:

['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
因此,将分数映射到如下单词:

dict(zip(vectorizer.get_feature_names(), X.toarray()[0]))
{'and': 0.0, 'document': 0.46979139, 'first': 0.58028582, 'is': 0.38408524, 'one': 0.0, 'second': 0.0, 'the': 0.38408524, 'third': 0.0, 'this': 0.38408524}

TF-IDF不是整个语料库中的每个单词,而是每个文档中的每个单词,因此您无法获得语料库中每个唯一单词的值。另外,您能否准确地说明如何使用
tfidfvectorier
?这正是我所需要的。每个文档/语料库每个单词的分数@明天32,你能准确地展示一下你是如何使用
tfidfvectorier
的吗?这与我上面评论的方式相同。语料库=列表(文档中的句子)。但它返回每个句子的唯一向量表示。但是,您不知道每个单词在文档中的准确分数。请使用
vectorizer.get\u feature\u names()
vectorizer.idf
获取每个单词的分数。参考
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
dict(zip(vectorizer.get_feature_names(), X.toarray()[0]))
{'and': 0.0, 'document': 0.46979139, 'first': 0.58028582, 'is': 0.38408524, 'one': 0.0, 'second': 0.0, 'the': 0.38408524, 'third': 0.0, 'this': 0.38408524}