Representaciones dependientes del contexto
Introducción
En la transformación del texto a números, los embeddings clásicos como Word2Vec o GloVe han demostrado ser un gran avance. Sin embargo, estos métodos presentan una limitación significativa: no capturan el contexto en que se utilizan las palabras. Por ejemplo, la palabra "bolsa" puede referirse a una bolsa de plástico, una bolsa de dinero o incluso a la Bolsa de Valores. Los embeddings clásicos tratan estas instancias como si fueran la misma cosa, lo cual es insuficiente para muchas aplicaciones del lenguaje natural (NLP).
En esta unidad, exploraremos cómo los embeddings basados en modelos, que dependen del contexto, pueden resolver este problema y mejorar significativamente el rendimiento de las tareas de NLP.
Explicación principal
Contexto vs. embedding clásico
Los embeddings clásicos como Word2Vec o GloVe se entrenan a partir de grandes volúmenes de texto sin considerar el contexto en que aparecen las palabras. Por ejemplo, en Word2Vec, se aprenden embeddings para cada palabra basándose en la frecuencia con la que aparece junto a otras palabras en el texto. Esto significa que "bolsa" siempre será representada por el mismo vector, independientemente del contexto.
En contraste, los embeddings basados en modelos como BERT, al entrenarse en grandes volúmenes de texto, aprenden a capturar el contexto en que se utilizan las palabras. Por ejemplo, BERT puede distinguir entre "bolsa" en "bolsa de plástico", "bolsa de dinero" y "Bolsa de Valores".
Ejemplo con BERT
BERT (Bidirectional Encoder Representations from Transformers) es uno de los modelos más conocidos que aprenden embeddings basados en contexto. Aquí te presentamos un ejemplo breve de cómo funciona:
from transformers import BertTokenizer, BertModel
import torch
# Cargamos el tokenizer y el modelo preentrenado BERT
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
# Texto de ejemplo
text = "Bolsa"
# Tokenizamos el texto
inputs = tokenizer(text, return_tensors='pt')
# Pasamos las entradas al modelo BERT
outputs = model(**inputs)
# Extraemos embeddings del último capa (pooler_output)
embeddings = outputs.last_hidden_state
print(embeddings.shape) # Salida: torch.Size([1, 1, 768])
En este ejemplo, model(**inputs) devuelve una salida con múltiples embeddings para cada token en el texto. Estos embeddings incluyen información sobre el contexto en que aparece la palabra "bolsa".
Errores típicos / trampas
- Entender mal cómo funciona BERT: A menudo, los desarrolladores esperan que BERT se comporte como un simple embedding de palabras sin considerar el contexto. Esto es incorrecto y puede llevar a malentendidos sobre la naturaleza del modelo.
- No tener en cuenta la longitud máxima del texto: BERT tiene una longitud máxima de entrada preestablecida (por defecto, 512 tokens). Si excede esta longitud, el modelo no funciona correctamente y puede generar errores o resultados inexactos.
- Ignorar la importancia de los embeddings preentrenados: Aunque BERT es muy potente, a menudo se utilizan embeddings preentrenados que ya contienen conocimiento general del lenguaje. Ignorar estos embeddings preentrenados puede resultar en un modelo menos efectivo.
Checklist accionable
- Entender cómo funciona BERT: Investiga y entiende la arquitectura de BERT, especialmente cómo procesa y utiliza el contexto.
- Ajustar parámetros según la longitud del texto: Asegúrate de que tu modelo no supera la longitud máxima permitida por BERT (512 tokens).
- Utilizar embeddings preentrenados adecuadamente: Si estás utilizando BERT, asegúrate de utilizar sus embeddings preentrenados correctamente.
- Validar tus resultados: Verifica los resultados del modelo en varios ejemplos para asegurarte de que el contexto está siendo capturado correctamente.
- Tener en cuenta la complejidad computacional: Asegúrate de tener suficientes recursos para entrenar y usar modelos como BERT, ya que son computacionalmente intensivos.
Cierre: Siguientes pasos
- Explora otros modelos de embeddings basados en contexto: Existen muchos modelos más allá de BERT, como RoBERTa o XLNet, que también pueden ser útiles dependiendo del problema.
- Aplica embeddings basados en contexto a tus proyectos actuales: Si estás trabajando en un proyecto NLP, considera cómo podrían beneficiarse de los embeddings basados en contexto.
- Investiga sobre sesgos y mitigación: Asegúrate de que tus modelos no refuercen sesgos negativos al capturar el contexto.
Recursos recomendados
Glosario (opcional)
- BERT: Modelo preentrenado bidireccional para el procesamiento del lenguaje natural.
- Embeddings basados en contexto: Métodos que utilizan la información contextual al entrenar embeddings de palabras.
Créditos
Última actualización: 2025-12-26