Distribución de frecuencia de bigramas
He hecho lo siguiente
import nltk
palabras = nltk.corpus.brown.words()
freq = nltk.FreqDist(palabras)
Y puedo encontrar la frecuencia de ciertas palabras en el corpus Brown, como
freq["the"]
62713
Pero ahora quiero poder encontrar la Distribución de Frecuencia de bigramas específicos. Así que luego intenté
bigrams = nltk.bigrams(palabras)
freqbig = nltk.FreqDist(bigrams)
Pero siempre obtengo 0 para cada bigrama que ingreso, como
freqbig["the man"]
0
¿Qué estoy haciendo mal?
davy.ai
El problema con tu código es que
nltk.bigrams()
devuelve un objeto generador, y los objetos generadores solo se pueden iterar una vez. Por lo tanto, necesitas convertir el objeto generador en una lista o tupla antes de pasarlo anltk.FreqDist()
, o iterar a través de él solo una vez y guardar los bigramas en una nueva lista antes de pasarlo anltk.FreqDist()
. Aquí tienes dos soluciones al problema:Solución 1: Convertir el objeto generador en una lista o tupla
Solución 2: Guardar los bigramas en una nueva lista
Ambas soluciones deberían darte la frecuencia del bigrama “the man” en el corpus brown.