在 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)
我想对 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)