Ibi Hors ligne Statut: Membre
Niveau: Elite
Points: 589
Défis: 115 Email | Message
Posté le 03/05/2008 17:40
Différentes IA (applications):
Voici les principales IA réalisables en Basic :
- IA pour une unité qui évolue dans un espace a 2 ou 3 dimensions
- IA pour une stratégie définie (type IA pour un jeu d'échecs ...)
- IA vocale (bot de conversation).
Je vous propose ici une initiation a ces différents types d'IA. Je vais donc en toute logique commencer par la dernière : l'IA vocale. Bien sur la calculatrice ne peut pas d'exprimer vocalement mais elle peut afficher des messages.
A partir d'un programme simple a réaliser au niveau programmation il est aisé d'obtenir un bot de conversation c'est a dire une IA avec laquelle on peut discuter comme on pourrait le faire avec quelqu'un de vivant.
Pour commencer il faut préciser que comme les fonctions utilisant les strings (chaines de caractères n'existent pas sur toutes les Casio et que ce programme d'IA peut se réaliser sur toutes les Casio Graphique programmables). Cela implique un plus grand nombre de tests a effectuer et un plus grand risque d'erreurs.
Explications :
Si l'on utilise les chaines de caractères, on peut utiliser la fonction rechercher une expression dans la chaine. C'est a dire que l'on peut rechercher un mot dans la phrase entrée et étudier sa position par rapport aux autres pour véritablement comprendre la phrase.
Si l'on n'emploie pas les chaines de caractères cela signifie d'abord saisie uniquement par le ?. Cela permet également de pouvoir utiliser le programme sur une Graph 25. Mais surtout cela implique que l'on doit calculer les mots en valeur.
Principe :
on attribue a chaque variable une valeur :
2A:3B:4C ...
Ce principe permet de convertir le mot TABLE en 9828 (21*2*3*13*6) puisque la succession de deux lettres entraine une multiplication implicite. Il est nécessaire de commencer a A=2 pour que le A est une importance (si le A=1 alors TBLE serait équivalent à TABLE).
Le problème majeur de ce système est que des mots vont êtres équivalents (par exemple DE=5*6=30 et AN=2*15=30). Pour éviter ce genre de problème la solution consiste a ne pas donner de valeurs entières au variables lettres. Toutefois il faut attribuer des valeurs finies (par exemple A poserait rapidement problème) car les arrondis de calculs fausseraient les résultats. Nous verrons un peu plus loin que cela a d'autres inconveniants
Remarque : le ne pouvant être saisi avec le ? il est nécessaire d'écrire tous les mots attachés.
Ensuite, il y a deux méthode d'analyse :
- La méthode phrase simple. Cette méthode est idéale pour les expressions et les phrases simples ou réponses courtes. Elle consiste à enregistrer des phrases courantes et ensuite de vérifier simplement si le texte entré est égal.
If =MERCI
Then ...
- La méthode par quotient de valeurs. Cette méthode consiste a diviser successivement l'expression entrée par un grand nombre de mots valeurs. Ce système ne fonctionne en revanche que si l'on utilise des entiers pour A, B, C ....
If /MERCI=Int(/MERCI)
Then ...
En effet si est divisible par MERCI (dans cet exemple) alors le quotient est égal à sa partie entière (puisque c'est un entier). Si on n'uitilise pas des valeurs entières sera nécessairement non entier (a part quelques infimes cas) donc sont quotient par MERCI sera également non-entier et le test sera résoluement faux.
Voici un maintenant un programme extérieur (très basique) fonctionnant sur le premier mode de fonctionnement :
1.023A
2.087B
3.45C
4.099D
... (choisissez vous même les valeurs ca n'a pas d'importance) ...
26,077Z
Lbl 0
ClrText
?
ClrText
If =SALUT
Then
SALUT !
Goto 0
IfEnd
If =BONJOUR
Then
SALUT !
Goto 0
IfEnd
If =CAVA
Then
OUI ET TOI ?
Goto 0
IfEnd
If =OUI
Then
^^
Goto 0
IfEnd
If =NON
Then
DOMMAGE
Goto 0
IfEnd
- MOT INCONNU -
Goto 0
(remarque on peut utiliser la fonction _Or mais celle ci n'est pas présente sur Graph 25). De même n'est pas présent sur les graph 25, dans ce cas il faut utiliser :
?A
AList 1[1]
1.023A (ou la valeur donnée au départ si elle est différente)
Bien sûr après il faut effectuer les tests avec List 1[1].
On remarque bien sur qu'il faut paramétrer le OUI et le NON car dans le cas d'une autre question les réponses ne seront pas adaptées.
Je posterait la suite à ce sujet prochainement ...
en attendant si vous avez des questions, des remarques, des ajouts à faire, n'hésitez pas !
Thomatos Hors ligne Statut: Membre
Niveau: Vétéran
Points: 1308
Défis: 6 Email | Message
Posté le 03/05/2008 18:00 |
Moi j'attend l'explication des autres IA ...
Pour ce type d'IA, le problème c'est que ça deviens vite lourd :s ...
" Si l'être humain ne me ressemble pas, si ses caractéristiques ne me correspondent pas, alors je confirme, je ne suis pas un être humain ! " Gadgetroch
Ibi Hors ligne Statut: Membre
Niveau: Elite
Points: 589
Défis: 115 Email | Message
Posté le 04/05/2008 10:03 |
Après sur ti89 j'avais créé un logiciel d'IA beaucoup plus perfectionné qui connaissait les structures de base des phrase en Francais, Anglais, Allemand et Japonais (oui désolé je ne parle pas d'autres langues ...)
Il reconnaissait la place des mots dans la phrase et répondait. Lorsqu'il ne connaissait pas un mot (parce que le programme isolait chaque mot pour le comprendre) il demandait a ce qu'on l'ajoute a son dictionnaire en précisant son sens.
Le problème c'est qu'il ne faut même pas imaginer faire ca sur Graph 65 XD
" Si l'être humain ne me ressemble pas, si ses caractéristiques ne me correspondent pas, alors je confirme, je ne suis pas un être humain ! " Gadgetroch