En el tema anterior estudiamos Word2Vec, uno de los métodos más influyentes para aprender embeddings de palabras a partir del contexto local. Sin embargo, Word2Vec no fue el único enfoque importante dentro de los embeddings clásicos. También aparecieron otros métodos que buscaron construir buenos espacios vectoriales desde perspectivas algo diferentes.
Entre ellos, uno de los más conocidos es GloVe, que propone aprender embeddings a partir de estadísticas globales de coocurrencia. Además, otros enfoques como fastText introdujeron mejoras importantes para manejar mejor palabras raras o variación morfológica.
En este tema compararemos estas ideas para entender cómo evolucionaron los embeddings clásicos antes de la llegada de los modelos contextuales modernos.
Todos estos métodos compartían un objetivo general: aprender vectores densos que capturaran relaciones útiles entre palabras. Querían superar varias limitaciones de Bag of Words y TF-IDF, en especial:
Lo que cambia entre métodos como Word2Vec, GloVe o fastText es la forma en que aprenden esos vectores.
GloVe significa Global Vectors for Word Representation. Es un método para aprender embeddings de palabras utilizando información estadística global sobre coocurrencias dentro del corpus.
La intuición principal es que no solo importa qué palabras aparecen cerca de otras en ejemplos locales, sino también cómo se distribuyen globalmente sus relaciones de coocurrencia en todo el corpus.
En otras palabras, GloVe intenta construir embeddings aprovechando una visión más global de cómo se relacionan las palabras en la colección textual completa.
La idea de coocurrencia es central en GloVe. Dos palabras coocurren cuando aparecen cercanas dentro de cierto contexto. Si este patrón se repite muchas veces en el corpus, eso sugiere una relación útil entre ambas.
GloVe parte de una matriz de coocurrencias que resume cuántas veces las palabras aparecen cerca unas de otras. A partir de esa estructura, aprende embeddings que intentan reflejar esas relaciones globales de manera compacta.
La diferencia conceptual más importante entre GloVe y Word2Vec suele explicarse así:
Ambos llegan a vectores densos útiles, pero lo hacen con filosofías distintas. Word2Vec se apoya más en una tarea auxiliar predictiva. GloVe se apoya más en estructura estadística agregada del corpus.
Desde un punto de vista práctico, ambos métodos pueden producir embeddings muy útiles. Sin embargo, la diferencia conceptual es importante porque muestra dos caminos posibles para aprender representaciones distribuidas:
Esta distinción influyó mucho en cómo se pensaron los modelos de representación del lenguaje durante varios años.
La hipótesis detrás de GloVe es que las relaciones semánticas entre palabras están reflejadas en cómo varían sus patrones globales de coocurrencia. Si dos palabras tienen distribuciones de contexto parecidas a lo largo del corpus, es razonable esperar que queden cerca en el espacio vectorial.
Esto significa que el método no se limita a ejemplos aislados, sino que intenta usar una imagen más amplia del lenguaje observado en el corpus completo.
Entre las ventajas más citadas de GloVe se encuentran:
Por eso se convirtió en uno de los métodos de referencia dentro de los embeddings clásicos.
GloVe también comparte varias limitaciones con otros embeddings clásicos:
Es decir, fue un gran avance, pero todavía pertenece a la familia de representaciones estáticas por palabra.
En la práctica, Word2Vec y GloVe suelen compararse porque ambos fueron métodos muy populares para aprender embeddings clásicos. Más que pensar cuál es "mejor" en abstracto, conviene entender cómo se diferencian:
Conceptualmente, los dos ayudaron a consolidar la idea de representación distribuida del lenguaje.
Además de Word2Vec y GloVe, hubo otros enfoques clásicos o cercanos a esa etapa de evolución. Algunos fueron menos influyentes, otros introdujeron mejoras prácticas importantes. Entre ellos, uno de los más relevantes fue fastText.
fastText introdujo una idea muy valiosa: representar palabras no solo como unidades completas, sino también a partir de sus fragmentos internos o subpalabras. Esto resulta útil porque muchas lenguas tienen gran variación morfológica y muchas palabras raras comparten partes comunes.
Por ejemplo, si una palabra poco frecuente contiene raíces o fragmentos conocidos, fastText puede aprovechar esa estructura interna para construir una representación más robusta.
Esto hizo que fastText fuera especialmente útil en idiomas con mucha flexión y en escenarios con palabras raras o fuera de vocabulario.
La gran ventaja de fastText es que no depende completamente de tratar cada palabra como un bloque indivisible. Al considerar subcomponentes internos, puede:
Esto lo convirtió en una mejora muy práctica frente a los embeddings clásicos puramente basados en palabra completa.
Aunque difieren en el modo de aprendizaje, estos métodos comparten varias características:
Por eso suelen agruparse dentro de la gran familia de embeddings clásicos.
A pesar de sus avances, estos métodos seguían compartiendo un problema fundamental: una palabra polisémica recibía, en general, un solo vector fijo. La palabra banco, por ejemplo, no tenía naturalmente una representación distinta según si se hablaba de finanzas o de un asiento.
Esta limitación fue una de las razones por las que más adelante surgieron embeddings contextuales y modelos como ELMo, BERT y Transformers modernos.
Desde una perspectiva histórica, Word2Vec, GloVe y fastText forman parte de una etapa muy importante del NLP: la transición desde representaciones basadas en conteos hacia representaciones densas aprendidas automáticamente.
Esta etapa fue decisiva porque instaló la idea de que el lenguaje podía representarse en espacios vectoriales ricos antes de la gran explosión de los modelos contextuales profundos.
Aunque hoy existen métodos más avanzados, los embeddings clásicos siguen siendo útiles en varios escenarios:
Además, siguen siendo históricamente fundamentales para entender cómo evolucionó el NLP.
Imaginemos que queremos representar palabras relacionadas con educación. Con Word2Vec, el modelo aprendería relaciones a partir de contextos locales. Con GloVe, esas relaciones surgirían del patrón global de coocurrencias. Con fastText, además, podrían aprovecharse fragmentos internos de palabras como prefijos, raíces o terminaciones.
Los tres enfoques apuntan a construir buenos embeddings, pero cada uno enfatiza un aspecto distinto del problema.
| Método | Idea principal | Fortaleza destacada |
|---|---|---|
| Word2Vec | Aprender embeddings prediciendo palabra o contexto. | Gran eficiencia e impacto conceptual. |
| GloVe | Aprender embeddings desde coocurrencias globales. | Aprovecha estadísticas globales del corpus. |
| fastText | Aprender embeddings usando también subpalabras. | Maneja mejor morfología y palabras raras. |
Una forma muy interesante de ver la ventaja de fastText es entrenar un modelo pequeño y consultar palabras con morfología parecida. Como utiliza subpalabras, suele manejar mejor variantes que Word2Vec puro.
from gensim.models import FastText
corpus = [
["programar", "python", "resulta", "divertido"],
["programacion", "python", "para", "analisis", "de", "texto"],
["programador", "experto", "usa", "python"],
["programadores", "construyen", "modelos", "de", "lenguaje"],
]
modelo = FastText(
sentences=corpus,
vector_size=40,
window=3,
min_count=1,
workers=1,
epochs=200
)
for palabra in ["programar", "programacion", "programador"]:
print(f"\nSimilares a {palabra}:")
print(modelo.wv.most_similar(palabra, topn=3))
En un ejemplo como este, fastText puede capturar mejor la cercanía entre palabras relacionadas por raíz o morfología. Ese fue uno de sus aportes más prácticos respecto de embeddings clásicos puramente estáticos.
GloVe y otros embeddings clásicos completan una etapa fundamental en la evolución del NLP. Junto con Word2Vec, mostraron que era posible aprender representaciones distribuidas del lenguaje a partir de grandes corpus y que esas representaciones podían capturar relaciones útiles para muchas tareas.
Aunque hoy contamos con enfoques mucho más potentes, entender estos métodos sigue siendo clave porque establecieron las bases conceptuales sobre las que luego crecieron los modelos modernos.
En el próximo tema pasaremos a un bloque más práctico y estudiaremos la introducción a librerías de NLP en Python, para empezar a conectar estos conceptos con herramientas concretas de trabajo.