Overblog
Suivre ce blog Administration + Créer mon blog
Le blog du CRRIAM
Articles récents

Comment fabriquer un tchat bot en français

18 Octobre 2013 , Rédigé par crriam Publié dans #Rivescripte debutant

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

  dans le tuto en anglais . 

  ou traduit par google

 

 

 

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

 

 

 

 

 

Lire la suite

Organisation interne des fichiers pour tenir une vrai conversation

31 Juillet 2013 , Rédigé par crriam Publié dans #organisation des fichiers rivescripte

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.

 

Lire la suite
<< < 1 2 3 4 5 6 7 8 9 10 20 30 > >>