Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Tokenización, embeddings y vectores, Unidad 6 — Word embeddings clásicos, 6.2 — GloVe y FastText ·

Co-ocurrencias globales

Co-ocurrencias globales: GloVe y FastText

Introducción

En la transformación de texto a números, los embeddings son una herramienta fundamental para representar palabras de manera numérica. Mientras que Word2Vec es uno de los modelos más conocidos en esta tarea, GloVe (Global Vectors for Word Representation) y FastText ofrecen alternativas distintas y valiosas. Este artículo se centra en GloVe y FastText, explorando cómo estos modelos utilizan co-ocurrencias globales para crear embeddings eficaces.

Explicación principal con ejemplos

GloVe: Global Vectors for Word Representation

GloVe es un algoritmo que utiliza la co-ocurrencia de palabras en un cuerpo corpora de texto para construir embeddings. La idea subyacente es que palabras con significados similares o relacionados se encuentran frecuentemente en la misma oración, y viceversa.

Proceso básico

  1. Cálculo de co-ocurrencias: Se calcula cuántas veces cada par de palabras aparece juntas en el texto.
  2. Función de pérdida: La pérdida se define como una combinación de las frecuencias de ocurrencia de una palabra y la co-ocurrencia entre dos palabras.

Ejemplo

Supongamos un pequeño cuerpo corpora:

Yo amo a mi gato
Gato es mi mejor amigo

La matriz de co-ocurrencias sería algo así (simplificada):

| | Yo | amo | a | mi | gato | mejor | amigo | |------|-----|-----|-----|-----|------|-------|-------| | Yo | - | 1 | 0 | 1 | 0 | 0 | 0 | | amo| 1 | - | 0 | 0 | 0 | 0 | 0 | | a | 0 | 0 | - | 0 | 0 | 0 | 0 | | mi | 1 | 0 | 0 | - | 1 | 0 | 0 | | gato| 0 | 0 | 0 | 1 | - | 0 | 0 | | mejor| 0 | 0 | 0 | 0 | 0 | - | 1 | | amigo| 0 | 0 | 0 | 0 | 0 | 1 | - |

La matriz de co-ocurrencias se normaliza y se ajusta a un modelo que minimiza la pérdida.

FastText: Embeddings en subpalabras

FastText, por otro lado, es un método desarrollado por Facebook para crear embeddings mejorando sobre Word2Vec. La principal diferencia es que FastText traza embeddings no solo a nivel de palabras sino también a nivel de subpalabras (subwords).

Proceso básico

  1. Tokenización: Se tokeniza el texto en palabras y subpalabras.
  2. Carga de embeddings pre-entrenados o entrenamiento desde cero.

Ejemplo

Si tenemos la palabra "gatito", FastText tratará a "gato" y "it" como dos tokens separados, lo que permite mejorar el contexto en el cual cada subpalabra aparece.

Implementación con código

A continuación se muestra un ejemplo de cómo entrenar embeddings usando GloVe:

import glove
from glove import Corpus, Glove

# Cargar datos
corpus = Corpus()
corpus.fit(sentences, window=5)

# Entrenar el modelo
glove_model = Glove(no_components=100, learning_rate=0.05)
glove_model.fit(corpus.matrix, epochs=30, no_threads=4, verbose=True)

# Acceder a los embeddings de una palabra
word_vectors = glove_model.word_vectors
print(word_vectors['gato'])

Para FastText:

from fasttext import FastText

# Entrenar el modelo
model = FastText(sentences, min_count=1)
print(model.wv['gato'])

Errores típicos / trampas

  1. Subpalabras no incluidas: Ambos modelos dependen de una buena tokenización y subtokenización. Si las palabras están mal tokenizadas o se omite la subtokenización, el rendimiento puede disminuir.
  2. Co-ocurrencias locales vs globales: GloVe tiende a capturar relaciones globales entre palabras pero puede ser sensible al contexto local. FastText se centra en subpalabras, lo que puede ser útil para mejorar la representación de palabras raras o mal tokenizadas.
  3. Recursos computacionales: El entrenamiento de estos modelos requiere considerable capacidad de procesamiento y tiempo. Se debe tener cuidado con los recursos disponibles.

Checklist accionable

  1. Verificar la calidad del corpus: Un buen corpus es crucial para el éxito de GloVe y FastText.
  2. Optimizar parámetros: Experimente con diferentes configuraciones, como la dimensión del vector y la ventana de co-ocurrencias.
  3. Evaluar el modelo: Use métricas adecuadas para evaluar el rendimiento del modelo en tareas específicas.
  4. Manejo de subpalabras: Si se utiliza FastText, asegúrese de que las palabras y subpalabras estén correctamente tokenizadas.
  5. Normalización: Normalice los embeddings antes de su uso, especialmente si se utilizan para comparaciones o clasificaciones.

Cierre con "Siguientes pasos"

Siguientes pasos

  1. Explorar modelos más avanzados: Después de dominar GloVe y FastText, explore modelos como BERT u otros transformers que ofrecen representaciones contextuales.
  2. Aprender NLP con Deep Learning: En profundidad el procesamiento del lenguaje natural utilizando técnicas de aprendizaje profundo.
  3. Implementación en proyectos reales: Aplica los conocimientos adquiridos a proyectos prácticos, mejorando la representación del texto en tu sistema.

Con estos conocimientos y estrategias, estás equipado para mejorar significativamente la representación numérica de palabras en tus aplicaciones de procesamiento del lenguaje natural.

Contacto

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