计算TF-IDF矩阵上的SVD

时间:2016-12-25 10:40:44

标签: python tf-idf svd

我想在TF-IDF矩阵上执行奇异值分解。但是TF-IDF矩阵给了我这样的东西(术语索引,分数):

[(1,0.2) , (2,0.3) , (6,0.1) ...]
[(3,0.2) , (5,0.3) , (10,0.1) ...]

因此代码u,s,v = svd(corpus_tfidf)将不起作用。 我想要一个只有分数的TF-IDF矩阵,而不是术语索引。

我已经像这样计算了TF-IDF:

tfidf = models.TfidfModel(corpus)
corpus_tfidf=tfidf[corpus]

1 个答案:

答案 0 :(得分:1)

如果你使用gensim进行tfidf生成,你可以使用matutils将你的tfidf表示转换为密集的numpy ndarray,反之亦然。

from gensim import matutils
tfidf_dense = matutils.corpus2dense(corpus_tfidf, num_terms).T

其中num_terms是语料库中的一些唯一术语。它可以这样计算:

num_terms = len(corpus_tfidf.obj.idfs)