Comprender cómo se comportan las palabras dentro de un texto es fundamental para cualquier proyecto de procesamiento de lenguaje natural. Medir la riqueza léxica, contar la frecuencia de aparición de términos y construir funciones reutilizables en Python son habilidades que permiten extraer información valiosa de cualquier corpus. A continuación se explican estas técnicas paso a paso, usando el libro Moby Dick como caso práctico.
¿Cómo preparar el entorno y cargar un corpus en NLTK?
El punto de partida es importar las librerías necesarias. Además del clásico nltk, se descarga un dataset llamado book mediante nltk.download('book') [0:40]. Este dataset contiene varios libros en inglés ya tokenizados, listos para trabajar directamente con NLTK.
- Se importa todo el contenido del módulo con
from nltk.book import *.
- Se incorpora matplotlib, la librería de visualización de datos más común en Python.
- Se importa numpy con el acrónimo habitual
np, una librería esencial para operaciones de álgebra lineal, matrices y vectores [1:22].
Una vez ejecutadas las importaciones, el dataset descarga varios archivos. El texto que se utiliza como ejemplo es text1, que corresponde a la novela Moby Dick de Herman Melville [2:20].
¿Qué estructura tienen los tokens de este corpus?
Al inspeccionar los primeros diez tokens con text1.tokens[:10] [2:40], se observa que el tokenizador incluye elementos como corchetes, comas y puntos como tokens independientes. Es un comportamiento diferente al de tokenizadores más simples y refleja que el texto fue preprocesado de forma específica para NLTK.
La longitud total del corpus se obtiene con len(text1), arrojando 260,819 tokens [3:20]. Es un corpus de tamaño moderado que se procesa con rapidez.
¿Qué es la riqueza léxica y cómo se calcula en Python?
La riqueza léxica es una métrica que relaciona el total de palabras únicas con el total de palabras del texto [3:45]. Se define así:
- Riqueza léxica = palabras únicas / total de palabras.
- Un valor alto indica que el autor empleó una mayor variedad de vocabulario o que las palabras se repiten menos.
Para obtener las palabras únicas se construye un vocabulario. En Python, esto se logra con la función set(), que elimina elementos duplicados de una lista [4:30]. Sin embargo, el objeto set no admite slicing (acceso por índices), lo que genera un error común. La solución es envolver el resultado con sorted(), que convierte el conjunto en una lista ordenada alfabéticamente [5:30].
python
vocabulario = sorted(set(text1))
print(vocabulario[1000:1050])
Con el vocabulario listo, la riqueza léxica se calcula dividiendo len(vocabulario) entre len(text1). Para Moby Dick, el resultado es 0.074, es decir, aproximadamente un 7.4 % de los tokens son únicos [6:30].
¿Cómo convertir este cálculo en una función reutilizable?
Definir funciones en Python permite reutilizar lógica sin repetir código. La estructura es def nombre_funcion(argumento): seguida de un bloque con return [7:00].
python
def riqueza_lexica(texto):
vocabulario = sorted(set(texto))
return len(vocabulario) / len(texto)
Al llamar riqueza_lexica(text1) se obtiene el mismo 0.074 [8:00]. Es importante notar que la variable vocabulario dentro de la función es una definición interna: solo existe en el alcance de la función.
¿Cómo medir el porcentaje de aparición de una palabra?
Otra métrica útil es el porcentaje de consumo de una palabra dentro del texto [8:30]. Se construye una función que recibe una palabra y un texto, cuenta cuántas veces aparece y divide ese conteo entre la longitud total, multiplicando por cien.
python
def porcentaje_palabra(palabra, texto):
return 100 * texto.count(palabra) / len(texto)
Probando con la palabra monster —relevante porque en la novela la ballena es descrita frecuentemente como un monstruo— el resultado es apenas 0.01 % [9:20]. Si se consulta directamente text1.count('monster'), la palabra aparece 49 veces en un corpus de más de 260,000 tokens [9:50].
Estas métricas, aunque sencillas, constituyen la base del análisis estadístico de texto. Permiten comparar corpus, identificar patrones de uso del lenguaje y preparar el terreno para técnicas más avanzadas como las distribuciones de frecuencia, que se abordan de forma gráfica en la siguiente sesión.
¿Has calculado la riqueza léxica de otros textos del dataset book? Comparte tus resultados y comparaciones en los comentarios.