alterna ai
ALTERNA AI / ГЛАВА 12 · 06

12.6 У разных словарей разные правила

На предыдущей странице: большой словарь и короткая последовательность.

Слово, часть слова и байт — возможные единицы разбиения. Название метода ещё не описывает весь контракт конкретного токенизатора.

Разбиение задаётся конкретным словарём и правилами. Байт, символ, слово и токен не обязаны совпадать. Полученный номер — адрес, а не числовой смысл слова.

Общее слово «токенизация» скрывает разные решения

Byte-level, character-level и word-level определяют начальные единицы; BPE определяет способ обучения/применения merges. WordPiece использует собственные правила словаря и сегментации, а SentencePiece — toolkit с несколькими моделями, не синоним одного алгоритма. L03 подтверждает работу с raw sentences, но готовые SentencePiece-модели здесь не загружаются.

Сравнительная лаборатория показывает UTF-8 bytes, Unicode code points, word-like regex chunks с сохранёнными пробелами и наш byte-BPE. Эти строки не называются результатом настоящего BERT/GPT tokenizer. Честное сравнение production tokenizers требует соответствующих словарей, normalization rules и версий.

Для a a byte/codepoint representations имеют3элемента. Разбиение по непустым словам без сохранения пробела дало бы2, но уже не позволяло бы восстановить точное форматирование. В нашем word-like baseline пробел тоже отдельный chunk.

Исследовать. Сравните одинаково выглядящие Unicode-записи и строки с несколькими пробелами. Какие различия исчезают при normalization, а какие сохраняются? Не переносите измеренное количество tokens одного алгоритма на другое context window.

Теперь IDs определены, но ещё не содержат геометрического представления. Следующий шаг — embedding lookup и обучение векторов.

import re
parts=re.findall(r'\S+|\s+','a a')
assert parts==['a',' ','a'] and ''.join(parts)=='a a'

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Word-like regex chunks не выдаются за WordPiece/SentencePiece.

Что делать с адресами, чтобы сеть могла сравнивать и преобразовывать представления?

Python-примеры главы 12 Академическая база →