gpt4 book ai didi

python - 使用 sklearn 如何计算文档和查询之间的 tf-idf 余弦相似度?

转载 作者:太空狗 更新时间:2023-10-29 23:56:31 26 4
gpt4 key购买 nike

我的目标是输入 3 个查询并找出哪个查询与一组 5 个文档最相似。

到目前为止,我已经计算了执行以下操作的文档的 tf-idf:

from sklearn.feature_extraction.text import TfidfVectorizer

def get_term_frequency_inverse_data_frequency(documents):
allDocs = []
for document in documents:
allDocs.append(nlp.clean_tf_idf_text(document))
vectorizer = TfidfVectorizer()
matrix = vectorizer.fit_transform(allDocs)
return matrix

def get_tf_idf_query_similarity(documents, query):
tfidf = get_term_frequency_inverse_data_frequency(documents)

我现在遇到的问题是,我有文档的 tf-idf 我要对查询执行什么操作才能找到与文档的余弦相似度?

最佳答案

这是我的建议:

  • 我们不必对模型进行两次拟合。我们可以重用相同的向量器
  • 可以使用preprocessing 属性将文本清理功能直接插入TfidfVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

vectorizer = TfidfVectorizer(preprocessor=nlp.clean_tf_idf_text)
docs_tfidf = vectorizer.fit_transform(allDocs)

def get_tf_idf_query_similarity(vectorizer, docs_tfidf, query):
"""
vectorizer: TfIdfVectorizer model
docs_tfidf: tfidf vectors for all docs
query: query doc

return: cosine similarity between query and all docs
"""
query_tfidf = vectorizer.transform([query])
cosineSimilarities = cosine_similarity(query_tfidf, docs_tfidf).flatten()
return cosineSimilarities

关于python - 使用 sklearn 如何计算文档和查询之间的 tf-idf 余弦相似度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55677314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com