Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy

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

Resumen

¿Cómo abordar las distribuciones de frecuencia en un corpus de texto?

Las distribuciones de frecuencia de palabras nos permiten entender qué términos son más frecuentes dentro de un texto, pero es necesario filtrar estas distribuciones para identificar palabras verdaderamente relevantes. Al analizar un documento o corpus de datos, como libros, tweets, o cualquier otro tipo de colección textual, es vital separar las palabras con contenido semántico importante de aquellas que simplemente sirven como conectores.

¿Qué hicimos en nuestra clase anterior?

Anteriormente, utilizamos la librería nltk y su método FreqDist para calcular la distribución de frecuencia de palabras en el libro "Moby Dick". Sin embargo, las palabras más frecuentes no siempre son las más relevantes desde un punto de vista semántico o gramatical.

  • Usamos FreqDist para identificar las palabras más comunes en un texto.
  • Observamos que muchas de estas palabras no aportan información valiosa sobre el contenido del texto.

¿Cómo filtrar las palabras más relevantes?

Para obtener palabras que realmente nos aporten información, creamos un filtro basado en la longitud de las palabras. Este proceso nos permitió eliminar elementos no semánticos, como signos de puntuación y palabras de uso muy común que no agregan relevancia.

long_words = [palabra for palabra in text1 if len(palabra) > 5]

¿Cómo creamos un nuevo vocabulario filtrado y su distribución?

Después de filtrar las palabras, generamos un nuevo vocabulario con las palabras relevantes ordenadas alfabéticamente:

vocabulario_filtrado = sorted(set(long_words))

Luego, construimos una nueva distribución de frecuencias para este vocabulario reducido:

palabras_interesantes = [(palabra, f_dist[palabra]) for palabra in vocabulario_filtrado if f_dist[palabra] > 10]

¿Cómo transformamos datos a objetos NumPy?

La transformación de datos a un formato NumPy nos permite operar con los datos de manera más eficiente, especialmente cuando se trata de ordenar listas con grandes volúmenes de datos:

import numpy as np

d_types = [('word', 'U50'), ('frequency', 'int')]
palabras_interesantes = np.array(palabras_interesantes, dtype=d_types)
palabras_interesantes = np.sort(palabras_interesantes, order='frequency')

¿Cómo visualizar las distribuciones ordenadas con Matplotlib?

Finalmente, podemos visualizar esta nueva distribución utilizando Matplotlib, una herramienta poderosa para gráficos:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))
plt.plot(range(len(palabras_interesantes)), [item[1] for item in palabras_interesantes])
plt.xticks(rotation='vertical')
plt.grid(True)
plt.show()

Este análisis no solo es aplicable a libros sino también puede ser extendido a análisis de redes sociales, investigación de mercado, y cualquier tipo de investigación lingüística, ya que las palabras más frecuentes rara vez cuentan toda la historia. Estas técnicas te permiten profundizar más y sacar el máximo provecho de tus datos textuales. ¡Sigue explorando y perfeccionando estas herramientas para extraer insights valiosos!