我正在尝试获取文本和数组中包含的文本之间的余弦相似度。
我一直在研究这段代码:
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([])
对象,但是稍后无法将向量添加到缓冲区中。知道我失败了吗?
答案 0 :(得分:1)
您无法将sparse rows
附加到numpy array
上,您可以使用stack
和{{1}这样来dense numpy arrays
vstack
}:
toarray