Нормализация и предварительная токенизация

Урок 70 из 104 курса «HuggingFace: курс по Transformers»: официальный курс Hugging Face Learn (Хаггинг Фейс) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Прежде чем мы более подробно рассмотрим три наиболее распространенных алгоритма токенизации подслов, используемых в моделях Transformer (Byte-Pair Encoding [BPE], WordPiece и Unigram), мы сначала рассмотрим предварительную обработку, которую каждый токенизатор применяет к тексту. Вот высокоуровневый обзор этапов конвейера токенизации: Перед тем как разбить текст на подтокены (в соответствии со выбранной моделью), токенизатор выполняет два шага: нормализацию и претокенизацию. Шаг нормализации включает в себя некоторую общую очистку, например, удаление ненужных пробельных символов, понижение регистра и/или удаление ударений. Если вы знакомы с Unicode normalization (например, NFC или NFKC), это также может быть применено токенизатором. У 🤗 Transformers tokenizer есть атрибут backend_tokenizer, который предоставляет доступ к базовому токенизатору из библиотеки 🤗 Tokenizers: Атрибут normalizer объекта tokenizer имеет метод normalize_str(), который мы можем использовать, чтобы увидеть, как выполняется нормализация: В этом примере, поскольку мы выбрали контрольную точку bert-base-uncased, нормализация применила нижний регистр и удалила ударения. [!TIP] ✏️ Попробуйте! Загрузите токенизатор из контрольной точки bert-base-cased и передайте ему тот же пример. Какие основные различия вы можете увидеть между версией токенизатора cased и uncased? Как мы увидим в следующих разделах, токенизатор не может быть обучен только на сыром тексте. Сначала необходимо разбить текст на небольшие части, например, на слова. Именно в этом и заключается этап предварительной токенизации. Как мы видели в Главе 2, токенизатор на основе слов (word-based tokenizer) может просто разбить необработанный текст на слова по пробелам и знакам пунктуации. Эти слова станут границами подтокенов, которые токенизатор сможет выучить в процессе обучения. Чтобы увидеть, как быстрый токенизатор выполняет предварительную токенизацию, мы можем воспользоваться методом pre_tokenize_str() атрибута pre_tokenizer объекта tokenizer: Обратите внимание, что токенизатор уже следит за смещениями, и именно поэтому он может дать нам сопоставление смещений, которое мы использовали в предыдущем разделе. Здесь токенизатор игнорирует два пробела и заменяет их одним, но смещение перескакивает между are и you, чтобы учесть это.

План урока

  1. Нормализация
  2. Предварительная токенизация
  3. SentencePiece
  4. Обзор алгоритма

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды