Authentification :

Connexion
Pas encore de compte ? Enregistrez-vous
 
Accueil arrow Articles

Moteur de recherche

Affichage type blog de toutes les sections sans images
Quelques problèmes spécifiques au français en AIML : la graphie Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
18-05-2008

L'écriture du français pose quelques problèmes spécifiques lorsque l'on crée des catégories en AIML. L'essentiel de ces problèmes provient de l'existence des caractères accentués, de l'élision (les problèmes liés à la syntaxe seront abordés dans d'autres articles).

Les caractères accentués 

Le français utilise cinq signes dits "diacritiques" :

  • l'accent aigu
  • l'accent grave
  • l'accent circonflexe
  • le tréma
  • la cédille 

Le problème, c'est que l'usage veut que ces signes ne soient pas utilisés dans les majuscules (par erreur parait il car les majuscules DOIVENT être accentuées). Par ailleurs, de nombreux françai, même bons en orthographe, commettent des erreurs d'accents. Enfin, nombreux sont ceux qui omettent de taper les accents dans les champs de recherche sur des applications internet, car il est fréquent que les accents soient tout bonnement ignorés.

Le problème, c'est que ce n'est pas le cas dans toutes les implémentations du langage. Par exemple, pour le programme Z (alias Pandorabots), "génération" ne matche pas avec "generation".

Au contraire, le programme E (implémentation en php) le permet par un paramétrage de startup.xml

Par prudence, il faudra donc générer les variantes des patterns avec des accents et sans les accents, pour permettre aux catégories de fonctionner sur toutes les implémentations.

Quelques bizarreries du français :

                    Le tréma

                    le tréma ne se rencontre que dans les mots suivants :

  • boësse, boëte, canoë, foëne, maërl, moëre, Azraël, Gaël, Ismaël, Israël, Joël, Judicaël, Michaël, Nathanaël, Noël, Raphaël, Staël, Laëtitia. Les mots goëland et poëme de graphie archaïque peuvent exister dans le langage poétique ;
  • aïeul, ambiguïté*, amuissement, stoïle, naïf, païen, pagaïe, baïonnette, coïncider, stoïque, archaïque, haïr, ouïe, ouïr, astéroïde, maïs, paranoïa, voltaïque, laïc, Loïc ;
  • aiguë*, ambiguë*, béguë*, capharnaüm, ciguë*, Ésaü, Emmaüs, bisaiguë*, crapaüter (variante de crapahuter), contiguë*, exiguë*.

Les rectifications de 1990 font remonter le tréma sur la voyelle effectivement prononcée. Les mots modifiés sont signalés ici par une astérisque. Pour ces mots il y'a donc plusieurs graphies possibles.

L'accent circonflexe apparait sur a, e, i, o et u.

L'accent grave n'apparait que sur a, et e (et sur u uniquement dans "où")

L'accent aigu n'apparait que sur e

La cédille sur c 

=> il faut prévoir ces variantes dans notre générateur de patterns automatique

Nota bene : lorsque la variante avec accent correspond à une écriture diacritique (c'est à dire que l'accent sert à distinguer deux mots au sens ou à l'utilisation différente, comme ou et où, sur et sûr) il sera possible de créer une catégorie beaucoup plus intelligente. Il est donc intelligent de créer un dictionnaire spécial de ces formes diacritiques pour enrichir la génération automatique de catégories.

 L'élision 

En français, le e muet en fin de mot est remplacé par une apostrophe s'il est suivi d'une voyelle. Les articles comme le, les pronoms comme je, de, me, te, se, les adverbes comme ne, le mot que, sont donc régulièrement élidés et s'écrivent l', m', t', s'.

L'élision s'étend à d'autres cas quand la prononciation de deux voyelles consécutives devient gênante : c'est vrai avec "la" (exemple la élision devient l'élision), avec du, avec si ("si il" devient s'il). Ces cas sont beaucoup plus rares.

Bizarreries et cas particuliers
Certains mots débutant par une voyelle ne peuvent être précédés d'un autre mot élidé. C'est vrai des mots commençant par un h aspiré. Par exemple, haricot.
Mais il y'a d'autres exceptions : onze, et huit
D'autres mots entrainent des élisions avec des règles particulières :
Entre, Jusque, Lorsque, Parce que, Presque, Puisque, Quelque, Quoique
Par ailleurs des formes de langage parlé ou des formes "familières" se transcrivent par des élisions.

Problème, toutes les implémentations ne gèrent pas forcément les élisions correctement. Le programme E (php) a tendance a remplacer les apostrophes par rien, ce qui crée des catastrophes. Il faut donc modifier le programme, ou plus simplement, substituer toutes les formes d'élision possible par la séquence sans apostrophe. (remplacer "l'é" par "l é"). Cela se fait en modifiant le fichier startup.xml.

Le programme Z (Pandorabots) comme d'autres implémentations gèrent normalement les élisions (l'apostrophe est remplacée par un espace). Donc il n'est pas utile de créer les variantes avec et sans élision. Par contre, la disparition de l'apostrophe rend l'identification de la forme élidée difficile (on se retrouve avec des l s t j isolés dans les patterns).

Pour générer des catégories automatiquement de manière intelligente, il sera donc intéressant de reconnaître les formes élidées dans les patterns pour en tirer des informations utiles comme la personne (j' m' = 1ère personne, t' deuxième etc...). 

 Nous verrons dans un deuxième article les problèmes de syntaxe, comme l'existence de quasi mots vides (pronoms, articles), la multiplication des morphèmes, et les problèmes posés par le tour interrogatif, les subordonnées, et les différences entre langage parlé, et langage écrit.

 

Dernière mise à jour : ( 18-05-2008 )
 
Quand utiliser "star"=* et underscore="_" ? Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
11-05-2008

Rappelons l'exemple déjà utilisé dans l'article précédent : d'un côté, des catégories chargées de répondes aux insultes.

 

<category>
<pattern>ESPECE DE *</pattern>
<template>Malotru !</template>
</category>

<category>
<pattern>ESPECE D *</pattern>
<template>Goujat !</template>
</category>

<category>
<pattern>_ ESPECE *</pattern>
<template>Mal élevé !</template>
</category>

<category>
<pattern>_ ESPECES D *</pattern>
<template>Toi-même !</template>
</category>

 

De l'autre, on cherche à donner des infos sur les ornithorynques :

<category>
<pattern>ORNITHORYNQUES</pattern>
<template><srai>ORNITHORYNQUE</srai></template>
</category>

<category>
<pattern>ORNITHORYNQUE</pattern>
<template>L'ornithorynque (Ornithorhynchus anatinus) est une petite espèce de mammifère semi-aquatique endémique vivant dans l'est de l'Australie</template>
</category>


Et imaginons que quelqu'un pose la question suivante :

"Est-ce qu'il y a plusieurs espèces d'ornithorynque ?". Je pense que la réponse "toi même !" risque de surprendre l'utilisateur...

(la phrase ci dessus correspond au pattern _ ESPECES D *)

En fait il y'a une collision entre deux patterns, le premier "_ ESPECES D *" prenant le dessus.


Une phrase commençant par "espèce de" est probablement une insulte. On peut garder les deux premières catégories telles quelles. Une phrase avec le mot "espèce" au milieu est ambigüe. On peut soit supprimer ce pattern pour laisser le Chatterbot répondre de façon générique quelque chose du genre "je ne sais pas si les ornithorynques sont une espèce en danger" ou simplement "je ne sais pas".

Dernière mise à jour : ( 11-05-2008 )
Lire la suite...
 
Les avantages et les inconvénients des jokers _ et * Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
11-05-2008
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.

Lire la suite...
 
Les quatre patterns à connaître pour faire reconnaître un "mot clé unique" Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
11-05-2008
Dernière mise à jour : ( 11-05-2008 )
Lire la suite...
 
Comment faire réagir un chatterbot à des mots clés précis ? Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
11-05-2008
Pour que le Chatterbot semble intelligent et comprendre ce qu'on lui demande, il doit répondre à la fois à deux objectifs contradictoires :

1°) Reconnaître des stimulus précis. Et répondre précisément (=> savoir reconnaître ces mots clés au niveau du bruit)
2°) Comprendre le type de questions qu'on lui pose... Et réagir en fonction (=> savoir créer des comportements génériques adaptés)

Le second objectif est très difficile à atteindre... Il oblige à recenser tous les types d'interaction habituels avec l'avatar, de rédiger des patterns correspondant avec l'ensemble des variantes des stimulus entrés dans chaque contexte, de procéder à des réductions symboliques en cascade et de renvoyer vers une (ou le plus souvent plusieurs) catégorie(s) chargée de fournir les réponses. Nous détaillerons abondamment dans de prochains articles les techniques que l'on peut utiliser pour traiter les questions, et nous aborderons notamment quelles méthodes utilisées pour contourner les problèmes spécifiques posés par la langue française.


Lire la suite...
 
9. Création des outils nécessaires pour le développement des fichiers AIML Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 0
Écrit par Philippe YONNET   
20-04-2008

Si l'on jette un oeil sur la roadmap définie précédemment, on voit qu'il est prévu de créer des outils avant de commencer à développer les catégories constituant la personnalité de l'avatar ?

Mais pourquoi faut-il ces outils, et à quoi vont-ils servir exactement ?

L'écriture des fichiers AIML est un travail long et fastidieux. Les premiers pas sont toujours ludiques, mais dès que l'on veut vraiment créer une personnalité complète, cela tourne au cauchemar en l'absence d'outils adaptés.

Or ces outils "adaptés" n'existent pas. Il existe à présent d'excellents éditeurs AIML comme Gaitobot, mais ils présentent tous des bogues et des limites. Les fonctions de mise au point de Pandorabots sont évoluées, mais impossible à utiliser sur des fichiers comprenant des dizaines de milliers de catégories.

Le problème avec des fichiers en langue française est de pouvoir facilement générer de multiples variantes d'un même "pattern". A la main c'est très long, et surtout le débogage est difficile.

Il va donc falloir créer une librairie de fonctions capables :

  • de parser des fichiers AIML (et de mettre en lumière des problèmes)
  • de charger les catégories de plusieurs fichiers AIML dans une base de données pour parvenir à gérer les "srai" multiples
  • d'exporter les catégories créées dans un format AIML correct, sous la forme de fichiers prêts pour un upload dans pandorabots (si possible en triant logiquement les catégories)
  • de générer des variantes des catégories entrées automatiquement
  • de générer des catégories à partir de fichiers de "connaissances"

J'ai déjà commencé à écrire cette librairie. Elle est utilisée dans l'outil "pattern normalizer" qui est disponible ici :

http://www.pnambique.com/outils/pattern-normalizer.php  

Elle sert par ailleurs dans le pattern generator disponible ici :

http://www.pnambique.com/index.php/pattern-generator.html
 

Dernière mise à jour : ( 18-05-2008 )
 
<< Début < Précédente 1 2 3 4 5 Suivante > Fin >>

Résultats 1 - 10 sur 46