如何在Python中找到与sklearn管道的最佳匹配

2024-04-28 18:40:40 发布

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

我有一个使用TfidfVectorizer和TruncatedSVD的管道设置。我用sklearn训练模型,并利用余弦相似度计算两个向量之间的距离。我的代码是:

def create_scikit_corpus(leaf_names=None):

    vectorizer = TfidfVectorizer(
        tokenizer=Tokenizer(),
        stop_words='english',
        use_idf=True,
        smooth_idf=True
    )

    svd_model = TruncatedSVD(n_components=300,
                             algorithm='randomized',
                             n_iterations=10,
                             random_state=42)
    svd_transformer = Pipeline([('tfidf', vectorizer),
                                ('svd', svd_model)])

    svd_matrix = svd_transformer.fit_transform(leaf_names)

    logging.info("Models created")

    test = "This is a test search query."
    query_vector = svd_transformer.transform(test)
    distance_matrix = pairwise_distances(query_vector, svd_matrix, metric='cosine')


    return svd_transformer, svd_matrix

问题是,一旦我有了距离矩阵变量,我不知道该怎么做。我想我有点搞不清楚那到底是什么。在

我正在尝试找到与我的查询最匹配的文档。感谢你朝着正确的方向努力!在


Tags: testtrue距离modelnamestransformquerymatrix
1条回答
网友
1楼 · 发布于 2024-04-28 18:40:40

一旦计算出距离_矩阵,就可以根据余弦相似性找到最近的奇异向量。。。这可能就是你困惑的原因:这个奇异向量代表什么?在

问题是这个答案并不简单,单数向量通常不是语料库中的文档。在

如果你想要的是最好的匹配,比如“从你的语料库中找到与这一个最相似的文档”,有一个更简单的方法:根据余弦相似度选择最接近的文档。这种方法不需要SVD。在

相关问题 更多 >