Comment fabriquer un tchat bot en français
Cette page s'adresse tout principalement au débutant.
Comment fabriquer un tchatbot, tchat bot ou tchatter bot en français et facilement ?
Principe général du tchat bot
un utilisateur entre dans un fenêtre de tchat sa phrase et le robot lui répond du genre :
- bonjour robot
- salut l'humain !
Comment ça marche ?
Le programeur, (ou botmaster )créer des fichiers où il entrera ce que le robot doit reconnaitre et quelle répoonse il doit y apporter.
Tout d'abord, il nous faut un "logiciel", l'interpreteur.
C'est quoi ?
c'est un programe qui comprendra le code et le fera afficher dans une fenetre de tchat.
Il existe different interpreteur dans different language, notament les interpreteur du genre ALICE qui fonctione a partir de fichier AIML.
Nous on utilisera le Rivescript !
Pourquoi ?
Parcequ'il est beaucoup plus facile a utiliser et a programer, qu'on peut l'utiliser aussi bien en local sur son disque dure ou une clé usb que sur le web avec un site internet. voir le comparatif ici
Comment faire ?
D'abord, télécharger le programe ici
Une fois que c'est fait, vous vous retrouver avec un fichier .zip C'est une archive, il faut le décompresser sur votre disque dur sur c: par exemple
vous aurez alors un repertoir (dossier) nommé rivescript
Dans ce dossier, il y aura d'autres dossiers, celui qui nous interesse, c'est celui qui s'appel "eg"
car dans celui ci, se trouve les fichiers chat.html et index.html
Et alors ?
Ben c'est avec eux qu'on va faire marcher le robot. Il suffit de cliquer dessus et de les ouvrir ou l'un ou l'autre avec firefox (pas chrome, ça bug)
C'est quoi la difference entre ces deux fichiers ?
chat.html est entièrement fonctionel, mais il ouvre uniquement la fenetre de tchat, index.html, quant à lui, ouvre la fenêtre de tchat, mais aussi permet d'avoir la synthese vocal.
Voila, avec ça vous avez le robot. Il a quelques connaissance, mais tres peu.
Comment lui apprendre des choses ?
les connaissances du robot son stockées dans les fichier .rs du dossier eg/brain
vous avez déja cela :
activitepresente.rs
age.rs
cerveaudebase.rs
depart.rs
reactionbot.rs
substitutions.rs
variables.rs
Pourquoi plusieur fichiers ?
Pour structurer nos donnée par sujet de conversation, c'est plus simple ensuite de s'y retrouver.
Comment modifer les fichiers ?
Pour modifier le ou les cerveaux,:
utilisez un simple editeur de texte comme notpad, notpad2 (a préférer, on le trouve en téléchargement ici ).
Une fois que c'est fait, vous n'avez plus qu'a ouvrir un fichier .rs et écrire votre code.
Exemple, je veux que le robot sache dire bonjour quand on le salut
+ salut
- bonjour humain
ce que l'utilisateur entre et sur la ligne + ce que le robot doit répondre sur la ligne -
probléme, la ligne + salut ne fera que reconnaitre si l'on inscrit salut, mais ne reconnaitra pas pour "salut toi"
pour ça on utilisera le caractère *
+ salut *
- bonjour humain
reconnaitra donc :
salut toi
salut mariane
salut bernard
salut joli robot
etc.
Mais ne reconnaitra pas
"et bien salut toi" ou le simple "salut"
pour ça faudrait qu'on mette un * aussi devant le salut
Pour qu'il reconnaisse toute les vraiante, on se retrouvera donc avec un fichier
de ce style :
+ salut toi
- bonjour humain
+ * salut toi
- bonjour humain
+ * salut toi *
- bonjour humain
+ salut toi *
- bonjour humain
Là, votre robot reconnaitra tout.
Pour simplifer la programation au cas ou l'on veuille lui faire répondre autre chose que bonjour humain, on utilisera la commande @ qui renvera sur la phrase désigné
comme ça
+ salut
- bonjour humain
+ * salut
@salut
+ * salut *
@salut
+ salut *
@salut
Pour changer la réponse on n'aura qu'a changer dans la 2eme ligne.
Une autre commande interessante a utiliser, c'est [*]
car ce code remplace tout le groupe de code ci dessus.
+ [*] salut [*]
- bonjour humain
Alors pourquoi ne pas toujours l'utiliser ?
parceque [*] est tres puissant, et qu'il faut le manier avec précaution plus de détail ici
Vous voici armé pour continuer a programmer en rivescripte.
Le rivescript vous permet de faire énormément de chose, enregistrer des valeurs dans des variables, les comparer, utiliser des contitions etc. vous trouverez toutes les base
Quelque précisions qui vous éviterons de vous casser la tête bêtement (comment moi :) avant de vous lancer
Vos code rivescript doivent imperativement ne comporter ni majuscule ni accent ni apostrophe ni tiret dans les commandes !
meffiez vous des espaces ! la commande @ par exemple qui remplace le <srai> ne doit pas avoir d'espace
Pensez aussi à actualiser la page web dans votre navigateur pour que vos changement prenent effet.
google chrome ne fonctione pas en local, utilisez firefox.
ET Aussi
Si vous voulez ajouter d'autres fichiers, rien de plus simple, vous nomez votre ficher en .rs le metez dans le repertoire brain.
Il vous faut aussi modifier le fichier chat.html pour lui indiquer votre fichier suplémentaire, en le rajoutant a la suite des autres ici :
// Load our files from the brain/ folder. Inscrire ici vos fichiers cerveaux a ouvrir,
// entre les crochets attention a ne pas oublier la virgule finale
rs.loadFile([
"brain/activitepresente.rs",
"brain/age.rs",
"brain/cerveaudebase.rs",
"brain/depart.rs",
"brain/reactionbot.rs",
"brain/substitutions.rs",
"brain/variables.rs",
"brain/votrenouveaufichier.rs"
], on_load_success, on_load_error);
// fin insertion fichiers cerveaux
Attention, pas d'espace pas de majuscule pour votre nom de fichier ! ça créer parfois des bugs
Amusez vous bien
Organisation interne des fichiers pour tenir une vrai conversation
Introduction
Comme nous avons pu le voir, une veritable conversation s'articule autour de la régle des 33%
33% d'écoute
33% de monologue
33% de veritable dialogue (échange)
Il faudra donc créer des fichiers sur cette base.
tantot le robot pose des questions, tantot il écoute, tantot il échange.
Les difficultés :
- Ne pas reposer les mêmes questions
- Ne pas redire quelques chose de déja dis
- Ne pas répondre à côté.
Pour cela, on va donc organiser plusieurs paramètre
1 verifier tout ce que l'on demande avec des variables du type : verifage
2 verifier tout ce que l'on dit sur le robot avec des variables du type: dejadit
3 alterner de façon aléatoir les questions et les affirmations
4 identifier le sujet dont on parle
Pour ça, j'ai mis au point un gabarit :
+ depart residence
* <get verifresidence> == 1 => {@depart conversation}
- tu habites ou ? <set sujet=la ou on habite><set verifresidence=1>
// on met le sujet en memoire, c'est lui qui servira a determiner les reste de la conversation
// le module suivant permets de generer aleatoirement une conversation lorsque * est reconnu
+ depart la ou on habite // depart sujet
- {@questions la ou on habite} // pour du alleatoire de discusion entre monologue et questionement
- {@reponses "sujet"}
+ questions la ou on habite
* <get verifadresse> == undefined => quel est ton adresse <set verifadresse=1>
* <get verifaimehabite> == undefined => tu aimes la ou tu habites <set verifaimehabite=1>
* <get verifdepartement> == undefined => tu habites dans quel departement <set verifdepartement=1>
* <get verifregion> == undefined => c'est quelle region ça ? <set verifregion=1>
- {@depart conversation}
+ reponses la ou on habite
* <get dejaditadresse> == undefined => moi, {@quel est ton adresse} <set dejaditadresse=1>
* <get dejaditville> == undefined => ok ben moi, {@tu habites dans quelle ville} <set dejaditville=1>
* <get dejaditdepartement> == undefined => moi, {@tu habites quel departement} <set dejaditdepartement=1>
* <get dejaditregion> == undefined => {@tu habites quel region} <set dejaditregion=1>
* <get dejaditpays> == undefined => {@tu habites quel pays} <set dejaditpays=1>
- {@depart conversation}
// ensuite viennent toutes les réponse aux question precise de l'utilisateur
+ [*] tu prefere [*] ville [*] campagne [*]
- <bot prefervilleoucampagne> <set dejaditprefervilleoucampagne=1> // ne pas oublier de mettre a 1 le deja dit sinon le bot va le redire
+ [*] tu aime [*] (ville|maison|departement|pays|habites)
- <bot aimelaouhabite> <set dejaditaimelaouhabite=1>
etc. etc.
Complément requit :
Comme on peut le voir, à la fin des questions, ça renvois sur depart conversation, il faudra donc l'avoir. Cela servira a orienter sur d'autre sujet de conversation.
Pour que tout ça fonctionne, il faut aussi (moi c'est dans le fichier "quoi.rs" mettre
+ *
* <get sujet> != undefined => {@depart <get sujet>}
- quoi, qu'est ce que tu dis ?
avec ça, si le robot ne reconnait pas ce que dit l'utilisateur, il redirigera sur la production aléatoire des question réponse concernant le sujet.