La génération aléatoire des phrases de texte personnalisé en Python NLTK?
Je vais avoir des ennuis avec la NLTK sous Python, plus précisément le .méthode generate ().
générer(auto, longueur=100)
Impression de texte aléatoire, généré à l'aide d'un modèle de langage trigramme.
Paramètres:
* length (int) - The length of text to generate (default=100)
Voici une version simplifiée de ce que je cherche.
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)
Ce sera toujours générer
Building ngram index...
The quick brown
None
Plutôt que de construire une phrase aléatoire de mots.
Voici ma sortie quand je fais
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
Nouveau départ avec le même texte, mais a ensuite divers. J'ai aussi essayé d'utiliser le premier chapitre, à partir de 1984 d'Orwell. Encore que toujours commence avec le premier 3 jetons (dont l'une est un espace dans ce cas) et puis continue à générer de façon aléatoire texte.
Ce que je fais mal?
OriginalL'auteur James McMahon | 2009-07-19
Vous devez vous connecter pour publier un commentaire.
Pour générer du texte aléatoire, U besoin d'utiliser Chaînes De Markov
code pour le faire: à partir d'ici
Explication:
La génération pseudo-aléatoire de texte avec des chaînes de Markov à l'aide de Python
OriginalL'auteur Lakshman Prasad
Vous devriez être en "formation" le modèle de Markov avec plusieurs séquences, alors que précisément l'exemple de l'état de départ des probabilités (appelé "pi" en Markov-parler). Si vous utilisez une séquence unique, alors vous commencez toujours dans le même état.
Dans le cas d'Orwell, 1984, vous pouvez utiliser la segmentation de la phrase en premier (NLTK est très bon dans ce domaine), puis le mot de segmentation en unités (ce qui donne une liste de listes de jetons, pas seulement une simple liste de jetons) et puis les nourrir à chaque phrase séparément pour le modèle de Markov. Cela permettra de bien le modèle de la séquence commence, au lieu d'être bloqué sur un seul façon de commencer la séquence.
OriginalL'auteur drxzcl
Votre échantillon du corpus est le plus susceptible d'être trop petit. Je ne sais pas exactement comment nltk construit son trigramme modèle, mais il est de pratique courante que le début et la fin des phrases, sont traitées en quelque sorte. Depuis, il est seulement un début de phrase dans votre corpus cela pourrait être la raison pourquoi chaque phrase a le même début.
Je thoght, mais si vous avez déjà essayé tout un Orwell chapitre (avec la ponctuation je suppose) je suppose que je me trompais.
OriginalL'auteur Mastermind
Peut-être que vous pouvez trier le tableau des jetons de façon aléatoire avant de générer une phrase.
vous êtes de droite. Si vous mélangez les mots que vous perdez l'information que les trigrammes sont tout au sujet.
OriginalL'auteur Geo
Êtes-vous sûr que l'utilisation de
word_tokenize
est la bonne approche?Google groupes page a l'exemple:
Mais je n'ai jamais utilisé nltk, donc je ne peux pas dire si cela fonctionne de la manière que vous voulez.
Avez-vous par rapport à votre propre tokenlist avec le brown corpus?
OriginalL'auteur Mark Rushakoff