Générateur de texte
Samuel Moix
Lycée-Collège de la Planta
Sion (VS)
Mark Zeman
Fachhochschule Nordwestschweiz
Brugg-Windisch (AG)
Introduction
Le but du projet est d’implémenter une chaîne de Markov et à l’aide de celle-ci générer du
texte. Ensuite, nous devons créer une interface qui permet à un utilisateur quotidien
d’utiliser le programme. Lorsque l’on introduit du texte dans le programme, celui-ci crée des
nouvelles phrases et les affiches.
Dans un premier temps, nous verrons ce qui a été étudié, puis comment le programme a été
codé et finalement ce qui a été appris. Le projet a été développé avec Igor Ranisavljevic et
avec l’aide dun apprenti et dun étudiant en Master.
Pour réussir à créer un générateur de texte avec une chaîne de Markov, il faut tout d’abord
savoir ce qu’est une chaîne de Markov. Le nom vient du mathématicien russe Andreï
Markov. En gros, il s’agit d’un système mathématique qui saute d’un état à un autre. Le but
est de savoir dans quel état on se trouve et ensuite quels sont les états suivants possibles. En
d’autres termes, c’est la prédiction du futur à partir du présent.
Pour notre générateur de texte, nous contrôlons l’état d’un mot et les mots qui peuvent le
suivre. Par exemple si l’on a comme phrases : « Je rentre à la maison à pied » et « Il rentre
dans la cuisine », l’on peut obtenir la phrase « Je rentre dans la cuisine ». Avec ce système,
plus l’on a de phrases plus les phrases vont varier. Il est possible d’obtenir des phrases plus
réaliste en contrôlant deux mots au lieu d’un, mais le contenu changera moins. Pour ce
générateur de texte, il ne faut rien d’autre, à part un critère d’arrêt pour éviter d’entrer dans
une boucle infinie.
Matériel et Méthode
Le programme peut être programmé en différents langages de programmation. Nous avons
décidé d’utiliser du Python pour la partie programme, car nous avions vu les bases dans le
cadre des cours au collège. Nous avons tout de même bien été guidés et aidés par les
étudiants de la « FHNW ». Je me suis chargé de la GUI (Interface visuelle) avec du HTML et
du CSS. Le HTML et le CSS sont des langages de programmation du Web. L’HTML permet de
structurer la page et le CSS permet de la styliser. Les programmes de codages utilisés étaient
Pycharm et Notepad++. Notepad++ est simplement un éditeur de texte, alors que PyCharm
est un environnement de développement intégré, il facilite donc la programmation en
Python. Nous avons également utilisé et découvert Git. C’est un logiciel qui permet de créer
un projet, y ajouter des gens et mettre à jour tout le travail de chacun régulièrement à
travers internet.
Pour faire la chaîne Markov, nous avons d’abord séparé les phrases en regardant tous les
endroits où se trouvaient des points (d’interrogation, d’exclamation) suivis d’un espace. Le
mot en fin de phrase nous sert comme critère d’arrêt. Mais en cas de boucles entre mots,
nous avons défini une limite entre 20 et 30 mots par phrases. Ensuite, on sépare les mots
grâce à l’espace qui les sépare dans un texte. Chaque mot va être contrôlé. Si le mot n’a pas
encore été rencontrer l’on créer une liste. Dans cette liste, l’on met tous les mots qui ont
suivi ce mot. Si le mot a déjà été rencontré, l’on ajoute simplement le prochain mot à sa
liste. Le logiciel va ensuite commencer avec un mot et générer une phrase jusqu’à qu’il
atteint le critère d’arrêt ou un mot de fin de phrase. Le nombre de phrases générer peut-
être déterminer par l’utilisateur.
Pour l’interface, nous avons créé une page internet. Ci-dessous se trouve une partie du code
HTML. Tout le code est ciblé par la classe « container » qui crée le lien avec le code CSS afin
de styler notre page (et ainsi notre GUI). Ensuite, il y’a la balise <h1> où se trouve le titre,
suivis de la zone d’entrée créée à l’aide des formulaires HTML. Dans le formulaire l’on a deux
types d’entrées. D’abord celle du texte (<textarea>) et ensuite celle du choix de nombre de
phrases à générer (<input type= « number »…) qui force à mettre un chiffre et non pas des
lettres. Finalement il y’a le bouton qui crée le lien avec le JavaScript par la fonction
« FbuttonGenerate(event) » qui va lancer le programme Python.
Le plus difficile était de faire le lien entre la page internet et le programme Python. Pour ce
faire, nous avons utilisé le module (ensemble de fonctions) CherryPy et le code JavaScript.
Ceci m’a permis de découvrir quelques notions de JavaScript. Sur l’interface l’on trouve : une
entrée de texte, un choix de nombre de phrases à générer, un bouton pour envoyer le texte
au programme et un endroit où le résultat est affiché.
Résultat
Voilà à quoi ressemble notre interface avec un exemple de phrase créée :
Les phrases données étaient : « The early bird might get the worm, but the second mouse
gets the cheese. » et « People say nothing is impossible, but I do nothing every day. Comme
l’input est réduit l’output le sera également. Les seuls mots que l’on retrouve dans le deux
phrases sont « the » et « but ». L’on a donc obtenu « The early bird might get the worm, but
I do nothing every day ».
Argumentation
Ce programme ne sert en soi pas à grand-chose. Il permet de générer des phrases assez
loufoques, mais pourrait être amélioré pour créer des noms de personnages, de villes ou
encore de planètes. La partie pratique de ce programme est que l’on peut cibler la réponse
et obtenir quelque chose souhaité, mais différent. Il fonctionne aussi avec la majorité des
langues, comme il se base sur ce qu’il reçoit.
L’affichage par un site web avec le programme Python comme serveur fonctionne bien, mais
il aurait été bien de forcer l’utilisateur à mettre des chiffres (pour le nombre de phrases
générées) au niveau du serveur Python et non pas seulement au niveau du client en HTML.
Ceci n’est pas vraiment important dans ce cas, mais c’est le genre d’erreur qui mène à des
failles de sécurité dans les systèmes. De plus nous aurions pu améliorer le code pour éviter
d’avoir des guillemets ou d’autres signes de ponctuation aux mauvais endroits ou encore
offrir d’autres options pour l’utilisateur.
Remerciements
Je voudrais tout d’abord remercier « La science appelle les jeunes » sans qui cette semaine
« fascination informatique » n’aurait jamais eu lieu. Un grand merci à Madame Anina Gyger
pour toutes les informations et l’organisation.
Dans un second temps je remercie le Collège de la Planta qui nous a donné l’accord de
participer à cet événement pendant une semaine de cours. Un grand merci à la
Fachhochschule Nordwestschweiz pour son accueil, notamment à Monsieur Claude Rubattel
pour notre encadrement, à l’étudiant en Master Mark Zeman et à l’apprenti Orell Bühler
pour leur aide à la réalisation du projet et à Markus Knecht.
Et finalement un grand merci à l’auberge de jeunesse et tous les gens qui ont participé à
l’organisation de cette semaine.
Références
Image de page titre de tagxedo.com
Markov Chains. A visual explanation by Victor Powell with text by Lewis Lehe
- http://setosa.io/blog/2014/07/26/markov-chains/
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !