在 TF-IDF 矩阵上计算 SVD

Calculate SVD on a TF-IDF matrix

我想对 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]

如果您使用 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)