VK Cloud

Что такое токенизация и почему языковые модели считают текст не так, как человек

17 сентября 2026 г.
Александр Иванов
Автор статьи
_blog_head_21.png

Языковая модель не видит буквы и слова напрямую. На входе нейросети последовательность чисел: идентификаторов токенов из фиксированного словаря. Перевод сырого текста в такую последовательность называется токенизацией — это отдельный шаг предобработки, который выполняется до того, как текст попадает в саму сеть.

Токен — не синоним слова. В зависимости от алгоритма и языка токеном может стать часть слова, целое слово, знак препинания или фрагмент юникод-символа (например, часть эмодзи). Длина текста в токенах и в словах почти никогда не совпадает.

Что такое токен и зачем он нужен модели

Языковая модель не видит буквы и слова напрямую. На входе нейросети последовательность чисел: идентификаторов токенов из фиксированного словаря. Перевод сырого текста в такую последовательность называется токенизацией — это отдельный шаг предобработки, который выполняется до того, как текст попадает в саму сеть.

Токен — не синоним слова. В зависимости от алгоритма и языка токеном может стать часть слова, целое слово, знак препинания или фрагмент юникод-символа (например, часть эмодзи). Длина текста в токенах и в словах почти никогда не совпадает.

Почему не разбивать текст по словам или по буквам

Самый очевидный вариант — разбить текст по словам. У него два практических ограничения:

  1. Огромный словарь. Нужно заранее перечислить все формы всех слов языка.
  2. Проблема out-of-vocabulary. Модель неизбежно встретит слово, которого не было в обучающем словаре, и для него просто не окажется токена.

Противоположная крайность — токенизация по отдельным символам или байтам. Словарь компактный, зато последовательности получаются очень длинными: то, что уместилось бы в десяток токенов при разбиении по словам, превращается в сотни элементов. Длина последовательности напрямую определяет вычислительные затраты.

Subword-токенизация — компромисс между этими крайностями. Частые слова остаются целыми токенами, редкие или незнакомые разбиваются на более мелкие, но осмысленные куски. Этот подход лежит в основе всех крупных семейств языковых моделей.

Как работает BPE (Byte Pair Encoding)

Byte Pair Encoding — алгоритм, изначально применявшийся для сжатия данных. В 2016 году Рико Сеннрих, Барри Хэддоу и Александра Бёрч адаптировали его для нейронного машинного перевода и сегментации редких слов на подслова.

Словарь строится итеративно. На каждом шаге алгоритм находит самую частую пару соседних символов (или уже собранных подслов) и объединяет её в новый токен. Процесс повторяется, пока словарь не достигнет заданного размера.

GPT-2 использует вариант этого подхода — byte-level BPE. Он работает не с юникод-символами, а с байтами UTF-8, поэтому любой текст раскладывается без токенов «неизвестное слово»: даже редкий символ представляется составляющими его байтами.

Альтернативный подход: SentencePiece и Unigram LM

BPE — не единственный способ построить subword-словарь. SentencePiece обучается напрямую на сырых предложениях, без предварительного разбиения текста по пробелам. Это делает токенизатор языконезависимым и пригодным для языков, где границы слов не обозначены явно (китайский, японский, тайский).

Внутри SentencePiece может использоваться Unigram Language Model — подход, устроенный противоположно BPE. Вместо объединения пар символов «снизу вверх» Unigram LM начинает с большого словаря и итеративно сокращает его, удаляя токены, потеря которых меньше всего ухудшает правдоподобие модели.

Токенизаторы конкретных семейств моделей

Размер словаря заметно отличается от поколения к поколению:

ТокенизаторМоделиРазмер словаря
BPE (GPT-3)text-davinci и семейство50 257 токенов
cl100k_baseGPT-3.5-turbo, GPT-4около 100 000 токенов
o200k_baseGPT-4oоколо 200 000 токенов

OpenAI публикует открытую библиотеку tiktoken, которая реализует byte-pair-encoding-токенизацию для этих моделей. С её помощью можно заранее посчитать, сколько токенов займёт конкретный текст.

Важно знать

Токенизация и не-английские языки

Словари токенизаторов исторически формировались на корпусах с преобладанием англоязычного текста. На практике это приводит к тому, что кириллица и ряд других письменностей при том же смысловом объёме разбиваются на большее число токенов, чем эквивалентный английский текст.

Рост словаря у более новых токенизаторов (от 50 257 у GPT-3 до примерно 200 000 у o200k_base) — один из факторов, сокращающих эту разницу, хотя точная зависимость определяется составом обучающих данных конкретного токенизатора.

Для разработчиков, работающих с API с тарификацией по токенам, разница ощутима: текст на русском языке занимает больше контекстного окна и обходится дороже, чем эквивалентный английский.

Практические следствия для разработчиков

Длина контекстного окна модели измеряется в токенах, а не в словах или символах. Объём текста, который «влезет» в запрос, зависит от того, как конкретный токенизатор разбивает именно этот язык и тип контента.

Числа, редкие слова, программный код и не-английские языки могут разбиваться на неожиданно большое количество токенов. С этой механикой связан ряд характерных особенностей поведения моделей:

Ошибки в подсчёте букв

Модель видит не буквы, а токены, каждый из которых может покрывать несколько символов. Поэтому на вопрос «сколько букв в слове» модель нередко ошибается.

Сложности с арифметикой

Многозначное число может быть разбито на несколько отдельных токенов без «знания» о позиционной записи цифр.

Чувствительность к пробелам

Лишний пробел меняет границы токенов и может повлиять на результат генерации.

Понимание механики токенизации помогает объяснить эти артефакты и учитывать их при проектировании промтов.

Оставьте заявку, чтобы получить консультацию

Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

            Узнавайте о выходе новых статей в блоге первыми!

            Будем держать в курсе новостей и облачных трендов

            section-subscribe_2x.png
              section-subscribe_2x.png
              Теги: языковые модели, токенизация, BPE, SentencePiece, GPT
              Ссылка скопирована
              Поделиться

              Почитать по теме

              _blog_head_11.png
              8 сентября

              LoRA и QLoRA: как выбрать GPU для файнтюнинга LLM без миллионного бюджета

              _blog_head_15.png
              8 сентября

              Как работает инференс LLM: от токенизации до генерации ответа

              _blog_head_9.png
              8 сентября

              Как писать промпты для нейросетей: структура, техники и примеры

              40+ готовых сервисов