Tengo problemas con el NLTK en Python, específicamente con el método .generate().Generando oraciones aleatorias de texto personalizado en Python's NLTK?
generar (self, longitud = 100)
Imprimir texto aleatorio, generado utilizando un modelo de lenguaje trigrama.
Parámetros:
* length (int) - The length of text to generate (default=100)
Aquí es una versión simplificada de lo que estoy tratando.
import nltk
words = 'The quick brown fox jumps over the lazy dog'
tokens = nltk.word_tokenize(words)
text = nltk.Text(tokens)
print text.generate(3)
Esto siempre generar
Building ngram index...
The quick brown
None
En oposición a la construcción de una frase al azar de las palabras.
Aquí está mi salida cuando lo haga
print text.generate()
Building ngram index...
The quick brown fox jumps over the lazy dog fox jumps over the lazy
dog dog The quick brown fox jumps over the lazy dog dog brown fox
jumps over the lazy dog over the lazy dog The quick brown fox jumps
over the lazy dog fox jumps over the lazy dog lazy dog The quick brown
fox jumps over the lazy dog the lazy dog The quick brown fox jumps
over the lazy dog jumps over the lazy dog over the lazy dog brown fox
jumps over the lazy dog quick brown fox jumps over the lazy dog The
None
vez de empezar con el mismo texto, pero variando la misma. También intenté usar el primer capítulo de Orwell's 1984. De nuevo que siempre comienza con los primeros 3 tokens (uno de los cuales es un espacio en este caso) y luego va a generar aleatoriamente el texto.
¿Qué estoy haciendo mal aquí?
El NLTK usa el contexto de las palabras para determinar su uso. Por ejemplo, tienen el texto completo de 'Moby Dick' en el NLTK por ejemplo. Usar generar con eso generará frases que suenan en Meville. Entonces, a menos que sepa algo que yo no sé, supongo que no quiere recurrir a las palabras porque el contexto inicial es significativo. –
tienes razón. Si barajas las palabras, pierdes la información de la que se tratan los trigramas. – Mastermind