Outils pour utilisateurs

Outils du site


linux:rivescript

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:rivescript [2016/07/10 20:37] – [Le code, expliqué] brunolinux:rivescript [2016/07/12 22:31] (Version actuelle) bruno
Ligne 1: Ligne 1:
-====== Introduction ======+====== Tutorial RiveScript ====== 
 +Traduction de la page « [[https://www.rivescript.com/docs/tutorial|RiveScript::Tutorial - Learn to write RiveScript code.]] » 
 +===== Introduction =====
 Ce tutoriel va vous aider à apprendre comment écrire vos propres personnalités de Chatbot en utilisant le langage RiveScript. Ce tutoriel va vous aider à apprendre comment écrire vos propres personnalités de Chatbot en utilisant le langage RiveScript.
  
-===== Qu'est-ce que RiveScript ? =====+==== Qu'est-ce que RiveScript ? ====
 RiveScript est un langage de script destiné à faciliter le développement de chatbots interactifs. Un chatbot est une application logicielle qui peut communiquer avec des humains en utilisant des langages naturels comme l'anglais afin de procurer un divertissement, des services ou tout simplement avoir une conversation.  RiveScript est un langage de script destiné à faciliter le développement de chatbots interactifs. Un chatbot est une application logicielle qui peut communiquer avec des humains en utilisant des langages naturels comme l'anglais afin de procurer un divertissement, des services ou tout simplement avoir une conversation. 
  
-===== Mise en route =====+==== Mise en route ====
 Pour écrire votre propre code RiveScript, vous aurez seulement besoin d'un simple éditeur de texte. Vous pouvez utiliser [[https://wiki.gnome.org/Apps/Gedit|gedit]] sous GNU/Linux, [[https://notepad-plus-plus.org/fr/|Notepad++]] sous Windows ou n'importe quel autre éditeur de texte en votre possession. Pour écrire votre propre code RiveScript, vous aurez seulement besoin d'un simple éditeur de texte. Vous pouvez utiliser [[https://wiki.gnome.org/Apps/Gedit|gedit]] sous GNU/Linux, [[https://notepad-plus-plus.org/fr/|Notepad++]] sous Windows ou n'importe quel autre éditeur de texte en votre possession.
  
Ligne 12: Ligne 14:
 Pour exécuter et tester votre code RiveScript, vous aurez besoin d' un interpréteur RiveScript, ou d'un programme qui utilise une bibliothèque RiveScript pour lire et à exécuter du code RiveScript.  Pour exécuter et tester votre code RiveScript, vous aurez besoin d' un interpréteur RiveScript, ou d'un programme qui utilise une bibliothèque RiveScript pour lire et à exécuter du code RiveScript. 
  
-Ce tutoriel suppose que vous utilisez la commade ''rivescript'' livré avec la bibliothèque Perl RiveScript. Sous les distributions GNU/Linux Debian  ou Ubuntu, vous pouvez installer le paquet suivant +Ce tutoriel suppose que vous utilisez la commade ''rivescript'' livré avec la bibliothèque Perl RiveScript. Sous les distributions GNU/Linux Debian  ou Ubuntu, vous pouvez installer le paquet « librivescript-perl », en tapant la commande suivante dans GNOME Terminal :
 <code bash> <code bash>
-apt-get install librivescript-perl+sudo apt-get install librivescript-perl
 </code> </code>
-===== Le répertoire projet =====+==== Le répertoire projet ====
 Pour ce tutoriel, vous devez créer un dossier pour enregistrer vos documents RiveScript. Suivent quelques emplacements conseillés, mais vous pouvez les placer où vous le souhaitez. Pour ce tutoriel, vous devez créer un dossier pour enregistrer vos documents RiveScript. Suivent quelques emplacements conseillés, mais vous pouvez les placer où vous le souhaitez.
  
-Pour les utilisateurs de Linux, Unix et Mac OS, je vous recommande de faire un dossier dans votre répertoire personnel, comme ceci:+Pour les utilisateurs de GNU/Linux, Unix et macOS, je vous recommande de faire un dossier dans votre répertoire personnel, comme ceci:
 <code bash> <code bash>
- Unix : /home/UTILISATEUR/rstut+ GNU/Linux : /home/UTILISATEUR/rstut
  macOS : /Users/UTILISATEUR/rstut  macOS : /Users/UTILISATEUR/rstut
 </code> </code>
Ligne 42: Ligne 44:
 Si vous éprouvez des difficultés à le faire fonctionner sur Windows, voir la page [[https://www.rivescript.com/docs/tutorial#windows-troubleshooting|dépannage de Windows ]] pour obtenir de l'aide.  Si vous éprouvez des difficultés à le faire fonctionner sur Windows, voir la page [[https://www.rivescript.com/docs/tutorial#windows-troubleshooting|dépannage de Windows ]] pour obtenir de l'aide. 
  
-====== Premiers pas ====== +===== Premiers pas ===== 
-===== Bonjour, humain ! =====+==== Bonjour, humain ! ====
 Écrivons nos premières lignes de code RiveScript ! Écrivons nos premières lignes de code RiveScript !
  
Ligne 73: Ligne 75:
 Essayez de dire quelque chose d'autre au robot, comme « comment allez-vous ? »  et voyer ce qu'il dit. Le bot doit répondre « ERR: No Reply Matched ». La raison est que vous avez dit quelque chose qui n'est traité par aucun code RiveScript. Il y a seulement un gestionnaire pour « bonjour bot », et rien d'autre. Plus tard, vous apprendrez à écrire une réponse « attrape-tout » qui sera utilisée quand vous dites quelque chose que le bot n'a pas été programmé pour traiter. Mais d'abord, revenons sur le code que vous avez écrit pour ''hello.rive''. Essayez de dire quelque chose d'autre au robot, comme « comment allez-vous ? »  et voyer ce qu'il dit. Le bot doit répondre « ERR: No Reply Matched ». La raison est que vous avez dit quelque chose qui n'est traité par aucun code RiveScript. Il y a seulement un gestionnaire pour « bonjour bot », et rien d'autre. Plus tard, vous apprendrez à écrire une réponse « attrape-tout » qui sera utilisée quand vous dites quelque chose que le bot n'a pas été programmé pour traiter. Mais d'abord, revenons sur le code que vous avez écrit pour ''hello.rive''.
  
-==== Le code, expliqué ===+=== Le code, expliqué ===
 Le code RiveScript est vraiment simple. Chaque ligne du fichier texte est une entité distincte (RiveScript est un langage de script orienté ligne). Les lignes de code RiveScript commencent toujours avec un symbole de commande (dans cet exemple, les symboles que nous voyons sont ''!'' , ''+'' et ''-'' ) et ils ont toujours une sorte de données qui les suit. Les données dépendentd e la commande utilisée. Le code RiveScript est vraiment simple. Chaque ligne du fichier texte est une entité distincte (RiveScript est un langage de script orienté ligne). Les lignes de code RiveScript commencent toujours avec un symbole de commande (dans cet exemple, les symboles que nous voyons sont ''!'' , ''+'' et ''-'' ) et ils ont toujours une sorte de données qui les suit. Les données dépendentd e la commande utilisée.
  
Ligne 85: Ligne 86:
 La commande ''-'' est la manière de définir une réponse à un déclencheur. Dans ce cas, lorsque le message de l'utilisateur correspond au déclencheur « bonjour bot », le bot doit répondre à l'utilisateur en disant « Bonjour, humain ! ».  La commande ''-'' est la manière de définir une réponse à un déclencheur. Dans ce cas, lorsque le message de l'utilisateur correspond au déclencheur « bonjour bot », le bot doit répondre à l'utilisateur en disant « Bonjour, humain ! ». 
  
-=====  Réponses aléatoires  =====+==== Réponses aléatoires ====
 Faire un bot qui répond toujours exactement de la même manière à ce que l'utilisateur dit va devenir très rapidement ennuyeux.  Pour cette raison, RiveScript, facilite l'ajout des réponses aléatoires à un déclencheur ! Faire un bot qui répond toujours exactement de la même manière à ce que l'utilisateur dit va devenir très rapidement ennuyeux.  Pour cette raison, RiveScript, facilite l'ajout des réponses aléatoires à un déclencheur !
  
Ligne 107: Ligne 108:
  
 Entre les balises ''{random}'' et ''{/random}'', séparez les chaînes avec un symbole tube et l'un sera choisi au hasard.  Entre les balises ''{random}'' et ''{/random}'', séparez les chaînes avec un symbole tube et l'un sera choisi au hasard. 
 +
 +===== Remarque à propos de style =====
 +Pour garder vos documents de RiveScript propre, en ordre et facile à lire (et à maintenir !), vous devez suivre ces guides de style :
 +
 +  * Utiliser des lignes vides pour séparer des groupes logiques de code. Par exemple, une ligne déclencheur et ses réponses doivent être regroupées, et une ligne vide devrait les séparer d'un déclencheur différent et de ses réponses.
 +  * Indentez le code à l'intérieur ou commencer un bloc.
 +
 +Vous apprendrez à connaître cela plus tard dans ce tutoriel. 
 +
 +Ainsi, notre ''hello.rive'' devrait ressembler à ceci maintenant : 
 +<code>
 +! version = 2.0                                                                                               
 +                                                                                                                 
 ++ bonjour bot                                                                                                    
 +- Bonjour, humain !                                                                                              
 +                                                                                                                 
 ++ comment tu vas                                                                                                 
 +- Je vais très bien, comment vas-tu ?                                                                            
 +- Je vais bien et toi?                                                                                           
 +- Bien :) et toi ?                                                                                               
 +- Génial ! Et toi?                                                                                               
 +- Je vais bien, merci de l'avoir demandé !                                                                       
 +                                                                                                                 
 ++ dire quelque chose au hasard                                                                                   
 +- {random}Ce message|Cette phrase{/random} a un mot au hasard. 
 +</code>
 +
 +===== Parlons poids =====
 +Bien que les réponses aléatoires soient certainement utiles, il y aura des moments où vous préférez que certaines réponses soient choisies plus souvent que d' autres. Par exemple, vous pourriez écrire un bot dont la personnalité est qu'il soit secrètement un extraterrestre prétendant être un humain qui fait semblant d'être un bot et vous voulez que le bot répondre un certain charabia inintelligible de temps à autre.
 +
 +Vous pouvez utiliser la balise ''{weight}'' dans une réponse pour augmenter la fréquence de la sélection de cette réponse par rapport aux autres. Dans notre exemple de charabia extraterrestre, vous pourriez écrire une réponse comme ceci :
 +
 +<code>
 ++ salutations
 +- Salut à tous ! {weight = 20}
 +- Bonjour ! {weight = 25}
 +- Yos kyoco duckeb !
 +</code>
 +
 +Ici, nous avons attribué un poids à chacune des réponses en français, et laissé le charabia seul. L'effet obtenu est que « Salut à tous ! » sera choisi 20 fois sur 46, « Bonjour ! » sera choisi 25 fois sur 46, et « Yos de la duckeb ! » sera choisi seulement une fois sur 46.
 +
 +Vous pouvez tester cela en disant « salutations »à votre bot maintes et maintes fois. Il devrait très rarement choisir la réponse « Yos kyoco duckeb ! » par rapport aux deux autres.
 +
 +La valeur du poids contrôle la probabilité que la réponse soit choisie. Les réponses qui ne comprennent pas explicitement une balise ''{weight}'' ont automatiquement un poids de un. La probabilité de chaque réponse choisie est le poids de la réponse divisée par la somme de tous les poids combinés (dans cet exemple, 20 + 25 + 1 = 46, de sorte que chaque réponse a son poids sur 46 chances d'être choisie).
 +
 +Les valeurs de poids ne peuvent pas être à zéro et ne peuvent pas être négatives.
 +
 +Vous **ne pouvez pas** utiliser des poids dans une balise ''{random}''.
 +
 +====== Saut de ligne  ======
 +À certains moments vous écrirez une très longue ligne de code RiveScript et vous allez vouloir la répartir sur plusieurs lignes. Dans ce cas, vous pouvez utiliser la commande ''^'' (Continuation). La commande ''^'' étend automatiquement les données de la ligne précédente. Voici un exemple :
 +<code>
 ++ recite moi un poeme                                                           
 +- La petite demoiselle Muffet assise sur un tabouret, \n                        
 +^ D'une manière nonchalante. \n                                                 
 +^ Avec son champ de force autour d'elle, \n                                     
 +^ L'araignée, le malotru, \n                                                    
 +^ n'est pas dans l'image aujourd'hui.  
 +</code>
 +
 +Notez que la commande de continuation n'insère pas automatiquement un espace entre la ligne précédente et la ligne de continuation. Prenons l'exemple suivant:
 +
 +<code>
 +// Il n'y aura pas d'espace entre « programmé » et « en utilisant » !
 ++ qui etes vous   
 +- Je suis une intelligence artificielle programmée
 +^ en utilisant RiveScript.
 +</code>
 +
 +Si vous avez demandé « qui etes vous » avec cette réplique, le bot répondra : « Je suis une intelligence artificielle programméeen utilisant RiveScript », sans espace entre « programmé » et « en utilisant ».
 +
 +Pour garantir qu'il y aura un espace entre les continuations, utiliser la séquence d'échappement ''\s'' où vous voulez que l'espace apparaisse.
 +<code>
 +// Celui-ci disposera d'un espace.
 ++ qui etes vous   
 +- Je suis une intelligence artificielle programmée\s
 +^ en utilisant RiveScript.
 +</code>
 +
 +Dans l'exemple « recite moi un poeme »,  la séquence d'échappement ''\n'' insère un saut de ligne à la place d'un espace.
 +
 +Si vous souhaitez souvent utiliser les continuations et que vous voulez presque toujours avoir des espaces (ou des sauts de ligne) entre chacun d' eux, vous pouvez indiquer au parseur de toujours insérer ces symboles automatiquement quand il voit une commande ''^''.
 +
 +Vous pouvez le faire avec une « option local du parseur » qui ne concerne que le fichier en cours et n'affecte les lignes qui viennent après l'option du parseur. Par exemple :
 +<code>
 +// Indique au parseur de joindre les lignes de continuation avec des sauts de ligne
 +! local concat = newline
 +
 +// Maintenant, nous n'avons pas besoin d'écrire explicitement des caractères \n caractères à chaque fois !
 ++ recite moi un poeme                                                           
 +- La petite demoiselle Muffet assise sur un tabouret,                        
 +^ D'une manière nonchalante.                                                
 +^ Avec son champ de force autour d'elle,    
 +^ L'araignée, le malotru,                                      
 +^ n'est pas dans l'image aujourd'hui. 
 +
 +// Maintenant, change le mode concat pour des espaces
 +! local concat = space
 +
 +// Ici, nous n'avons pas utiliser \s comme dans l'exemple précédent.
 ++ qui etes vous   
 +- Je suis une intelligence artificielle programmée
 +^ en utilisant RiveScript.
 +
 +
 +// Retour au mode de concaténation par défaut (qui n'insère aucun
 +// caractère lors de l'assemblage des lignes)
 +! local concat = none
 +</code>
 +
 +Sachant que le paramètre ''! local concat''  modifie la façon dont le parseur gère les lignes de continuation, ce paramètre est « au niveau du fichier » et affecte uniquement le parseur dans le fichier actuel. Lorsque le parser en a terminé avec un fichier et commence à traiter le prochain, le réglage de concaténation est remis à la valeur par défaut (''none'') et aucun espace ou saut de ligne ne sera plus automatiquement ajouté dans les commandes continuations.
 +
 +Les options supportées sont :
 +  * ''none'' : la valeur par défaut, rien est ajouté lorsque les lignes de continuation sont assemblées entre elles.
 +  * ''space'' : les lignes de continuation sont jointes par un espace (''\s'').
 +  * ''newline'' : les lignes de continuation sont jointes par un caractère de saut de ligne (''\n''). 
 +
 +===== Anatomie d'un cerveau RiveScript =====
 +
 +==== Le fichier begin ====
 +
 +Vous savez maintenant quelques-unes des notions de base sur la façon dont les déclencheurs et les réponses se rapportent les uns aux autres. Avant de continuer, vous devez savoir comment les cerveaux RiveScript sont généralement organisés. 
 +
 +
linux/rivescript.1468183060.txt.gz · Dernière modification : 2016/07/10 20:37 de bruno