Overblog Suivre ce blog
Administration Créer mon blog
Le blog du CRRIAM

Articles avec #l'aiml tag

Les avantages et les inconvénients des jokers _ et *

10 Avril 2011 , Rédigé par crriam Publié dans #l'aiml

Écrit par Philippe YONNET du tres bon site pnambique qui n'existe plus :

La qualité des fichiers AIML et d'une manière générale des bases de personnalité dépend de l'utilisation judicieuse des _ et des *. Il est donc important de savoir quand utiliser l'un ou l'autre et quels sont leurs avantages et leurs inconvénients respectifs.

1. Le choix de "*" ou "_" change la logique et l'ordre de traitement des stimulus : il faut penser les templates différemment selon que l'on utilise l'un ou l'autre

Il existe une balise "<star />" qui permet de laisser à une nouvelle catégorie le soin de reconnaître une partie du stimulus, même après qu'une première correspondance avec un pattern ait été trouvée :

exemple 1: stimulus = "Bonjour ! Tu vas bien ?" matche avec "BONJOUR *". Si le template est "Salut. <srai><star/></srai>", le second segment "tu vas bien" va matcher avec "* TU VAS BIEN" et la réponse complète sera : "Salut. Oui je vais bien et toi". L'ensemble du stimulus "Bonjour ! Tu vas bien ?" peut être traité avec des patterns utilisant des "*".

exemple 2 : si le deuxième pattern est rédigé à l'aide d'un "_", devenant "_ TU VAS BIEN", la réponse sera uniquement "Oui je vais bien et toi ?". A noter que l'on peut quand même prévoir de réutiliser l'info cachée par le "_" avec un template rédigé comme suit : "<srai><star/></srai>. Oui je vais bien et toi ?"

2. "_" rend plus rapide l'exécution du code AIML

Les fichiers AIML sont parsés par des logiciels qui doivent en fait être capables d'analyser des graphes extrêmement complexes à la vitesse de l'éclair. L'utilisation des "_" (underscores) permet d'écrire des règles prioritaires qui "court circuitent" l'analyse de milliers de branches inutiles. Le problème de ces "raccourcis" c'est qu'ils peuvent conduire à ne jamais rencontrer l'embranchement qui donnerait la réponse la plus intelligente.

3. "_" est une arme de réduction massive

"_" est très utiles pour écrire des règles de réduction : comme les règles écrites à base de "_" sont traitées prioritairement, "_" permet de supprimer tous les mots vides et tout ce qui n'est pas porteur de sens dans une phrase : adverbes, locutions, conjonctions, etc... avant de passer la main aux fichiers de catégories capables de traiter les stimulus contenant des termes porteurs de sens.

4. "_" est aussi une formidable moyen de rendre votre robot idiot

Avec des "_" vous pouvez "shunter" sans vous apercevoir des milliers de réponses très intelligentes que vous avez mis des semaines à réaliser et qui ne sortiront jamais parce qu'une réponse prioritaire à l'aide de "_" aura pris le dessus.

Lire la suite

Le concept clé de l'AIML : la réduction symbolique

10 Avril 2011 , Rédigé par crriam Publié dans #l'aiml

Texte repris du site qui n'existe plus pnambique.com:

Écrit par Philippe YONNET

Le concept clé de l'AIML : la réduction symbolique

La réduction symbolique est un concept un peu abstrait, mais qu'il est important de bien maîtriser pour parvenir à réaliser des fichiers AIML "élégants" : à la fois complets, mais comportant un nombre minimum de catégories. 

Définition
La réduction symbolique désigne, dans le contexte de l'AIML, toutes les techniques permettant de supprimer dans une forme (pattern) les éléments inutiles, pour ne garder que ce qui constituera un "stimulus" traitable par le Chatterbot.

Pourquoi opérer des "réductions symboliques"


Quelle que soit la langue (mais c'est surtout vrai en français), il existe de nombreuses manières grammaticalement juste de formuler une phrase ayant un sens donné. A ces variantes autorisées par la syntaxe, on peut aussi ajouter des variantes de graphies possible (Monsieur, M., Mr), et bien sûr, les variantes involontaires provoquées par les fautes de frappe, d'orthographe, de syntaxe, ou l'emploi d'une langue relâchée (ah les joies du langage SMS...)

La réduction symbolique a pour objectif de supprimer dans la chaine de caractère initialement entrée par l'internaute, tout ce qui peut "masquer" un stimulus identifiable, et de "reduire" cette chaine parfois très longue à un groupe de termes identifiable à l'aide d'une "forme" stockée dans une catégorie.

Les différentes étapes de la réduction symbolique


La réduction symbolique passe par plusieurs étapes, certaines gérées par l'analyseur syntaxique (parser) AIML, d'autres doivent être programmées par le botmaster en AIML.

La normalisation.

La normalisation consiste à "toiletter" la chaine de caractères de tout ce qui peut empêcher une comparaison avec les "patterns" stockées dans les fichiers AIML. Il s'agit notamment d'éliminer les caractères bizarres, les espaces en trop, les caractères de ponctuation etc...

Ex :
Entrée : "Salut ma belle Dis-moi qui es ton botmaster ..."
Devient : "SALUT MA BELLE DIS-MOI QUI ES TON BOTMASTER"


L'élimination des mots vides

Certains mots n'apportent aucune information qui soit utilisable par l'analyseur syntaxique. Celui ci ne cherche pas à déterminer le sens d'une phrase, mais des "formes", des suites de caractère... Dans ce contexte, ce qu'il faut repérer, ce sont des chaines "caractéristiques", et non pas des termes génériques. On peut par exemple oublier sans problèmes les conjonctions et les adverbes et certains adjectifs

"DONC SALUT MA BELLE ET DIS-MOI VITE QUI ES TON BOTMASTER"
devient :
"SALUT MA BELLE DIS-MOI QUI ES TON BOTMASTER"

Le découpage en éléments simples

Si la phrase est longue, il est possible qu'elle contienne différents blocs qui peuvent (doivent) être analysés séparément. Certains parsers AIML autorisent le découpage à l'aide notamment des signes de ponctuation. Mais pas la plupart ne gèrent pas cette possibilité, en raison du manque de fiabilité de la ponctuation tapée par les internautes. Le découpage d'une phrase en éléments simples passe donc par des reconnaissances de forme successives, en cascade

Ex : "SALUT MA BELLE DIS-MOI QUI ES TON BOTMASTER" matche d'abord avec "SALUT *"
Après traitement de salut, il reste "MA BELLE DIS-MOI QUI ES TON BOTMASTER" à traiter.
Cette chaine matche avec "* BOTMASTER"
Ce qui permet de générer la réponse appropriée suivante avec deux catégories AIML seulement :

Input : "Salut ma belle !  Dis-moi qui es ton botmaster ..."
Réponse : "Bonjour vous ! Mon botmaster s'appelle Philippe. Mais je ne vous en dirai pas plus, rester discrète fait partie de mon métier"

La standardisation

La standardisation consiste à gérer toutes les variantes d'un stimulus donné, afin de renvoyer toutes ces variantes vers une catégorie unique.
Par exemple :
HELLO = BONJOUR = HI = COUCOU = KIKOU => SALUT

Cela signifie que l'on peut créer une catégorie unique pour les salutations, capable de délivrer une centaine de réponses possible différentes. Cette réponse est activée, après réduction symbolique, par toutes les formes de salutations qui auront pu être entrées sous formes de catégories, et qui toutes renvoient vers la catégorie salutations.

La standardisation permet aussi de gérer les fautes de frappe, d'orthographe, d'accent etc...

 

 

 

Lire la suite
1 2 > >>