Ir al contenido principal
ngram_banner

De n-gramas a Word2Vec: Los primeros pasos en la representación de lenguaje

Written on December 05, 2024 by Pedro Medinilla.

5 min.
Read in English

Introducción

La representación del lenguaje en modelos computacionales es un tema central en el procesamiento del lenguaje natural (NLP). Durante las primeras etapas, métodos estadísticos como los n-gramas eran la norma. Sin embargo, la necesidad de comprender mejor el contexto y las relaciones semánticas llevó al desarrollo de técnicas más avanzadas como Word2Vec. En este artículo, exploraremos la evolución de los enfoques de representación de lenguaje, desde los n-gramas hasta los word embeddings, aprenderemos cómo implementarlos en Python y veremos ejemplos de aplicaciones del mundo real.

Los n-gramas: Una introducción

¿Qué son los n-gramas?

Un n-grama es una secuencia contigua de "n" elementos (palabras o caracteres) en un texto. Por ejemplo, dada la frase:

"La inteligencia artificial es fascinante."

Los n-gramas se generan como sigue:

  • Unigramas (n=1): ["La", "inteligencia", "artificial", "es", "fascinante"]
  • Bigramas (n=2): [("La", "inteligencia"), ("inteligencia", "artificial"), ("artificial", "es"), ("es", "fascinante")]
  • Trigramas (n=3): [("La", "inteligencia", "artificial"), ("inteligencia", "artificial", "es"), ("artificial", "es", "fascinante")]

Los n-gramas son útiles en tareas como la predicción de texto, pero tienen limitaciones significativas, especialmente para contextos amplios y relaciones semánticas complejas.

Casos de uso de los n-gramas en el mundo real

  • Predicción de texto: Los n-gramas se utilizan en teclados predictivos para sugerir palabras basadas en los patrones más probables.
  • Filtrado de spam: Ayudan a identificar combinaciones de palabras comunes en correos electrónicos de spam.
  • Análisis de frecuencia: Se emplean en análisis de datos lingüísticos para estudiar patrones recurrentes en diferentes idiomas.

Ventajas y limitaciones

  • Ventajas:
    • Simples de implementar.
    • Capturan patrones locales básicos en el texto.
  • Limitaciones:
    • Crecimiento exponencial: El número de combinaciones posibles crece rápidamente con "n".
    • Falta de semántica: No capturan el significado ni relaciones más allá de su vecindad inmediata.
    • Sparsity: Gran cantidad de combinaciones posibles no se encuentran en el corpus.

Implementación práctica

from nltk import ngrams  
from collections import Counter  
 
# Example text  
text = "Artificial intelligence is fascinating".split()  
 
# Generate bigrams  
bigrams = list(ngrams(text, 2))  
print("Bigrams:", bigrams)  
 
# Count the frequency of the bigrams  
frequency = Counter(bigrams)  
print("Bigram frequency:", frequency)

Salida esperada:

Bigrams: [('Artificial', 'intelligence'), ('intelligence', 'is'), ('is', 'fascinating')]  
Bigram frequency: Counter({('Artificial', 'intelligence'): 1, ('intelligence', 'is'): 1, ('is', 'fascinating'): 1})

El salto conceptual: De n-gramas a Word2Vec

¿Qué es Word2Vec?

Word2Vec, desarrollado por Google en 2013, introdujo un enfoque basado en redes neuronales para representar palabras como vectores densos en un espacio continuo. Se basa en la hipótesis distributiva: las palabras que aparecen en contextos similares tienen significados similares.

Word2Vec ofrece dos arquitecturas principales:

  1. CBOW (Continuous Bag of Words): Predice una palabra objetivo usando el contexto circundante.
  2. Skip-gram: Predice el contexto dado una palabra.

Casos de uso en el mundo real

  • Motores de búsqueda: Word2Vec mejora la relevancia al comprender la semántica de las consultas y los documentos.
  • Análisis de sentimientos: Ayuda a clasificar opiniones positivas y negativas al capturar relaciones semánticas entre palabras.
  • Traducción automática: Permite mapear palabras de diferentes idiomas en un espacio semántico común.
  • Recomendación de productos: Utilizado en sistemas como Amazon para encontrar productos relacionados con base en descripciones y revisiones de clientes.
  • Bioinformática: Word embeddings se han aplicado para analizar secuencias de ADN o ARN como "palabras" en contextos biológicos.

Ventajas y limitaciones

  • Ventajas:
    • Densidad: Vectores compactos que evitan problemas de sparsity.
    • Semántica: Captura relaciones semánticas y sintácticas de manera eficiente.
    • Escalabilidad: Entrenamiento en corpus grandes con bajo costo computacional.
  • Limitaciones:
    • Relaciones más complejas: No captura dependencias sintácticas profundas.
    • Datos necesarios: Requiere grandes cantidades de texto para producir embeddings de alta calidad.

Implementación básica con Gensim

from gensim.models import Word2Vec  
from nltk.tokenize import word_tokenize  
import nltk  
nltk.download('punkt')  
 
# Example corpus  
text = [  
    "Artificial intelligence is fascinating",  
    "Intelligence is key to solving problems",  
    "AI is transforming the world"  
]  
 
# Tokenize the text  
corpus = [word_tokenize(sentence.lower()) for sentence in text]  
 
# Train the Word2Vec model  
model = Word2Vec(corpus, vector_size=50, window=3, min_count=1, sg=1)  
 
# Get the vector for a word  
word_vector = model.wv['intelligence']  
print("Vector for 'intelligence':", word_vector)  
 
# Find similar words  
similar_words = model.wv.most_similar('intelligence', topn=5)  
print("Words similar to 'intelligence':", similar_words)  

Salida esperada:

Vector for 'intelligence': [0.123, -0.235, ...]  # (Valores de ejemplo)  
Words similar to 'intelligence': [('artificial', 0.89), ('key', 0.75), ...]  

Conclusión

La transición de métodos como los n-gramas a Word2Vec marcó un hito en el procesamiento del lenguaje natural. Mientras que los n-gramas eran útiles para tareas sencillas y patrones locales, Word2Vec abrió la puerta a la representación semántica, lo que permitió aplicaciones más avanzadas como el análisis de sentimientos, traducción automática y generación de texto.

Entender estas bases es esencial para explorar modelos modernos como BERT y GPT, que llevan estas ideas a nuevos niveles. ¡El futuro del NLP es prometedor, y Word2Vec sigue siendo una piedra angular en este emocionante campo!

Pon un Tweet de este artículo

¿Disfrutando del post?

No dudes en contactarme si tienes alguna duda, sugerencia o proyecto que pueda ayudarte a hacerlo realidad.

Contactar