Python 需要帮助返回具有最高余弦相似度的句子吗

Python 需要帮助返回具有最高余弦相似度的句子吗,python,scikit-learn,nlp,tf-idf,cosine-similarity,Python,Scikit Learn,Nlp,Tf Idf,Cosine Similarity,我得到了余弦相似度,tfidf_矩阵是我存储文档的地方,但我不知道如何迭代,找到它等于余弦相似度得分,这样我就可以返回最相关的句子 从sklearn.feature\u extraction.text导入TfidfVectorizer 将numpy作为np导入 从scipy.sparse.csr导入csr_矩阵 作为pd进口熊猫 导入系统 从sklearn.metrics.pairwise导入余弦_相似性 def查询(文章,问题): sklearn中的TFIDFvectorier需要字符串列表作

我得到了余弦相似度,tfidf_矩阵是我存储文档的地方,但我不知道如何迭代,找到它等于余弦相似度得分,这样我就可以返回最相关的句子

从sklearn.feature\u extraction.text导入TfidfVectorizer 将numpy作为np导入 从scipy.sparse.csr导入csr_矩阵 作为pd进口熊猫 导入系统 从sklearn.metrics.pairwise导入余弦_相似性

def查询(文章,问题):

sklearn中的TFIDFvectorier需要字符串列表作为输入。 将TF-IDF表格式化为pd.DataFrame格式。 查询(“a1.txt”,“什么是狗”)

question = question.lower()

dataset = [question]

with open(article,'r') as f:
    output = f.read()
    output = output.lower()
    output = [output]

vectorizer = TfidfVectorizer(input=output, analyzer='word', ngram_range=(1,1),
                 min_df = 0, stop_words=None)

tfidf_matrix = vectorizer.fit_transform(output)
query_tfidf = vectorizer.transform([question.lower()])

CosSim = cosine_similarity(tfidf_matrix,query_tfidf)
#for x in tfidf_matrix:

vocab = vectorizer.get_feature_names()
documents_tfidf_lol = [{word:tfidf_value for word, tfidf_value in zip(vocab, sent)} 
for sent in tfidf_matrix.toarray()]

documents_tfidf = pd.DataFrame(documents_tfidf_lol)
documents_tfidf.fillna(0, inplace=True)

documents_tfidf2 = pd.DataFrame(CosSim)
documents_tfidf2.fillna(0, inplace=True)

t = (tfidf_matrix[:, None] == CosSim).all(-1)
np.where(t.any(0), t.argmax(0), np.nan)

print(t)
        #print(documents_tfidf2)