Вдохновленный this Ответ: Я пытаюсь найти сходство с косинусом между обученным инструктором tf-idf и новым документом и вернуть похожие документы.Python - 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 ])
, хотя могут быть лучшие решения, линейный поиск не обязательно плохая идея и может быть быстрым, если он выполняется правильно, насколько огромный ваш набор данных? какой уровень запросов был бы восприимчивым? – elyase