Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy
Clase 9 de 24 • Curso de Fundamentos de Procesamiento de Lenguaje Natural con Python y NLTK
Contenido del curso
- 4

Procesamiento de Lenguaje Natural con Python en Google Colab
11:08 - 5

Expresiones Regulares en Python: Patrones de Búsqueda Avanzados
10:14 - 6

Tokenización de Texto con Expresiones Regulares en Python
10:03 - 7

Estadística para Procesamiento del Lenguaje: Riqueza Léxica y Métricas
13:03 - 8

Cálculo de frecuencias con NLTK y diccionarios en Python
05:59 - 9

Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy
17:30 - 10

Estadísticas de Ennegramas y Colocaciones en Textos
04:26 - 11

Extracción de Ngramas y Bigramas con NLTK en Python
11:25 - 12

Análisis de Colocaciones con NLTK y Pandas en Python
16:17 - 13

Visualización de Colocaciones en Textos con Pandas y Plotly
09:19 - 14

Identificación de Colocaciones en Textos con NLTK y PMI
09:09 - 15

Recursos Léxicos: Uso y Aplicación en Procesamiento del Lenguaje
02:46 - 16

Recursos Léxicos en Python: Vocabularios, Frecuencias y Stopwords
09:19 - 17

Traducción de palabras con Swadesh en procesamiento de lenguaje natural
05:00 - 18

Uso de WarNet para Procesamiento del Lenguaje Natural
04:50 - 19

Análisis de Sinsets e Hipónimos con NLTK y WordNet en Google Colab
17:53 - 20

Medición de Similitud Semántica con WordNet en Python
08:19 - 21

Extracción y Procesamiento de Texto desde Páginas Web con NLTK
13:36 - 22

Organización de Código en Google Colab con Funciones y Módulos
05:50 - 23

Funciones y Buenas Prácticas en Google Colab y Python
12:57
¿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
FreqDistpara 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!