Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Procesamiento de texto con Python, Unidad 7 — Conteo y estadísticas de texto, 7.1 — Frecuencias básicas ·

Distribuciones

Distribuciones

Introducción

En el procesamiento de texto, una distribución es una descripción matemática que representa la frecuencia con la que aparecen diferentes palabras o n-gramas en un corpus. Esta representación es fundamental para analizar y comprender el contenido del texto, identificar patrones y realizar tareas de análisis más avanzados como el clasificación de documentos, la generación de resúmenes, entre otros.

Explicación principal con ejemplos

La distribución de frecuencias puede mostrarnos cuántas veces se repite una palabra en un texto. Por ejemplo, si tenemos el siguiente fragmento de texto:

texto = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."

Podemos contar la frecuencia de cada palabra con el siguiente código:

from collections import Counter

frase = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."
palabras = frase.lower().split()
conteo_palabras = Counter(palabras)
print(conteo_palabras)

Este código nos devolverá:

Counter({'el': 1, 'perro': 1, 'corrió': 1, 'rápido': 1, 'por': 1, 'la': 1, 'calle': 1, 'pero': 1, 'sin': 1, 'darse': 1, 'cuenta': 1, 'tropezó': 1})

Para analizar distribuciones más complejas, como las frecuencias de n-gramas (secuencias de palabras), podemos hacerlo así:

from nltk import ngrams

frase = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."
palabras = frase.lower().split()
n_grams = list(ngrams(palabras, 2))
conteo_n_gramas = Counter(n_grams)
print(conteo_n_gramas)

Este código nos devolverá:

Counter({('el', 'perro'): 1, ('perro', 'corrió'): 1, ('corrió', 'rápido'): 1, ('rápido', 'por'): 1, ('por', 'la'): 1, ('la', 'calle'): 1, ('calle', 'pero'): 1, ('pero', 'sin'): 1, ('sin', 'darse'): 1, ('darse', 'cuenta'): 1, ('cuenta', 'tropezó'): 1})

Errores típicos / trampas

1. Ignorar la normalización

Es común olvidar convertir todo el texto a minúsculas (o mayúsculas) antes de contar las frecuencias, lo cual puede llevar a un análisis incorrecto.

frase = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."
palabras = frase.split()
conteo_palabras = Counter(palabras)
print(conteo_palabras)

Este código mostrará que las palabras 'el' y 'El' son tratadas como diferentes.

2. No considerar el contexto

Las frecuencias de n-gramas pueden ser sesgadas si se cuentan fuera del contexto adecuado. Por ejemplo, contar solo bigramas sin tener en cuenta trigramas puede llevar a una comprensión incompleta del texto.

frase = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."
palabras = frase.split()
n_grams = list(ngrams(palabras, 2))
conteo_n_gramas = Counter(n_grams)
print(conteo_n_gramas)

Este código muestra solo las relaciones entre dos palabras adyacentes y no captura el significado del texto en su totalidad.

3. No filtrar o limpiar el texto

No eliminar signos de puntuación, números o otros caracteres no deseados puede distorsionar los resultados de la distribución.

frase = "El perro corrió rápido por la calle pero sin darse cuenta tropezó."
conteo_palabras = Counter(frase.split())
print(conteo_palabras)

Este código mostrará que el número 1 y otros caracteres no deseados también se cuentan en las frecuencias.

Checklist accionable

  • Convierte todo el texto a minúsculas antes de contar las frecuencias.
  • Limpia el texto eliminando signos de puntuación, números y otros caracteres indeseados.
  • Considera el contexto adecuado al analizar distribuciones, como bigramas o trigramas.
  • Utiliza bibliotecas como collections.Counter para contar las frecuencias.
  • Verifica que los n-gramas estén correctamente formados.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Análisis de co-menciones: Analizar cuántas veces aparecen juntas palabras en el texto.
  • Frecuencia relativa vs. absoluta: Comparar la frecuencia relativa (porcentaje) con la frecuencia absoluta (cuenta).
  • Visualización de distribuciones: Utilizar gráficos como barras o histogramas para visualizar las distribuciones.

Aprender a analizar y entender las distribuciones de texto es un paso crucial en el procesamiento de lenguaje natural. Con los conocimientos adecuados, podrás extraer valiosos insights desde grandes corpora de texto y mejorar significativamente tus modelos de NLP.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).