TFIDF矩阵上的SVD返回奇数形状

2024-05-02 14:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

首要问题是: 我认为在模型TruncatedSVD上运行SparseVectors中的fit_transform将产生具有维度的组件(n个样本,n个组件),正如前面提到的here(跳到fit_transform部分)。在

但是,我得到了一个形状矩阵(n_分量,n_个单词)。在

下面是一个简单的例子来重现这个问题:

def build_tfidf_model(corpus):
    transformer = TfidfVectorizer(analyzer='word')
    matrix = transformer.fit_transform(corpus)
    return matrix

def svd_tfidf_matrix(matrix):
    svd = TruncatedSVD(n_components=3)
    svd.fit_transform(matrix)
    return svd.components_


corpus = ['sentence one', 'sentence two', 'another one', 'another sentence', 'two sentence', 'one sentence']
tfidf_model = build_tfidf_model(corpus)
reduced_vectors = svd_tfidf_matrix(matrix=tfidf_model)

所以,tfidf_model.shape产生{}。这对我来说很有意义。我有一个由六个文件组成的语料库,其中总共包含4个不同的单词。在

然而,reduced_vectors.shape产生{}。我原以为它是(6,3)的形状。在

我一定是误解了调用fit_transform应该返回什么。我可以调用什么来让SVD返回一个矩阵,其中行是文档,列是缩减空间中的特性?在


Tags: modeldef组件transform矩阵corpus单词one
1条回答
网友
1楼 · 发布于 2024-05-02 14:16:23

如果希望在变换空间中表示输入,则fit_transform将返回该对象。当前调用它时没有将结果赋给变量。这个模型组件属性只描述如何将tfidf向量空间转换为svd空间。在

def svd_tfidf_matrix(matrix):
    svd = TruncatedSVD(n_components=3)
    return svd.fit_transform(matrix)

相关问题 更多 >