Какие методы оценки сходства векторов в NLP вы знаете?

«Какие методы оценки сходства векторов в NLP вы знаете?» — вопрос из категории NLP и трансформеры, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В NLP сходство векторных представлений слов, предложений или документов — базовая операция. Выбор метрики зависит от свойств эмбеддингов и задачи (поиск, кластеризация, классификация).

Основные метрики, которые я применяю:

1. Косинусное сходство (Cosine Similarity) Наиболее популярная метрика для эмбеддингов (Word2Vec, GloVe, BERT). Измеряет косинус угла между векторами, игнорируя их длину. Диапазон: [-1, 1], где 1 — идентичное направление.

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def cos_sim(vec_a, vec_b):
    """Вычисляет косинусное сходство между двумя векторами."""
    dot_product = np.dot(vec_a, vec_b)
    norm_a = np.linalg.norm(vec_a)
    norm_b = np.linalg.norm(vec_b)
    return dot_product / (norm_a * norm_b)

# Или с помощью sklearn
sim_matrix = cosine_similarity([vec1], [vec2])[0][0]

2. Евклидово расстояние (Euclidean Distance) Геометрическое расстояние между точками в пространстве. Чем меньше значение, тем ближе векторы. Чувствительно к длине векторов.

def euclidean_distance(vec_a, vec_b):
    return np.linalg.norm(vec_a - vec_b)

3. Манхэттенское расстояние (Manhattan Distance, L1) Сумма абсолютных разностей по координатам. Более устойчиво к выбросам, чем евклидово.

def manhattan_distance(vec_a, vec_b):
    return np.sum(np.abs(vec_a - vec_b))

4. Скалярное произведение (Dot Product) Простая мера, пропорциональная косинусному сходству и длинам векторов. Часто используется внутри attention-механизмов трансформеров.

dot_score = np.dot(vec_a, vec_b)

5. Специализированные метрики для предложений/документов

  • WMD (Word Mover's Distance): Учитывает семантическое расстояние между отдельными словами в документах, используя эмбеддинги слов. Вычислительно дорогая.
  • BERTScore: Оценивает сходство на основе контекстуальных эмбеддингов BERT, выравнивая токены.

Практическое применение: Для семантического поиска и определения тематической близости текстов я почти всегда использую косинусное сходство над усредненными или [CLS]-эмбеддингами из моделей типа Sentence-BERT, так как оно фокусируется на смысловом направлении, а не на величине вектора.