Токенизация
Материал из MachineLearning.
| | Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Iaroslav Lyakhov 21:38, 1 июля 2026 (MSD) |
|
Токениза́ция (англ. tokenization) в обработке естественного языка - это разбиение текста на элементарные единицы (токены), которыми оперирует модель. Токенизация - первый шаг любого конвейера работы с текстом: именно токены, а не символы или слова, языковая модель кодирует в числа и предсказывает. От выбора способа токенизации зависят размер словаря, длина последовательности, скорость и качество модели.
Зачем нужна
Нейросеть не работает с текстом напрямую - ей нужны числа. Токенизатор переводит строку в последовательность целочисленных идентификаторов из фиксированного словаря. Возникает противоречие:
- словарь из слов - компактные последовательности, но огромный словарь и проблема неизвестных слов (out-of-vocabulary): любое опечатанное или редкое слово нельзя закодировать;
- словарь из символов - крошечный словарь без OOV, но очень длинные последовательности, что дорого для трансформера с его квадратичной сложностью.
Компромисс - токенизация по подсловам (subword), которая стала стандартом.
Подсловная токенизация
Идея: частые слова остаются целыми токенами, а редкие дробятся на осмысленные части (морфемы, корни). Так словарь остаётся ограниченным (обычно десятки тысяч токенов - от ~30 000 до 100 000 и более), а неизвестных слов не возникает - в худшем случае слово соберётся из отдельных символов. Например, частотное «дом» останется одним токеном, а редкое «токенизация» может быть разбито на несколько частей вроде «токен» + «из» + «ация».
Основные алгоритмы:
- BPE (Byte Pair Encoding) - итеративно объединяет самую частую пару соседних токенов в новый токен, пока не достигнут заданный размер словаря. Лёг в основу многих современных токенизаторов.
- WordPiece - близок к BPE, но пары выбираются по максимуму правдоподобия, а не частоты. Применяется в BERT.
- Unigram LM - стартует с большого словаря и удаляет токены, наименее влияющие на правдоподобие. Реализован в библиотеке SentencePiece.
- Byte-level BPE - применяет BPE к байтам UTF-8, что гарантирует отсутствие OOV для любых символов и языков, включая эмодзи. Используется в моделях семейства GPT.
Особенности и подводные камни
- Неравномерность по языкам. Словари обучаются преимущественно на английском, поэтому текст на русском, арабском или китайском обычно дробится на большее число токенов. Это удорожает запросы и «съедает» контекстное окно.
- Токены - не слова. Одно слово может стать несколькими токенами, а пробел часто включается в токен. Это объясняет, почему модели плохо считают буквы в слове или решают задачи вида «сколько букв „р“».
- Стоимость и длина. Тарификация API и ограничение длины контекста измеряются в токенах, а не в словах или символах.
- Числа и код токенизируются неинтуитивно, что влияет на арифметические способности модели.
Связь с другими понятиями
После токенизации каждый токен отображается в векторное представление (эмбеддинг): именно с обучаемой векторизации токенов начинают работу модели дистрибутивной семантики, матричные разложения текстов и трансформеры. Качество токенизации опосредованно влияет на все последующие этапы: от предобучения до пошаговых рассуждений.
См. также
- Большая языковая модель
- Векторное представление (эмбеддинг)
- Трансформер
- Обработка естественного языка
Литература
- Sennrich R., Haddow B., Birch A. Proc. of ACL. — 2016.
- Kudo T., Richardson J. Proc. of EMNLP (System Demonstrations). — 2018.

