Токенизация

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником ~~~~}} {{TOCright}} '''Токениза́ция...)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 19:13, 1 июля 2026 (MSD)}}
+
{{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 21:38, 1 июля 2026 (MSD)}}
{{TOCright}}
{{TOCright}}
Строка 37: Строка 37:
== Литература ==
== Литература ==
* {{статья |автор=Sennrich R., Haddow B., Birch A. |часть=Neural Machine Translation of Rare Words with Subword Units |заглавие=Proc. of ACL |год=2016 |ссылка=https://arxiv.org/abs/1508.07909}}
* {{статья |автор=Sennrich R., Haddow B., Birch A. |часть=Neural Machine Translation of Rare Words with Subword Units |заглавие=Proc. of ACL |год=2016 |ссылка=https://arxiv.org/abs/1508.07909}}
-
* {{статья |автор=Kudo T., Richardson J. |часть=SentencePiece: A simple and language independent subword tokenizer and detokenizer |заглавие=Proc. of EMNLP |год=2018 |ссылка=https://arxiv.org/abs/1808.06226}}
+
* {{статья |автор=Kudo T., Richardson J. |часть=SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing |заглавие=Proc. of EMNLP (System Demonstrations) |год=2018 |ссылка=https://arxiv.org/abs/1808.06226}}
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Анализ текстов]]
[[Категория:Анализ текстов]]

Текущая версия

Статья написана с использованием 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.
Личные инструменты