Club robotique de Sophia-Antipolis

Accueil > Projets, études > Nos robots > Robots du club > Robots spéciaux > Nono, le robot d’animation pédagogique (2012) > Etude de l’AIML pour le Parlobot

Etude de l’AIML pour le Parlobot

jeudi 16 août 2012, par Julien H.

Les fées de l’intelligence artificielle se sont penchées sur Nono et ont accepté de lui donner un langage de référence pour programmer le logiciel de contrôle "Parlobot" qui lui permettra de s’exprimer.

Ce pourrait être AIML, un langage à balises (markup language) dédié à l’Intelligence Artificielle (AI en anglais) : il s’agit toujours de connecter une réaction à un stimulus.

Voici un exemple :

<?xml version="1.0" encoding="ISO-8859-1"?>

<aiml>
  <category>
    <pattern>Qui est-tu ?</pattern>
    <template>Je suis Nono, ravi de te rencontrer !</template>
  </category>
  <category>
    <pattern>Quelle heure est-il ?</pattern>
    <template>Il est <date/>.</template>
  </category>
  <category>
    <pattern>Salut</pattern>
    <template><srai>HELLO</srai></template>
  </category>
  <category>
    <pattern>Bonjour</pattern>
    <template><srai>HELLO</srai></template>
  </category>
  <category>
    <pattern>HELLO</pattern>
    <template>
      Bonjour <get name="name"/>!
      Mon nom est Nono, et toi c'est comment ?
    </template>
  </category>
  <category>
    <pattern>C'est *</pattern>
    <template><srai>GREETING <star/></srai></template>
  </category>
  <category>
    <pattern>Mon nom est *</pattern>
    <template><srai>GREETING <star/></srai></template>
  </category>
  <category>
    <pattern>GREETING *</pattern>
    <template>
      Ravi de te rencontrer, <set name="name"><star/></set>. :-)
      <gossip><get name="name"/> est enregistré.</gossip>
    </template>
  </category>
  <category>
    <pattern>Très heureux de te rencontrer</pattern>
    <template>Merci, <get name="name"/>.</template>
  </category>
  <category>
    <pattern>C'est quoi *</pattern>
    <template>Je ne sais pas ce que <star/> peut bien être.</template>
  </category>
  <category>
    <pattern>_ robot</pattern>
    <template>Je suis un robot.</template>
  </category>
  <category>
    <pattern>_ ton nom</pattern>
    <template>Mon nom est Nono, ravi de te rencontrer !</template>
  </category>
  <category>
    <pattern>Parle moi de *</pattern>
    <template><sr/></template>
  </category>
  <category>
    <pattern>Affiche cela : *</pattern>
    <template><system>result = "<star/>";</system></template>
  </category>
  <category>
    <pattern>*</pattern>
    <template>Désolé, mes compétences sont limitées.</template>
  </category>
</aiml>

Ce serait une bonne solution pour faire évoluer le code actuel : en effet, les solutions de type "chatterbot" gèrent surtout des relations directes entre un humain qui saisit un texte et un robot logiciel qui lui répond.

Or le cerveau de Nono doit pouvoir réagir à des stimulus internes et à des interactions avec les utilisateurs qui ne sont pas textuelles : nous allons donc ajouter une couche intermédiaire qui traduit les boutons, les capteurs, et même l’horloge interne en stimulus (du texte) qui sera transmis au Parlobot.

Par exemple, les entrées des capteurs pourraient devenir :

 "GAUCHE" pour une nouvelle détection avec le capteur de présence gauche
 "OUI" pour l’appui sur le bouton 1
 "DELAI 20" si cela fait plus de 20 secondes que rien ne s’est passé.r
 "APPROCHE" ou "ELOIGNE" pour le capteur de distance

On pourra alors faire parler Nono en fonction de ces "phrases" d’entrée générées par des interruptions ou des boucles de lecture des capteurs. Il dira :

 <category>
   <pattern>ELOIGNE</pattern>
   <template>Hey attends ! Tu pars déjà ?</template>
 </category>
 <category>
   <pattern>DELAI *</pattern>
   <template>Ouh ouh ! Il y a quelqu'un ? Déjà <star/> secondes que j'attends !</template>
 </category>

Et en allant plus loin, ce qu’il dira pourra être intercepté pour devenir une action interne :

 <category>
   <pattern>GAUCHE</pattern>
   <template>TOURNE TETE</template>
 </category>
 <category>
   <pattern>DELAI 20</pattern>
   <template>BUZZER 5</template>
 </category>

Ces réponses ne seront pas prononcées, mais déclencheront un moteur ou une sortie particulière.

Prêt à découvrir toutes les subtilités de ce langage ? Bonne lecture !!

Ainsi tout le programme pourra être enregistré dans un fichier texte à partir de balises XML, donnant la possibilité à une mise à jour par n’importe qui, voire en proposant à Nono d’apprendre de nouvelles phrases et de nouvelles actions lorsque aucune réponse ne sera enregistrée.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.