Sobes.tech
Middle — Senior
29

Как считать косинусную близость между вопросами?

Компании, где спрашивали
WildberriesWildberries

Ответ от нейросети

sobes.tech AI

Косинусная близость — это мера сходства между двумя векторами, которая вычисляется как косинус угла между ними. Для вопросов (например, текстовых) сначала нужно представить каждый вопрос в виде векторного представления (эмбеддинга), например, с помощью моделей Word2Vec, BERT или TF-IDF.

Как считать косинусную близость:

  1. Преобразовать каждый вопрос в вектор чисел.
  2. Вычислить косинус угла между двумя векторами:

[ \text{cosine_similarity}(A, B) = \frac{A \cdot B}{|A| |B|} = \frac{\sum_{i=1}^n A_i B_i}{\sqrt{\sum_{i=1}^n A_i^2} \sqrt{\sum_{i=1}^n B_i^2}} ]

Пример на Python с использованием библиотеки numpy:

import numpy as np

def cosine_similarity(vec1, vec2):
    dot_product = np.dot(vec1, vec2)
    norm_a = np.linalg.norm(vec1)
    norm_b = np.linalg.norm(vec2)
    return dot_product / (norm_a * norm_b)

# Пример векторов
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])

similarity = cosine_similarity(q1, q2)
print(f"Косинусная близость: {similarity}")

Таким образом, косинусная близость показывает, насколько вопросы похожи по смыслу в пространстве эмбеддингов.