В этом уроке мы узнаем, как создать пользовательский токенизатор, используя Тиктокен библиотека. Процесс включает загрузку предварительно обученной модели токенизатора, определение как базовых, так и специальных токенов, инициализацию токенизатора с конкретным регулярным выражением для расщепления токенов и тестирование его функциональности путем кодирования и декодирования некоторого образца текста. Эта настройка необходима для задач NLP, требующих точного контроля над текстовой токенизацией.
from pathlib import Path
import tiktoken
from tiktoken.load import load_tiktoken_bpe
import json
Здесь мы импортируем несколько библиотек, необходимые для обработки текста и машинного обучения. Он использует путь от Pathlib для удобного управления путем файла, в то время как Tiktoken и Load_tiktoken_bpe облегчает загрузку и работу с токенизатором пары байтов.
tokenizer_path = "./content/tokenizer.model"
num_reserved_special_tokens = 256
mergeable_ranks = load_tiktoken_bpe(tokenizer_path)
num_base_tokens = len(mergeable_ranks)
special_tokens = (
"<|begin_of_text|>",
"<|end_of_text|>",
"<|reserved_special_token_0|>",
"<|reserved_special_token_1|>",
"<|finetune_right_pad_id|>",
"<|step_id|>",
"<|start_header_id|>",
"<|end_header_id|>",
"<|eom_id|>",
"<|eot_id|>",
"<|python_tag|>",
)
Здесь мы установили путь к модели токенизатора, указав 256 зарезервированных специальных токенов. Затем он загружает слиятельные ряды, которые образуют базовый словарный запас, вычисляют количество базовых токенов и определяют список специальных токенов для маркировки границ текста и других зарезервированных целей.
reserved_tokens = (
f"<|reserved_special_token_{2 + i}|>"
for i in range(num_reserved_special_tokens - len(special_tokens))
)
special_tokens = special_tokens + reserved_tokens
tokenizer = tiktoken.Encoding(
name=Path(tokenizer_path).name,
pat_str=r"(?i:'s|'t|'re|'ve|'m|'ll|'d)|(^rnp{L}p{N})?p{L}+|p{N}{1,3}| ?(^sp{L}p{N})+(rn)*|s*(rn)+|s+(?!S)|s+",
mergeable_ranks=mergeable_ranks,
special_tokens={token: len(mergeable_ranks) + i for i, token in enumerate(special_tokens)},
)
Теперь мы динамически создаем дополнительные зарезервированные токены для достижения 256, а затем добавим их в предопределенный список специальных токенов. Он инициализирует токенизатор, используя Tiktoken. Кодирование с указанным регулярным выражением для разделения текста, загруженные слияние в качестве базового словаря и отображение специальных токенов с уникальными идентификаторами токенов.
#-------------------------------------------------------------------------
# Test the tokenizer with a sample text
#-------------------------------------------------------------------------
sample_text = "Hello, this is a test of the updated tokenizer!"
encoded = tokenizer.encode(sample_text)
decoded = tokenizer.decode(encoded)
print("Sample Text:", sample_text)
print("Encoded Tokens:", encoded)
print("Decoded Text:", decoded)
Мы тестируем токенизатор, кодируя пример текста в идентификаторы токенов, а затем декодируя эти идентификаторы обратно в текст. Он печатает исходный текст, закодированные токены и декодированный текст, чтобы подтвердить, что токенизатор работает правильно.
Здесь мы кодируем строку «Hey» в соответствующие идентификаторы токенов, используя метод кодирования токенизатора.
В заключение, после этого учебника научит вас, как настроить пользовательский токенизатор BPE с использованием библиотеки Tiktoken. Вы видели, как загрузить предварительно обученную модель токенизатора, определить как базовые, так и специальные токены и инициализировать токенизатор с определенным регулярным выражением для расщепления токенов. Наконец, вы проверили функциональность токенизатора, кодируя и декодируя образцы текста. Эта настройка является фундаментальным шагом для любого проекта НЛП, который требует индивидуальной обработки текста и токенизации.
Вот Колаб ноутбук Для вышеуказанного проекта. Кроме того, не забудьте следовать за нами Twitter и присоединиться к нашему Телеграмма канал и LinkedIn GrукПолем Не забудьте присоединиться к нашему 75K+ ML SubredditПолем
🚨 Рекомендуемая платформа для ИИ с открытым исходным кодом: «Intellagent-это многоагентная среда с открытым исходным кодом для оценки сложной разговорной системы ИИ‘ (Продвигается)
ASIF Razzaq является генеральным директором Marktechpost Media Inc. как дальновидного предпринимателя и инженера, ASIF стремится использовать потенциал искусственного интеллекта для социального блага. Его последнее усилие-запуск медиа-платформы искусственного интеллекта, Marktechpost, которая выделяется благодаря глубокому освещению машинного обучения и новостей о глубоком обучении, которое является технически обоснованным и легко понятным для широкой аудитории. Платформа может похвастаться более чем 2 миллионами ежемесячных просмотров, иллюстрируя свою популярность среди зрителей.
🚨 Рекомендуемая платформа искусственного интеллекта с открытым исходным кодом: «Intellagent-это многоагентная структура с открытым исходным кодом для оценки сложной разговорной системы ИИ» (PROMOTED)