COMRAD404 / GLOSSARY

Токенизация (Tokenization)

Tokenization

Токенизация — это преобразование текста в модельно-зависимые токены. Объясняем простыми словами, как работает pipeline токенизатора, чем отличаются BPE, WordPiece и SentencePiece и как точно считать токены.

TL;DR

Токенизация — это преобразование текста в токены, причём разбиение зависит от конкретной модели и encoding.

Токенизация (Tokenization) — это преобразование текста в токены: единицы, с которыми работает конкретная языковая модель. В LLM это не равно «разбить текст на слова»: по данным OpenAI, отдельным токеном может быть один символ, целое слово, пробел, знак препинания или часть слова, а точный результат зависит от модели и encoding.

На практике токенизация нужна, чтобы правильно считать вход и выход модели, воспроизводить её препроцессинг и не ошибаться в оценке стоимости API: OpenAI прямо указывает, что использование тарифицируется по токенам, причём условия зависят от модели и могут различаться для input, output и cached tokens.

Английский термин: tokenization. Не путайте процесс токенизации с самим токеном (Token): токенизация — это операция, токен — её результат.

Простыми словами

Грубо говоря, токенизация — это способ «нарезать» текст на детали того размера, который понимает конкретная модель. Можно представить это как разные правила резки одной и той же фразы: одна система возьмёт целое слово, другая — слово вместе с пробелом, третья — только часть слова.

Из-за этого два инструмента могут посчитать один и тот же русский текст по-разному. Поэтому для точного подсчёта нельзя опираться на усреднённые советы вроде «примерно столько-то символов на токен»: официальные материалы OpenAI рекомендуют проверять разбиение у конкретной модели и конкретного encoding.

Как это работает

В документации Hugging Face пайплайн токенизатора описан как normalizer -> pre-tokenizer -> model -> post-processor. Это удобная схема, чтобы понять механику без привязки к одной библиотеке.

Исходный текст
  -> Normalizer
  -> Pre-tokenizer
  -> Model
  -> Post-processor
  -> Последовательность токенов / token ids
  1. Normalizer приводит строку к форме, с которой дальше работает токенизатор.
  2. Pre-tokenizer делает предварительное разбиение текста на более удобные фрагменты.
  3. Model применяет конкретный алгоритм токенизации. Для OpenAI-совместимых encodings библиотека tiktoken описана как быстрый BPE-tokenizer; в её README показаны get_encoding("o200k_base") и encoding_for_model("gpt-4o"), а также указано, что BPE-токенизация обратима, не теряет информацию и работает с произвольным текстом. Для BERT-подобной токенизации WordPiece в статье Fast WordPiece Tokenization описан как подход с longest-match-first / maximum matching. SentencePiece, в свою очередь, позиционируется как быстрый, лёгкий, не требующий разметки tokenizer и detokenizer для нейросетевой генерации текста, где фиксированный словарь задаётся до обучения.
  4. Post-processor делает финальную обработку последовательности перед подачей дальше по пайплайну.

Ключевой момент: точное число токенов зависит не только от текста, но и от выбранной модели или encoding. Поэтому OpenAI советует проверять результат либо через официальный Tokenizer, либо программно через tiktoken.encoding_for_model(model).

Где применяется

  • Оценка использования OpenAI API. Если вы считаете бюджет или контролируете расход, вам нужен именно токенизатор вашей модели, потому что тарификация идёт по токенам и зависит от модели, а также от типа токенов: входных, выходных и cached.
  • Проверка реального разбиения промпта. Официальный веб-инструмент OpenAI Tokenizer подходит, когда нужно быстро увидеть, как текст распадается на токены и сколько их получается у конкретного OpenAI-encoding.
  • Подсчёт токенов в коде. Репозиторий tiktoken показывает типовой путь через encoding_for_model("gpt-4o") или get_encoding("o200k_base"), если вам нужен повторяемый расчёт в приложении или пайплайне.
  • Подготовка данных для других NLP-моделей. В Hugging Face токенизатор можно загружать через Tokenizer.from_pretrained("bert-base-uncased"). Если вы обучаете собственный подсловный tokenizer по сырым текстам, практичнее смотреть в сторону SentencePiece с его фиксированным словарём, заданным до обучения.

Практический пример

Если вы работаете с OpenAI-моделью, безопаснее всего считать токены тем же encoding, который привязан к этой модели.

import tiktoken

text = "Сделай краткое резюме этого абзаца."

enc = tiktoken.encoding_for_model("gpt-4o")
token_ids = enc.encode(text)

print(len(token_ids))
print(token_ids)
  1. Вы выбираете модель.
  2. encoding_for_model(...) возвращает encoding, связанный с этой моделью.
  3. encode(...) превращает строку в последовательность token ids.
  4. Если нужен ручной контроль, сверяете тот же текст в официальном Tokenizer.

Не фиксируйте однажды получившееся число токенов как «вечную истину». В официальных источниках прямо сказано, что разбиение зависит от модели и encoding, а в текущем наборе проверенных материалов отдельно отмечено: при обновлении encodings точные counts и token ids стоит перепроверять.

Практический вердикт: сначала выбирайте модель, потом считайте токены её собственным tokenizer. Переносить числа между разными экосистемами «по аналогии» рискованно.

На 2026-08-16 на PyPI для tiktoken указан релиз 0.13.0; также там указаны требование Python >= 3.9 и лицензия MIT.

Чем отличается от токена, BPE, WordPiece и SentencePiece

Термин Что это Ключевое отличие
Токенизация Процесс преобразования текста в токены Это операция разбиения, а не отдельная единица текста.
Токен Единица текста после токенизации Токен — результат процесса, а не сам процесс.
BPE Конкретный алгоритм токенизации; tiktoken описан как BPE-tokenizer для моделей OpenAI Это один из способов выполнять токенизацию, а не синоним токенизации вообще.
WordPiece Подход к токенизации с longest-match-first / maximum matching Это отдельный алгоритм, часто обсуждаемый в BERT-подобных пайплайнах.
SentencePiece Инструмент и подход для неразмеченной подсловной tokenization/detokenization с фиксированным словарём Это самостоятельная система токенизации, которую можно обучать на сырых текстах.

Ограничения и заблуждения

  • Заблуждение: «один токен = одно слово». Нет. OpenAI прямо пишет, что токеном может быть один символ, целое слово, пробел, знак препинания или часть слова.
  • Заблуждение: «один и тот же текст всегда даёт одинаковый счёт». Нет. Разбиение зависит от модели и encoding; для OpenAI его нужно перепроверять через официальный Tokenizer или tiktoken.encoding_for_model(model).
  • Ограничение библиотек. tiktoken оптимизирован под OpenAI encodings. Hugging Face tokenizers — библиотека с версионным API; в release notes на 2026-08-16 стабильной в ветке 0.23 указана версия 0.23.1, поэтому поведение лучше сверять именно с установленным релизом. SentencePiece требует обученную модель или предоставленные model files; на GitHub как последний релиз на ту же дату указан v0.2.2.
  • Ограничение официального веб-инструмента. OpenAI Tokenizer подходит для точной интерактивной проверки OpenAI-токенизации, но это веб-инструмент, а не универсальная библиотека для всех экосистем.
  • Редакционное ограничение статьи. Здесь намеренно нет универсальной таблицы «русское слово → число токенов». Официальные источники прямо предупреждают о зависимости от модели и encoding, а также о необходимости перепроверки после обновлений encodings.
  • Что ещё не покрыто источниками. В проверенном наборе материалов нет явной документации о региональных различиях доступа к OpenAI Tokenizer или к зеркалам пакетов. Если вы работаете в конкретном регионе или корпоративном контуре, доступ лучше проверить отдельно.

Связанные термины и инструменты

Для следующего шага полезно развести понятия токена и токенизации. Если вы хотите понять, что происходит с последовательностью токенов дальше, логично перейти к статье про механизм внимания (attention). Если вас интересует обучение собственных разбиений по данным без ручной разметки, пригодится материал про обучение без учителя. А при работе с пользовательскими вводами в агентных системах полезно отдельно изучить риск промпт-инъекции.

Инструмент Для чего подходит Что проверить перед использованием Состояние на 2026-08-16
OpenAI Tokenizer Интерактивно посмотреть токены и точный счёт для OpenAI-моделей Подходит именно для OpenAI-encoding; это веб-инструмент Официальный инструмент по адресу platform.openai.com/tokenizer
tiktoken Программно считать токены и использовать OpenAI-совместимые BPE-encoding Точный результат зависит от выбранной модели или encoding PyPI: 0.13.0
Hugging Face tokenizers Быстрая общая токенизация, загрузка pretrained-tokenizer, обучение и encoding Сверяйте код и поведение с точной версией релиза Стабильный релиз 0.23.1
SentencePiece Обучать подсловные tokenizer/detokenizer по сырым текстам с фиксированным словарём Нужна обученная модель или готовые файлы модели GitHub release: v0.2.2

Источники

Вопросы и ответы

Сколько слов в одном токене?

Универсального соотношения нет. По данным OpenAI, токен может быть символом, словом, пробелом, знаком препинания или частью слова, поэтому переводить слова в токены «по формуле» нельзя.

Почему один и тот же текст даёт разное число токенов в разных моделях?

Потому что токенизация зависит от модели и encoding. Для точной проверки OpenAI рекомендует использовать официальный Tokenizer или tiktoken.encoding_for_model(model).

Как точно посчитать токены для OpenAI?

Либо через официальный веб-инструмент OpenAI Tokenizer, либо в коде через tiktoken. Проверять лучше именно тем encoding, который соответствует вашей модели.

Чем tiktoken отличается от Hugging Face tokenizers?

tiktoken в официальном репозитории описан как быстрый BPE-tokenizer для моделей OpenAI. Hugging Face tokenizers — более общий стек токенизации с явным pipeline normalizer -> pre-tokenizer -> model -> post-processor и загрузкой pretrained-tokenizer через Tokenizer.from_pretrained(...).

SentencePiece и WordPiece — это одно и то же?

Нет. WordPiece — конкретный алгоритм токенизации с maximum matching; SentencePiece — отдельный инструмент и подход для неразмеченной подсловной токенизации и детокенизации с фиксированным словарём.

Источники

SOURCES

Вопросы и ответы

FAQ
Сколько слов в одном токене?

Универсального соотношения нет. По данным OpenAI, токен может быть символом, словом, пробелом, знаком препинания или частью слова, поэтому считать токены по числу слов нельзя.

Почему один и тот же текст даёт разное число токенов в разных моделях?

Потому что токенизация зависит от модели и encoding. Для OpenAI точный результат нужно проверять через официальный Tokenizer или через tiktoken для конкретной модели.

Как точно посчитать токены для OpenAI?

Используйте официальный OpenAI Tokenizer в браузере или библиотеку tiktoken в коде. Проверять нужно тем encoding, который соответствует вашей модели.

Чем tiktoken отличается от Hugging Face tokenizers?

tiktoken описан как быстрый BPE-tokenizer для моделей OpenAI. Hugging Face tokenizers — более общий стек токенизации с явным pipeline normalizer -> pre-tokenizer -> model -> post-processor и загрузкой pretrained-tokenizer.

SentencePiece и WordPiece — это одно и то же?

Нет. WordPiece — конкретный алгоритм токенизации с maximum matching, а SentencePiece — отдельный инструмент и подход для неразмеченной подсловной tokenization/detokenization с фиксированным словарём.

Читайте также

LINKS