My First Chatbot
Projet de S1 2023-2024
David Nahon EFREI 2023-2024
Rafael Fellbom groupe PLUS
Introduction :
Ce projet, appelé “My first chatbot”, était le premier projet de L1, il
s’agissait de mettre à profit les connaissances acquises en cours et TP de
python afin réaliser le mieux possible les taches demandées. Le projet est
séparé en 3 parties distinctes ; la première permet de mettre en place des
fonctions de bases, la deuxième à coder l’étendu du code demandé dans le
projet et la troisième propose un large panel de fonctions et ajout à faire en
bonus. L’ensemble de ces parties permettent de mettre en place un
programme qui lorsque l’on va lui soumettre des fichier texte, va les analyser
mot par mot afin de pouvoir trouver facilement les mots clés. Après cette
analyse, il sera possible de poser des questions et en trouvant les termes clés
dans la question, associé un texte en réponse afin que l’utilisateur puisse
trouver une réponse adaptée. Ce projet contient donc beaucoup de challenge,
il s’agit non seulement de comprendre l’intérêt de chaque fonction afin de
pouvoir optimiser la façon dont elles fonctionnent mais aussi de mettre en
pratique les différentes notions du cours. Le projet est aussi un moyen,
d’apprendre à travailler en groupe puisqu’il s’agissait d’un travail à faire en
groupe de 2, et avec un délai de 3 mois.
Fonctionnalités techniques :
Nous avons donc pu mettre en point plusieurs fonctionnalités dans notre projet, celles-ci
sont fonctionnelles :
- L'ensemble des fonctions dites de bases (extraction des noms – association d’un prénom à
chaque président - conversion en minuscule de l’intégralité des textes puis dépôt de ceux-ci
dans une zone précise)
- Les 2 fonctions TF et IDF permettants une fois assemblée via la fonction TFIDF de terminer la
partie 1
- Une interface permettant de faire fonctionner et s’arreter le code correctement.
- 3 fonctions en lien, consistant en la possibilité pour l’utilisateur de marquer une question,
puis le traitement de celles-ci afin d’en sortir les mots clées et la troisième fonction servant a
relier celles-ci pour être facilement raccordées au menu
Présentation technique :
Notre programme fonctionne autour d’un menu, celui-ci s’affiche dès le lancement et
propose à l’utilisateur plusieurs choix, 6 en tout. Depuis ce menu l’utilisateur peut donc choisir une
action qu’il souhaite faire, celle-ci sera effectuée puis l’utilisateur aura à nouveau le choix de faire
autre chose.
Menu pour l’utilisateur
Parmi les actions que l’utilisateur peut faire, on retrouve la possibilité tout d’abord d’afficher
les mots non-important de chaque test. Pour rendre cela possible, plusieurs actions sont faites
auparavant, notamment le traitement des différents textes. Grace a plusieurs fonctions ceux-ci vont
se voir retirés leur ponctuation ainsi que modifié afin que toutes les lettres soient en minuscules. Les
textes traités sont alors déposés dans un dossier diffèrent nommés “cleaned”.
Liste des mots les moins importants
Après cela, les texte vont être tous parcourus et séparés en mots, chacun de ces mots ayant
une place dans un dictionnaire et son nombre d’occurrences, il s’agit de TF. Enfin via une formule
appliquée à chacun d’eux par une fonction (IDF), les mots sont classés et s’ils ont un score
suffisamment élevé dans la matrice TF-IDF ; l’utilité étant de définir grâce au nombre d’apparition de
certains mots et le nombre de textes dans lesquels on les trouve leur importance.
Une fois toutes ses étapes effectuées il est donc possible de donner les mots les plus
importants (selon leur score idf) a l’utilisateur, ou bien lui dire le mot le plus prononcé dans le
discours de Jacque Chirac.
Mot ayant le plus gros score idf
Résultat du mot le plus dit par Jacque Chirac
Enfin il est possible pour l’utilisateur de poser une question, celle-ci sera analysée via
fonctions permettant de changer la phrase en une liste de mots puis de trier ses mots en ne
gardant que ceux présent dans les discours des présidents. Nous n’avons pas pu aller plus
loin mais cela aurait permis de pouvoir en vérifiant lequel de ces mots avait le score idf le
plus élevé, proposer une réponse adaptée à l’utilisateur.
Durant l’écriture du code nous avons croisés plusieurs obstacles, les principaux furent
finalement résolus en posant les problèmes et en mettant à profit nos cours d’algorithmique.
Notre plus grand problème fut le temps et sa gestion, nous empêchant d’ailleurs de finir le
projet dont nous commencions à voir le but final approché.
Enfin malheureusement une contrainte technique de taille s’est imposée car le git de l’un de
nous ne fonctionnant plus et amenant à chaque tentative sont lots de bug, il a été un peu
plus compliqué de se coordonner même si nous avons réussi à le faire
Bilan :
Si nous sommes déçus de ne pas avoir pu venir à bout de ce projet, nous
repartons tout de même heureux d’avoir pu surmonter ce “challenge”,
qui nous a demandé d’approfondir nos connaissances en python et de
toucher un sujet très intéressant. Nous avons aussi acquis de meilleurs
reflexes pour travailler en groupe, en communication surtout et pris
conscience que la gestion du temps est essentielle. Nous espérons
pouvoir tirer de bons réflexes de ces enseignements afin de pouvoir
nous améliorer pour le projet du 2eme semestre et ferons de notre
mieux pour que ce soit le cas.