Сравнительный анализ «Бородино» и «Ледового побоища»: семантика сквозь призму нейросетей
Шедевры русской военно-патриотической лирики — «Бородино» М. Ю. Лермонтова и «Ледовое побоище» К. М. Симонова — разделены столетием, но объединены общей темой ратного подвига. Чтобы уйти от субъективных литературоведческих оценок, я решил провести объективное сравнение этих произведений, используя предобученные эмбеддинги и методы визуализации данных.
Инструментарий исследования
Для реализации задачи был выбран современный стек библиотек для анализа данных и машинного обучения:
Transformers — для загрузки и эксплуатации нейросетевой модели LaBSE.
Torch — основной движок для работы с тензорами и вычислений на нейросети.
Scikit-learn — инструмент для снижения размерности (PCA и t-SNE) и расчета метрик сходства.
Что такое эмбеддинги и как они работают?
В контексте NLP эмбеддинг представляет собой многомерный числовой вектор, в который преобразуется текст. Каждое предложение становится точкой в высокоразмерном пространстве. Математическая близость этих точек напрямую коррелирует с семантическим сходством исходных текстов.
Для определения этой близости традиционно применяется косинусное расстояние. В отличие от евклидовой метрики, этот метод ориентирован на угол между векторами, игнорируя их абсолютную длину. Если векторы направлены в одну сторону, косинус угла близок к единице, что свидетельствует о максимальной смысловой идентичности.
Преимущества модели LaBSE
Модель LaBSE (Language-agnostic BERT Sentence Embedding), разработанная Google, идеально подходит для нашей задачи. Обученная на 100 языках, она превосходно улавливает тонкие семантические связи и устойчива к архаизмам или специфическому синтаксису поэтического языка. Главный плюс — она эффективно работает «из коробки», не требуя специфического дообучения на стихах.
Техническая реализация
Процесс начался с предобработки: тексты поэм были разбиты на строфы. Каждая строфа подавалась на вход модели для генерации вектора размерностью 768. Ниже представлен фрагмент кода для извлечения признаков:
model_name = "sentence-transformers/LaBSE"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
Работать с 768-мерным пространством напрямую невозможно, поэтому я применил двухэтапное снижение размерности:
PCA (Метод главных компонент): использовался для предварительного сжатия данных до 50 компонентов с целью отсечения информационного шума.
t-SNE: нелинейный алгоритм, который позволил спроецировать данные на плоскость (2D) для визуального анализа, сохранив при этом локальные связи между похожими строфами.
Итоговый показатель сходства составил 0.959. В анализе данных значение выше 0.7 уже говорит о сильной семантической связи. Это подтверждает, что, несмотря на разные исторические эпохи, авторы используют схожий концептуальный аппарат.
Распределение строф поэм в семантическом пространстве: синие точки — Симонов, красные — Лермонтов.
График наглядно демонстрирует частичное перекрытие двух «облаков» смыслов. Это математическое доказательство того, что Симонов в «Ледовом побоище» фактически наследует лермонтовскую традицию, адаптируя её под культурный контекст своего времени. Исследование подтвердило высокую эффективность модели LaBSE в анализе сложных художественных текстов.