Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Tokenización, embeddings y vectores, Unidad 5 — De tokens a vectores, 5.2 — Representaciones distribuidas ·

Información distribuida

Información distribuida

Introducción

La representación de información en forma de vectores es un pilar fundamental para la comprensión y procesamiento del lenguaje natural. Cuando hablamos de representaciones distribuidas, nos referimos a métodos que asignan una representación numérica a cada palabra o token, permitiendo modelar su significado a través de patrones en el espacio vectorial. Este paradigma es crucial para la implementación efectiva de modelos de lenguaje modernos y la realización de tareas de procesamiento del lenguaje natural (NLP) complejas.

Explicación principal

Concepto básico: Información distribuida

La idea detrás de las representaciones distribuidas es que el significado de una palabra no se encuentra en un solo atributo, sino en su relación con otras palabras a través del lenguaje. Esto se logra mediante la asignación de vectores numéricos a cada palabra, donde cada dimensión del vector refleja diferentes aspectos de la palabra.

Ejemplo: Word2Vec

Una forma clásica de generar representaciones distribuidas es utilizando el modelo Word2Vec, que se basa en dos técnicas principales:

  • CBOW (Continuous Bag of Words):
  • Contexto a la derecha y a la izquierda.
  • Predice una palabra dada su contexto.
  • Skip-gram:
  • Inverso de CBOW: predice el contexto dado una palabra.

En ambos casos, el objetivo es minimizar el error en la predicción del contexto o la palabra. A continuación, se muestra un ejemplo simplificado con un bloque de código corto:

from gensim.models import Word2Vec

# Supongamos que tenemos una lista de oraciones preprocesadas y tokenizadas
sentences = [["hola", "mundo"], ["adios", "mundo"], ["buenas", "noches"]]

# Entrenamos el modelo Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)

# Visualización de la representación vectorial de 'hola'
print(model.wv["hola"])

Ejemplo: GloVe

Otra técnica popular es GloVe (Global Vectors for Word Representation). En lugar de aprender directamente los vectores desde el contexto, GloVe utiliza una matriz global para aprender las relaciones entre palabras.

from glove import Corpus, Glove

# Entrenamos el modelo GloVe
corpus = Corpus()
corpus.fit(sentences, window=5)
glove = Glove(no_components=100, learning_rate=0.05)
glove.fit(corpus.matrix, epochs=30, no_threads=4, verbose=True)

# Visualización de la representación vectorial de 'hola'
print(glove.word_vectors[glove.dictionary["hola"]])

Ejemplo: FastText

FastText es una variante del Word2Vec que usa subpalabras (n-grams) para mejorar el rendimiento. Esto permite manejar mejor las palabras no vistas en el conjunto de entrenamiento.

from fasttext import FastText

# Entrenamos el modelo FastText
model = FastText(sentences, vector_size=100, window=5, min_count=1)

# Visualización de la representación vectorial de 'hola'
print(model.wv["hola"])

Errores típicos / trampas

Trampa 1: Falta de contexto

Una de las limitaciones más comunes es que las representaciones distribuidas basadas en palabras (como Word2Vec) pueden no reflejar bien el significado contextual. Por ejemplo, una palabra puede tener múltiples sentidos (polisemia), y estas técnicas solo pueden capturar uno.

print(model.wv.most_similar("bank"))

Trampa 2: Bordes de palabras

Las representaciones distribuidas a menudo fallan en manejar correctamente las palabras que están al borde del vocabulario, especialmente si son nuevas o no vistos durante el entrenamiento.

print(model.wv.most_similar("nuevapalabra"))

Trampa 3: Sesgos y sesgo cultural

Los embeddings pueden reflejar los sesgos culturales presentes en el conjunto de datos de entrenamiento. Por ejemplo, un modelo podría asumir que "doctor" es más frecuente que "enfermera", lo cual puede llevar a resultados sesgados.

print(model.wv.most_similar("doctor"))

Checklist accionable

  1. Entender el modelo: Familiarízate con Word2Vec, GloVe y FastText, comprendiendo cómo funcionan y sus ventajas e inconvenientes.
  2. Preprocesamiento del texto: Asegúrate de preprocesar adecuadamente tu texto antes de entrenar los modelos (tokenización, eliminación de stop words, etc.).
  3. Hiperparámetros: Experimenta con diferentes hiperparámetros para optimizar el rendimiento.
  4. Validación cruzada: Utiliza validación cruzada para evaluar la calidad de las representaciones generadas.
  5. Analizar sesgos: Evalúa y mitigas los posibles sesgos en tus modelos.

Siguientes pasos

  • Explora más técnicas: Aprende sobre embeddings contextuales, como BERT o ELMo, que pueden capturar mejor el significado contextual.
  • Implementa en proyectos: Aplica estas técnicas a proyectos reales para ver cómo mejoran la precisión de tus modelos NLP.
  • Mitiga sesgos: Aprende y aplica estrategias para mitigar los sesgos en tus modelos.

Última actualización: 2025-12-26

Contacto

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