Вопрос или проблема
Я рассчитала косинусное сходство между двумя документами очень простым способом, используя векторизацию 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 и анализа данных получить интуитивные и информативные результаты.