Générateur de textes aléatoires cohérents (chaînes de markov)

Soyez le premier à donner votre avis sur cette source.

Vue 10 888 fois - Téléchargée 875 fois

Description

Suite à une question sur le forum (http://www.cppfrance.com/forum/sujet-HELP-GETLINE-STRING-CHAR-CONVERSION-TYPES_1467414.aspx) et quelques échanges en message privé, je poste cette source.
Ce petit outil permet de générer un texte cohérent, aléatoirement, à partir d'un corpus de texte. L'algorithme utilisé exploite les chaînes de Markov. Derrière ce nom très technique se cache un algorithme très simple et pourtant très efficace.

Soit le texte suivant: "un gentil chien aime un gentil maître"

On peut donc générer la liste d'association suivante:
(un, gentil) => chien maître
(gentil, chien) => aime
(chien, aime) => un
(aime, un) => gentil
(gentil, maître) => EOF

Ensuite, en partant de (un, gentil):
On avance en choisissant un élément aléatoirement à chaque fois:
Ce qui ici donnera deux possibilités:
- un gentil maître. EOF
- un gentil chien aime un gentil maître. EOF

En utilisant de gros corpus, on peut arriver à de très bons résultats.

Conclusion :

Compilation:
g++ -W -Wall -pedantic -O3 main.cc TextGenerator.cc -o markov
Utilisation:
./markov [option] <files>

Options:
-c: Nombre de caractères au maximum (0 => infini)
-w: Nombre de mots au maximum (0 => infini)
-l: Nombre de lignes au maximum (0 => infini)

Exemple:
./markov -w 100 fichier1.txt fichier2.txt fichier3.txt dossier/fichier4.txt
./markov -l 5 data/*.txt

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BumpMANN
Messages postés
331
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
26 janvier 2009
-
"C'est même scientifiquement prouvé, tous les jours alors que tout le temps, voit tout ce qu'on veut, il faut le faire, oh oui ! Par exemple, l'abricot contient des vitamines A, connu pour ses bénéfices au niveau de la désencyclopédie. « Hier, j'ai mangé un abricot droit dans les détails, qui risqueraient de choquer plus d'un, je pourrais également dire qu'ils sont ignorés. Car on a beau dire tout ce qu'on peut, écrase vos os, vous éclate le cœur, explose la boite crânienne, et après qu'on mélange vos tripes avec d'autres pour en faire une recherche sur Google et vous verrez aisément que la pomme possède 12 fois plus de résultats que l'abricot."

Je dirais que ça marche :)
khephren666
Messages postés
3
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
16 septembre 2010
-
Bonjour,

Je trouve le concept vraiment intéressant, le code bien fait (il manque juste un #include <ctime> au main :-) ). Je me suis même vu passer du temps à lire des phrases générées avec le corpus fourni en me marrant devant certaines phrases vraiment bien tournées!

Bravo!
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Bon si qqun compile un binaire Win32, je suis preneur.
cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90 -
Étant sous Linux, non je ne peux pas faire une version sous C#, et je ne peux que te donner un binaire Linux.
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Tu pourrais faire une version en C# ? (dans ce cas je ferai surement une version en VB, ça m'intéresse de voir ce que ça donne) ou alors mettre l'exe renommé en ._exe_ par exemple.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.