Токенизация

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск

Iaroslav Lyakhov (Обсуждение | вклад)
(Новая: {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником ~~~~}} {{TOCright}} '''Токениза́ция...)
К следующему изменению →

Версия 15:13, 1 июля 2026

Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Iaroslav Lyakhov 19:13, 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. — 2018.
Личные инструменты