Estadísticas de Ennegramas y Colocaciones en Textos

Clase 10 de 24Curso de Fundamentos de Procesamiento de Lenguaje Natural con Python y NLTK

Contenido del curso

Fundamentos con NLTK

Resumen

Comprender cómo las palabras se relacionan entre sí dentro de un texto es fundamental para cualquier tarea de procesamiento del lenguaje natural. Más allá de contar palabras individuales, existen estructuras que revelan patrones ocultos en el uso real del idioma: los n-gramas y las colocaciones.

¿Qué son los n-gramas y cómo se calculan?

Un n-grama es una secuencia de n palabras consecutivas extraídas de un texto, donde n puede ser dos o más [00:22]. Esta estructura permite analizar combinaciones de palabras en lugar de palabras aisladas, lo que ofrece un procesamiento mucho más preciso del lenguaje.

Tomando como ejemplo la frase «Estoy aprendiendo cosas increíbles», se pueden extraer diferentes tipos de n-gramas:

¿Cómo funcionan los bigramas?

Un bigrama es un n-grama donde n es igual a dos. De la frase de ejemplo se obtienen tres bigramas [00:42]:

  • ("estoy", "aprendiendo").
  • ("aprendiendo", "cosas").
  • ("cosas", "increíbles").

Cada bigrama se representa como una tupla en notación Python, donde el primer y segundo elemento son palabras consecutivas del texto.

¿Qué son los trigramas?

Cuando n es igual a tres, hablamos de trigramas, es decir, secuencias de tres palabras consecutivas [01:11]. De la misma frase se extraen dos trigramas:

  • ("estoy", "aprendiendo", "cosas").
  • ("aprendiendo", "cosas", "increíbles").

A partir de aquí, el concepto se extiende de forma natural a estructuras de cuatro, cinco o más palabras. La lógica siempre es la misma: una ventana deslizante de tamaño n recorre el texto capturando combinaciones consecutivas.

¿Qué son las colocaciones en lingüística computacional?

Las colocaciones son un concepto más complejo y, paradójicamente, difícil de definir con precisión [01:39]. Se trata de combinaciones de palabras que aparecen juntas con una frecuencia inusualmente alta, sin que exista una regla gramatical que lo justifique.

Esta idea proviene de Firth, un lingüista que publicó en los años cincuenta y sesenta. En su trabajo titulado Modes in Meaning, definió las colocaciones como sentencias que indican los lugares que una palabra acostumbra a tomar en el lenguaje, sin seguir reglas aparentes [02:04].

¿Por qué las colocaciones dependen de la cultura?

Para ilustrar el concepto, consideremos dos frases [02:28]:

  • «Le dieron ganas de dormir» — suena natural.
  • «Le introdujeron ganas de dormir» — suena extraña.

Ambas intentan comunicar lo mismo. No existe una regla gramatical del español que haga incorrecta la segunda opción, pero por razones culturales la primera es la forma habitual en muchas variantes del español latinoamericano [03:06]. Técnicamente, ambas usan el verbo en un sentido no literal, pero el uso de «dieron» resulta mucho más frecuente.

Otro ejemplo revelador es la expresión «ventilar secretos» [03:28], que significa contar información que debía mantenerse en reserva. La palabra «ventilar» en su significado formal no tiene relación con compartir información, pero el uso cultural la ha convertido en parte de esta colocación.

¿Cómo se identifican colocaciones con programación?

El hecho de que las colocaciones estén basadas en tendencias culturales hace que sea difícil establecer reglas estrictas para detectarlas manualmente [04:02]. Sin embargo, existen métodos estadísticos y matemáticos que permiten identificarlas de forma numérica mediante programación.

Estas estadísticas miden qué tan probable es que dos o más palabras aparezcan juntas en comparación con lo que se esperaría por azar. Cuando la frecuencia observada supera significativamente la esperada, es un indicador de que estamos ante una colocación.

Comprender estos dos conceptos —n-gramas como herramienta de segmentación y colocaciones como fenómeno lingüístico— abre la puerta a análisis de texto mucho más sofisticados. ¿Has encontrado colocaciones curiosas en tu idioma que no tienen explicación gramatical? Comparte tus ejemplos.