Геометрическая интерпретация косинусного сходства

Вопрос или проблема

Я рассчитала косинусное сходство между двумя документами очень простым способом, используя векторизацию TF-IDF в Python. Мне нужно визуализировать документы в виде векторного графика в 3D-пространстве.

Как это,
пример графика

Вот код, который я использовала для расчета косинусного сходства:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import matplotlib.pyplot as plt
import numpy as np

# Пример документов
documents = [
    "Это пример документа.",
    "Этот документ - еще один пример."
]

# Векторизация документов
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents)

# Расчет косинусного сходства
cosine_sim = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])
print("Косинусное сходство:", cosine_sim)

Ответ или решение

Геометрическая интерпретация косинусного сходства

Косинусное сходство является популярным методом измерения степени схожести между двумя векторами в пространстве. Эта концепция находит широкое применение в обработке текста, особенно для оценки схожести документов после их преобразования в векторную форму с помощью TF-IDF. В рамках этого объяснения мы рассмотрим, как можно визуализировать документы в трехмерном пространстве, а также объяснить, что такое косинусное сходство и как оно работает.

Что такое косинусное сходство?

Косинусное сходство измеряет косинус угла между двумя векторами, представляющими документы. Оно может быть выражено через формулу:

[
\text{Cosine Similarity} (A, B) = \frac{A \cdot B}{||A|| \times ||B||}
]

где ( A ) и ( B ) — это векторы, а ( \cdot ) — скалярное произведение. Значение косинусного сходства варьируется от -1 до 1. Значения, близкие к 1, указывают на то, что векторы направлены в одну сторону, следовательно, документы очень схожи. Значения, близкие к 0, означают низкую схожесть, а значения, близкие к -1, указывают на полное противопоставление.

Визуализация в 3D пространстве

Визуализировав документы в трехмерном пространстве, мы можем лучше понять, как распределяются значения косинусного сходства. При использовании TF-IDF для векторизации документов мы создаем многомерные векторы, где каждое измерение соответствует определенному терму (слову) в документе. Визуализация их в 3D пространстве помогает наглядно продемонстрировать разницу и схожесть.

Давайте рассмотрим пример кода, который может быть использован для построения 3D графика на основе ваших данных, используя библиотеку Matplotlib:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# Исходные документы
documents = [
    "This is a sample document.",
    "This document is another example."
]

# Векторизация документов
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents).toarray()

# Получаем размерность векторов
dimensionality = tfidf_matrix.shape[1]

# Проецируем векторы в 3D для визуализации (если необходимо, можно использовать PCA для уменьшения размерности)
if dimensionality > 3:
    from sklearn.decomposition import PCA
    pca = PCA(n_components=3)
    tfidf_matrix = pca.fit_transform(tfidf_matrix)

# Построение 3D графика
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Добавляем вектора в график, используя их координаты
ax.scatter(tfidf_matrix[:, 0], tfidf_matrix[:, 1], tfidf_matrix[:, 2])

# Добавляем аннотации для документов
for i, doc in enumerate(documents):
    ax.text(tfidf_matrix[i, 0], tfidf_matrix[i, 1], tfidf_matrix[i, 2], doc)

ax.set_xlabel('X Coordinate')
ax.set_ylabel('Y Coordinate')
ax.set_zlabel('Z Coordinate')
plt.title('3D Visualization of Document Vectors')
plt.show()

# Расчет косинусного сходства
cosine_sim = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])
print("Косинусное сходство:", cosine_sim)

Итоги

Геометрическая интерпретация косинусного сходства позволяет глубже понять, как документы соотносятся друг с другом в векторном пространстве. Визуализация в 3D помогает выявить закономерности и сходства, которые могут быть неочевидны при анализе только численных значений косинусного сходства. Используя TF-IDF для векторизации и Matplotlib для визуализации, вы можете эффективно исследовать отношения между документами и принять обоснованные решения на основе этих данных.

Заключение

Понимание и визуализация косинусного сходства в 3D пространстве предоставляют мощный инструмент для анализа текстовых данных. Эффективное использование TF-IDF и графических библиотек, таких как Matplotlib, помогает профессионалам в области IT и анализа данных получить интуитивные и информативные результаты.

Оцените материал
Добавить комментарий

Капча загружается...