Токенизация — обработка текста для машинного обучения¶
Токенизация — это процесс разбиения исходного текста на минимальные смысловые единицы — токены, которые затем используются как входные данные для обработки естественного языка (NLP), машинного обучения и больших языковых моделей. Токеном может быть отдельное слово, часть слова, символ или субслово; именно токены, а не исходный текст, становятся тем материалом, с которым работают алгоритмы.
¶Основные понятия
Токен (от англ. token) — это условная единица текста, на которую алгоритм разбивает входную строку. В простейшем случае токен соответствует слову, выделенному по пробелам и знакам препинания. Однако в реальных системах обработки текста границы токенов определяются сложнее: учитываются суффиксы, префиксы, морфологические изменения, сокращения и специальные символы.
Ключевые характеристики токенизации:
- Гранулярность — уровень разбиения: по словам, по субсловам (частям слов), по символам или по байтам.
- Словарь токенов — фиксированный набор всех возможных токенов, которые модель умеет распознавать.
- Индексация — присвоение каждому токену числового идентификатора, понятного компьютеру.
¶Виды токенизации
¶Токенизация по словам
Классический подход: текст разбивается по пробелам и знакам препинания. Так работают, например, токенизаторы в NLTK, spaCy и Word2Vec. Достоинство метода — интуитивная понятность: токен соответствует слову. Недостаток — словарь может разрастись до сотен тысяч и даже миллионов единиц, а редкие слова, встречающиеся один раз, не дают модели статистически значимых данных.
¶Байтовый уровень BPE (Byte Pair Encoding)
Метод сжатия словаря, изначально предложенный для сжатия данных и позже адаптированный для NLP. Алгоритм начинает с символов (или байтов) и итеративно объединяет самые частотные пары соседних символов, постепенно формируя токены-подслова. Такой подход позволяет покрыть любую последовательность символов при ограниченном словаре (обычно 30–100 тысяч токенов). BPE лежит в основе токенизаторов GPT, RoBERTa и множества других моделей.
¶WordPiece
Вариант субслововой токенизации, применяемый в BERT и его производных. Алгоритм похож на BPE, но при объединении выбираются не самые частотные пары, а те, которые максимизируют правдоподобие обучающей выборки. Результат визуально похож на BPE: слова разбиваются на части с маркером «##» в начале продолжений.
¶SentencePiece и морфологические методы
Библиотека SentencePiece (Google) токенизирует текст, не требуя предварительного разбиения на слова, что удобно для языков без пробелов между словами — японского, китайского, тайского. Для русского языка, с его богатой морфологией, субслововая токенизация особенно полезна: слова вроде «преобразование», «преобразовывать», «преобразователь» разбиваются на общие корневые части, что помогает модели обобщать.
¶Токенизация по символам и байтам
Разбиение текста на отдельные символы или байты. Такой подход гарантирует отсутствие «неизвестных» токенов, но последовательности становятся очень длинными, что увеличивает вычислительные затраты.
¶Токенизация в больших языковых моделях
Современные LLM (GPT-3, GPT-4, LLaMA, YandexGPT, «Гигачат» и другие) работают именно с токенами, а не со словами. Длина контекста модели измеряется в токенах: например, GPT-4 поддерживает до 128 тысяч токенов в контексте. Стоимость обращения к API таких моделей также обычно тарифицируется за токен входа и выхода.
Для русского языка эффективность токенизатора имеет особое значение: из-за богатой системы склонений и словообразования один и тот же корень может порождать десятки форм, каждая из которых при словесной токенизации занимала бы отдельный слот словаря. Субслововые методы решают эту проблему, разбивая слово на узнаваемые морфемы.
¶Применение
Токенизация применяется во всех задачах обработки естественного языка:
- классификация текстов и анализ тональности;
- машинный перевод;
- информационный поиск и поисковые системы;
- распознавание речи и синтез речи;
- чат-боты и ассистенты;
- анализ кода и обработка программных текстов.
В российских NLP-системах, включая разработки для государственных и корпоративных задач, токенизация русскоязычного текста выполняется с учётом морфологической модели языка; для этого используются как открытые библиотеки (Natasha, pymorphy2, YooToken), так и проприетарные решения.
¶Проблемы и ограничения
Токенизация не является нейтральным преобразованием: выбор токенизатора влияет на качество модели. Слишком мелкие токены удлиняют последовательности и замедляют обучение; слишком крупные — раздувают словарь и ухудшают обобщение. Отдельную сложность представляют заимствования, имена собственные, эмодзи и смешанные письменности (например, русский текст с вкраплениями латиницы).
Исторически токенизация развивалась вместе с методами машинного обучения: от простого разбиения по пробелам в задачах статистического перевода (2000-е годы) до сложных субслововых алгоритмов в эпоху трансформеров (2010-е — 2020-е).
Источники:
- Jurafsky D., Martin J. H. Speech and Language Processing
- Sennrich R., Haddow B., Birch A. Neural Machine Translation of Rare Words with Subword Units (2016)
- Kudo T., Richardson J. SentencePiece (2018)
- Википедия: обработка естественного языка, большие языковые модели
