1. Tokenizing
Токенізація
Токенізація — це процес розбиття даних, таких як текст, на менші, керовані частини, звані токенами. Кожному токену присвоюється унікальний числовий ідентифікатор (ID). Це основний крок у підготовці тексту для обробки моделями машинного навчання, особливо в обробці природної мови (NLP).
Мета цього початкового етапу дуже проста: Розділіть вхідні дані на токени (id) таким чином, щоб це мало сенс.
Як працює токенізація
Розбиття тексту:
Базовий токенізатор: Простий токенізатор може розбити текст на окремі слова та знаки пунктуації, видаляючи пробіли.
Приклад: Текст:
"Привіт, світе!"
Токени:["Привіт", ",", "світе", "!"]
Створення словника:
Щоб перетворити токени на числові ID, створюється словник. Цей словник містить усі унікальні токени (слова та символи) і присвоює кожному конкретний ID.
Спеціальні токени: Це спеціальні символи, додані до словника для обробки різних сценаріїв:
[BOS]
(Початок послідовності): Вказує на початок тексту.[EOS]
(Кінець послідовності): Вказує на кінець тексту.[PAD]
(Доповнення): Використовується для того, щоб усі послідовності в партії мали однакову довжину.[UNK]
(Невідомий): Представляє токени, які не входять до словника.Приклад: Якщо
"Привіт"
отримує ID64
,","
—455
,"світе"
—78
, а"!"
—467
, тоді:"Привіт, світе!"
→[64, 455, 78, 467]
Обробка невідомих слів: Якщо слово, наприклад,
"Бувай"
, не входить до словника, його замінюють на[UNK]
."Бувай, світе!"
→["[UNK]", ",", "світе", "!"]
→[987, 455, 78, 467]
&#xNAN;(Припускаючи, що[UNK]
має ID987
)
Розширені методи токенізації
Хоча базовий токенізатор добре працює для простих текстів, він має обмеження, особливо з великими словниками та обробкою нових або рідкісних слів. Розширені методи токенізації вирішують ці проблеми, розбиваючи текст на менші підодиниці або оптимізуючи процес токенізації.
Кодування пар байтів (BPE):
Мета: Зменшує розмір словника та обробляє рідкісні або невідомі слова, розбиваючи їх на часто вживані пари байтів.
Як це працює:
Починає з окремих символів як токенів.
Ітеративно об'єднує найбільш часті пари токенів в один токен.
Продовжує, поки не залишиться жодної частої пари, яку можна об'єднати.
Переваги:
Вилучає необхідність у токені
[UNK]
, оскільки всі слова можуть бути представлені шляхом об'єднання існуючих підсловникових токенів.Більш ефективний і гнучкий словник.
Приклад:
"граючи"
може бути токенізовано як["грати", "ючи"]
, якщо"грати"
та"ючи"
є частими підсловами.
WordPiece:
Використовується: Моделями, такими як BERT.
Мета: Подібно до BPE, розбиває слова на підсловникові одиниці для обробки невідомих слів і зменшення розміру словника.
Як це працює:
Починає з базового словника окремих символів.
Ітеративно додає найбільш часте підслово, яке максимізує ймовірність навчальних даних.
Використовує ймовірнісну модель для визначення, які підслова об'єднувати.
Переваги:
Балансує між наявністю керованого розміру словника та ефективним представленням слів.
Ефективно обробляє рідкісні та складні слова.
Приклад:
"незадоволеність"
може бути токенізовано як["незадоволення", "ість"]
або["незадоволення", "н", "ість"]
залежно від словника.
Модель мови Unigram:
Використовується: Моделями, такими як SentencePiece.
Мета: Використовує ймовірнісну модель для визначення найбільш ймовірного набору підсловникових токенів.
Як це працює:
Починає з великого набору потенційних токенів.
Ітеративно видаляє токени, які найменше покращують ймовірність моделі навчальних даних.
Завершує словник, де кожне слово представлено найбільш ймовірними підсловниковими одиницями.
Переваги:
Гнучка і може моделювати мову більш природно.
Часто призводить до більш ефективних і компактних токенізацій.
Приклад:
"міжнародна діяльність"
може бути токенізовано на менші, значущі підслова, такі як["міжнародна", "діяльність"]
.
Приклад коду
Давайте зрозуміємо це краще з прикладу коду з https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
References
Last updated