Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Tokenización, embeddings y vectores, Unidad 3 — Tokenización moderna, 3.2 — Tokenización en modelos reales ·

Tokens especiales

Tokens especiales

Introducción

La tokenización moderna no es solo una forma de dividir el texto en unidades más pequeñas, sino que también implica la introducción de tokens especiales para abordar problemas complejos como la polisemia y el contexto del lenguaje. Estos tokens especializados son cruciales para mejorar la precisión y eficacia de los modelos de procesamiento del lenguaje (NLP). En esta unidad, exploraremos cómo funcionan estos tokens especiales y cómo pueden mejorarse las representaciones del texto en modelos modernos.

Explicación principal

Los tokens especiales son símbolos específicos que se añaden a la secuencia de tokens generales durante el proceso de tokenización. Estos tokens tienen significados predefinidos dentro del contexto del modelo y sirven para abordar problemas como la polisemia, la identificación de posiciones o roles en las oraciones, y el manejo de diferentes tipos de datos.

Ejemplos de Tokens Especiales

  1. [CLS] (Classification): Este token se utiliza principalmente en tareas de clasificación del texto completo, como detectar si un tweet es positive o negative. En Google BERT, este token se coloca al principio de la secuencia de entrada y el modelo genera una representación única para el "contexto global" basada en sus relaciones con los demás tokens.
  1. [SEP] (Separation): Se usa principalmente en tareas que requieren comparar dos oraciones, como la clasificación binaria de pares de frases. Este token ayuda a delimitar las dos secuencias de entrada y permite al modelo entender el contexto relativo entre ellas.
  1. [MASK]: En modelos como BERT, este token es reemplazado por una máscara durante la entrenamiento para predecir los tokens originales, lo que ayuda en tareas de llenado de palabras perdidas (masked language modeling).
  1. [PAD]: Usado para padding o relleno, se añade a las secuencias más cortas para asegurar que todas las secuencias tienen la misma longitud. Esto es particularmente útil cuando se usa una función de optimización como el Adam en entrenamiento.
  1. [UNK] (Unknown): Este token representa cualquier palabra desconocida o fuera del vocabulario predefinido. Es una forma de manejar palabras nuevas o raras que no están presentes en el vocabulario del modelo, permitiendo al modelo hacer su mejor predicción posible basándose en el contexto.

Ejemplo de Uso

A continuación se muestra un ejemplo corto de cómo estos tokens especiales podrían ser utilizados en la tokenización de una oración con el uso de PyTorch y el modelo BERT de Hugging Face:

from transformers import BertTokenizer, BertModel
import torch

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

input_text = "Los tokens especiales son cruciales para mejorar la precisión y eficacia de los modelos NLP."
inputs = tokenizer(input_text, return_tensors='pt', padding=True, truncation=True, max_length=128)

# Agregar tokens especiales
cls_token_id = tokenizer.cls_token_id
sep_token_id = tokenizer.sep_token_id
mask_token_id = tokenizer.mask_token_id

inputs['input_ids'][0] = [cls_token_id] + inputs['input_ids'][0] + [sep_token_id]
inputs['input_ids'][-1, -2:] = mask_token_id

# Crear la máscara de atención para el token [MASK]
attention_mask = torch.ones(inputs['input_ids'].shape)

outputs = model(**inputs)

Errores típicos / trampas

1. No entender el propósito y las diferencias entre los tokens especiales

Cada tipo de token especial tiene un papel específico en el modelo, y confundir su uso puede llevar a malinterpretaciones del texto.

2. Olvidar padding o no usarlo correctamente

No todas las oraciones tienen la misma longitud, por lo que es importante padpear para que todas tengan la misma longitud. No hacerlo o hacerlo incorrectamente puede afectar negativamente el rendimiento del modelo.

3. Ignorar la importancia de los tokens [CLS] y [SEP]

Es fácil pasar por alto estos tokens porque son menos visibles, pero su correcto uso es fundamental para tareas como clasificación binaria o comparación de oraciones.

Checklist accionable

  1. Revisa el vocabulario del modelo: Asegúrate de entender qué tokens especiales están disponibles y cómo se usan.
  2. Ajusta la longitud de las secuencias: Usa padding adecuadamente para asegurar que todas las secuencias tengan la misma longitud.
  3. Identifica correctamente los tokens [CLS] y [SEP]: Verifica su posición en cada oración y asegúrate de que estén siendo utilizados según el propósito del modelo.
  4. Utiliza tokens [MASK] para entrenamiento: Asegúrate de que los tokens [MASK] están siendo reemplazados correctamente durante la fase de entrenamiento.
  5. Ejecuta comprobaciones de polisemia: Verifica si los tokens especiales ayudan a resolver problemas específicos de polisemia en tu tarea.

Cierre

Siguientes pasos

  • Profundiza en la tokenización moderna: Aprende sobre subword tokenization y cómo funciona BPE, WordPiece, y otros algoritmos.
  • Explora modelos de lenguaje basados en embeddings: Comienza a trabajar con modelos como BERT o RoBERTa para mejorar la precisión del procesamiento del lenguaje.
  • Prueba diferentes arquitecturas: Experimenta con diferentes arquitecturas NLP y ve cuáles mejoran la precisión en tu tarea específica.

Asegúrate de tener en cuenta estos aspectos al trabajar con tokens especiales para mejorar la representación y el procesamiento del lenguaje en tus aplicaciones.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).