受 这个 回答的启发,我正在尝试找到训练过的tf-idf向量化器和一个新文档之间的余弦相似度,并返回相似的文档。
下面的代码找到了第一个向量的余弦相似度,而不是一个新的查询。
>>> from sklearn.metrics.pairwise import linear_kernel
>>> cosine_similarities = linear_kernel(tfidf[0:1], tfidf).flatten()
>>> cosine_similarities
array([ 1. , 0.04405952, 0.11016969, ..., 0.04433602,
0.04457106, 0.03293218])
由于我的训练数据非常庞大,循环整个训练向量听起来不是一个好主意。我该如何推断出新文档的向量,并找到相关的文档,就像下面的代码一样?
>>> related_docs_indices = cosine_similarities.argsort()[:-5:-1]
>>> related_docs_indices
array([ 0, 958, 10576, 3277])
>>> cosine_similarities[related_docs_indices]
array([ 1. , 0.54967926, 0.32902194, 0.2825788 ])