gpt4 book ai didi

python - Sklearn tfidf 向量和 tfidf 向量数组之间的 cosine_similarity

转载 作者:行者123 更新时间:2023-12-01 07:57:59 26 4
gpt4 key购买 nike

我正在尝试获取文本与数组中包含的文本之间的余弦相似度。

我一直在研究这段代码:

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

text1 = 'Hola me llamo Luis'
text2 = 'Ayer Juan se compró una casa'
text3 = 'Casiguagua está más gordo que un manatí'
text4 = 'Y encima le huelen los pies'
text5 = 'HOlA ME LLAMO PEPE'

tweets = [text1, text2, text3, text4]

vectorizer = TfidfVectorizer(max_features=10000)
vectorizer.fit(tweets)

text1_vector = vectorizer.transform([text1])
text2_vector = vectorizer.transform([text2])
text3_vector = vectorizer.transform([text3])
text4_vector = vectorizer.transform([text4])
text5_vector = vectorizer.transform([text5])

buffer = []

buffer.append(text1_vector)
buffer.append(text2_vector)
buffer.append(text3_vector)
buffer.append(text4_vector)

similarity = cosine_similarity(text5_vector.reshape(1,-1), buffer)

我的向量类型是:

scipy.sparse.csr.csr_matrix

所以我想我必须将缓冲区传递给 csr_matrix,但我不知道该怎么做。

我也一直在尝试将缓冲区初始化为 np.array([]) 对象,但我后来没有实现将向量添加到缓冲区。知道我失败了什么吗?

最佳答案

您无法将稀疏行附加到numpy数组,您可以做的是堆栈密集numpy数组 像这样使用 vstacktoarray:

buffer = np.vstack([text1_vector.toarray(),
text2_vector.toarray(),
text3_vector.toarray(),
text4_vector.toarray()])

similarity = cosine_similarity(text5_vector.toarray(), buffer)

关于python - Sklearn tfidf 向量和 tfidf 向量数组之间的 cosine_similarity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55866994/

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