Токенизация текста
Введение в токенизацию
При компьютерной обработке естественного языка сырой текст невозможно напрямую подать в математическую модель. Текст необходимо предварительно токенизировать — разбить на последовательность минимальных смысловых единиц, которые называются токенами (tokens). Этот процесс можно выразить следующей записью:
где — это отдельный токен, а — общее число токенов в последовательности.
Однако нейросети не умеют работать с символь ными строками. Поэтому каждый полученный токен заменяется на соответствующий ему эмбеддинг (embedding) — вектор вещественных чисел фиксированной размерности :
После этого последовательность векторов-эмбеддингов передаётся на вход прогнозирующей модели , которая осуществляет целевое предсказание , такое как класс текста, следующий токен и т.д.:
Откуда берутся значения вектора эмбеддингов для каждого токена?
Существует три основных подхода к формированию векторн ых представлений токенов:
- Фиксированное one-hot кодирование: вектор состоит из нулей и одной единицы на позиции, соответствующей индексу токена в словаре. Получаемая размерность вектора будет совпадать с числом уникальных кодируемых сущностей, поэтому он применим лишь для токенизации текста на уровне символов, число которых невелико. Отметим также, что векторы получаются ортогональными и не несут информации о семантической близости кодируемых сущностей.
- Настраиваемые вместе с параметрами модели: векторы инициализируются случайным образом и обучаются совместно с весами самой сети под конкретную задачу.
- Предобученные (Transfer Learning): векторы берутся из уже обученных на огромных корпусах текстов моделей (например, Word2Vec, GloVe или извлекаются из скрытых слоев современных LLM). Это позволяет сразу наделить модель знаниями о семантике слов.
Простейшие виды токенизации
Исторически первыми и самыми интуитивными способами разделения текста были пословная и посимвольная токенизация.
Пословная токенизация (Word-level)
При данном подходе текст разбивается строго на слова и знаки препинания.
Пример разбиения:
Playing games.[Playing][games][.]
Преимущества:
- Компактное представление текста: последовательность получается короткой.
- Быстрая обработка: меньше токенов означает меньшее количество вычислений при проходе через модел ь.
- Улучшенное понимание контекста: моделям легче устанавливать смысловые зависимости между словами, а ширина доступного контекста (измеряемая в токенах) охватывает больше реального текста.
Недостатки:
-
Проблема новых слов (Out-Of-Vocabulary, OOV): если модель при обучении не видела новое слово, она не будет знать, какой вектор ему сопоставить.
Эта проблема стоит особенно остро для морфологически богатых языков (таких, как русского и турецкого), где у одного слова могут быть десятки словоформ.
Посимвольная токенизация (Character-level)
Здесь минимальной единицей выступает каждый отдельный символ (включая пробелы).
Пример разбиения:
Playing games.[P][l][a][y][i][n][g][ ][g][a][m][e][s][.]
Преимущества:
- Очень малый словарь: достаточно хранить только алфавит, цифры и спецсимволы.
- Отсутствие проблемы OOV: любое новое слово можно собрать из известных букв.
Недостатки:
- Последовательность токенов получается слишком длинной, что сильно замедляет инференс и обучение.
- Модели тяжело улавливать долгосрочные зависимости, так как смысл «размазан» по множеству мелких токенов.
- Текст кодируется большим числом токенов, что уменьшает эффективный контекст, который модель учитывает в работе.
Современный подход: подсловная токенизация
Чтобы объединить достоинства пословного и посимвольного подходов (и избавиться от их недостатков), в современных моделях машинного обучения применяется токенизация на уровне подслов (subword tokenization).
Суть подхода заключается в том, что текст делится на часто встречающиеся фрагменты (подслова или слоги). Частотные слова остаются целыми, а редкие — разбиваются на более мелкие, но осмысленные части.
Пример разбиения:
Playing games.[Play][ing][ ][game][s][.]
- Существенное уменьшение словаря при сохранении высокой выразительности. Это особенно важно для морфологически богатых языков (русский, немецкий, финский).
- Высокая скорость обработки, так как токены остаются достаточно крупными по сравнению с символами.
- Эффективная обработка новых (OOV) слов. Если модель никогда не видела слово
playing, но виделаplayи окончанияing(например, в словахworking,running), она сможет составить векторное представление нового слова из известных ей частей. - Способность генерировать новые слова. Генерируя текст токен за токеном, модель сможет генерировать новые слова, отсутствовавшие в обучающей выборке, склоняя известные ей корни.
Алгоритмы токенизации для LLM
В современных больших языковых моделях (LLM) исп ользуются различные алгоритмы разбиения текста на подслова. Рассмотрим наиболее популярные из них.
BPE
Алгоритм BPE (Byte-Pair Encoding, [1]) пришёл в NLP из алгоритмов сжатия данных. Он стартует от отдельных символов текста. На каждой итерации алгоритм ищет пару соседних токенов, которая чаще всего встречается вместе в обучающем корпусе, и объединяет их в новый, единый токен. Процесс повторяется до достижения заданного размера словаря. Алгоритм применялся в архитектуре классического трансформера (Attention Is All You Need) и модели GPT-1.
Byte-level BPE (BBPE)
BBPE [2] - развитие алгоритма BPE, которое решает проблему огромного количества символов в Unicode. Алгоритм стартует не от символов алфавита, а от отдельных байтов. Это позволяет создать компактный базовый словарь (256 значений), который полностью покрывает абсолютно любой текст, включая редкие иероглифы, новые эмодзи и технические символы. Данный подход является де-факто стандартом и используется в моделях GPT-2, GPT-3, RoBERTa, LLaMA, DeepSeek V3.
WordPiece
Алгоритм WordPiece [3] концептуально похож на BPE — он также стартует от базовых символов и итеративно объединяет их. Однако критерий объединения иной. WordPiece объединяет те фрагменты, которые совстречаются неслучайно часто. На каждом шаге алгоритм выбирает ту пару токенов, слияние которых приведет к максимальному увеличению правдоподобия (вероятности) всего обучающего корпуса. Именно WordPiece используется в семействе моделей BERT, ALBERT, DistilBERT.