12 февраля 2026 г. (изменено: 12 февраля 2026 г.)
Канал: @cherkashindev
Как научить машину понимать смысл слов
Я думаю все вы слышали про векторные базы данных. В прошлом посте обещал поделиться статьёй про то, как же слова и целые тексты превращаются в вектора.
«Привет! Я [0.44, -0.91, 0.66…]» или как научить машину понимать смысл слов
В машинном обучении есть базовое правило: модель умеет работать только с числами.
Поэтому любой объект — текст, картинку, звук — сначала нужно превратить в числовое представление. Только тогда модель сможет понять, что «груша» связана с «яблоком» куда больше, чем с «теплоходом»
Самый простой вариант для текста — 🔢 one hot encoding.
Мы берём словарь и каждому слову ставим в соответствие вектор, где одна позиция равна 1, а все остальные — 0.
Возьмём предложения:
- The movie was good.
- The movie was bad.
- The movide was awesome.
Кодировка на первой картинке.
Формально задача решена, но есть проблема: такие векторы ничего не говорят о смысле слов. Для модели слова «кот» и «собака» так же не похожи друг на друга, как «кот» и «кирпич».
Плюс векторы получаются «разреженными» — огромными и почти полностью заполненными нулями. Ну и, конечно, это потребует большого количества ресурсов для обработки.
👉 Следующий шаг — мешок слов и N-граммы.
Мы начинаем учитывать не отдельные слова, а их последовательности.
Кодировка на второй картинке.
Но N-граммы смотрят только на ограниченное число слов и строго по порядку. Поэтому они не улавливают более глубокие смысловые связи.
В реальности таких возможных N-грамм — тысячи, и большая часть значений всегда равна 0. То есть, проблема разреженных векторов полностью не уходит.
Чтобы модель работала лучше, ей нужно понимать семантику и контекст.
Здесь и появляются 🔡 word embeddings.
Эмбеддинг — это плотный числовой вектор фиксированной размерности, почти без нулей. Идея в том, что похожие по смыслу слова имеют похожие векторы, а направление в векторном пространстве несёт смысл.
В статье это объясняется на наглядном примере с животными.
- Сначала берётся одно измерение — размер. Животные с похожими габаритами находятся рядом.
- Затем добавляется второе измерение — хищность. В таком пространстве 🦁 «лев» и 🐯 «тигр» оказываются близко (крупные и опасные), 🐄 «корова» — отдельно (крупная, но безопасная), а 🐹 «хомяк» — совсем в другой области.
Когда слова представлены такими векторами, с ними можно выполнять математические операции:
V(Madrid) + V(Germany) − V(Spain) ≈ V(Berlin)
если мы возьмём слово «Мадрид», добавим «Германия» и вычтем «Испания», ближайшим полученным словом будет «Берлин». Это работает, потому что Мадрид — столица Испании. Когда мы убираем атрибуты, связанные с Испанией, и добавляем атрибуты, связанные с Германией, результирующий вектор тесно совпадает с Берлином, столицей Германии.
Сами эмбеддинги генерируются с помощью специально обученных моделей. Ну а про сам подход генерации лучше почитать непосредственно в стать. А на гифке можете посмотреть, как с помощью метода главных компонент визуализировать эмбеддинги.
👍 — если работал с эмбеддингами ❤️ — если интересно, но пока не довелось 👀 — если не твоя тема