我想在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]
答案 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)