En este tutorial, aprenderemos cómo crear un tokenizer personalizado utilizando el tiktoken biblioteca. El proceso implica cargar un modelo de tokenizador previamente capacitado, definir tokens base y especiales, inicializando el tokenizador con una expresión regular específica para la división del token y probando su funcionalidad codificando y decodificando algún texto de muestra. Esta configuración es esencial para las tareas de PNL que requieren un control preciso sobre la tokenización de texto.
from pathlib import Path
import tiktoken
from tiktoken.load import load_tiktoken_bpe
import json
Aquí, importamos varias bibliotecas esenciales para el procesamiento de texto y aprendizaje automático. Utiliza la ruta desde PathLib para una fácil administración de rutas de archivo, mientras que Tiktoken y Load_tiktoken_bpe facilitan la carga y el trabajo con un tokenizador de codificación de pares de bytes.
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|>",
]
Aquí, establecemos el camino al modelo de tokenizador, especificando 256 tokens especiales reservados. Luego carga los rangos fusionables, que forman el vocabulario base, calcula el número de tokens base y define una lista de tokens especiales para marcar los límites de texto y otros fines reservados.
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)},
)
Ahora, creamos dinámicamente tokens reservados adicionales para llegar a 256, luego los agregamos a la lista de tokens especiales predefinidos. Inicializa el tokenizador con tiktoken. Codificando con una expresión regular especificada para dividir el texto, los rangos fusionables cargados como vocabulario base y mapeo de tokens especiales a ID de token únicos.
#-------------------------------------------------------------------------
# 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)
Probamos el tokenizador codificando un texto de muestra en ID de tokens y luego decodificando esas ID en texto. Imprime el texto original, los tokens codificados y el texto decodificado para confirmar que el tokenizador funciona correctamente.
Aquí, codificamos la cadena “Hey” en sus ID de token correspondientes utilizando el método de codificación del tokenizer.
En conclusión, seguir este tutorial le enseñará cómo configurar un tokenizador BPE personalizado utilizando la Biblioteca Tiktoken. Vio cómo cargar un modelo de tokenizador previamente entrenado, definir tanto los tokens base como los tokens especiales, e inicializar el tokenizador con una expresión regular específica para la división de tokens. Finalmente, verificó la funcionalidad del tokenizador codificando y decodificando el texto de muestra. Esta configuración es un paso fundamental para cualquier proyecto NLP que requiere procesamiento y tokenización de texto personalizados.
Aquí está el Cuaderno de colab para el proyecto anterior. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 75k+ ml de subreddit.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.