Intelligence Artificielle Vraiment Basique (IAVB)
TOUT
STYLO EST BLEU
**
Compris.
FRANÇOIS POSSÈDE
UN STYLO
**
Compris.
BLEU EST
UNE COULEUR
**
Compris.
ROUGE EST
UNE COULEUR
**
Compris.
TOUT
STYLO EST EN PLASTIQUE
**
Compris.
LE
PLASTIQUE EST UNE MATIÈRE
**
Compris.
FRANÇOIS
POSSÈDE-T-IL UN STYLO ROUGE ?
**
Non.
QUELLE
EST LA COULEUR DU STYLO DE FRANÇOIS ?
BLEU
RAOUL A
ACHETÉ UN STYLO ÉGALEMENT
**
Compris.
DE QUELLE
COULEUR EST LE STYLO DE RAOUL ?
BLEU
TOUT
STYLO EST EN QUELLE MATIÈRE ?
PLASTIQUE
EN QUELLE
MATIÈRE EST TOUT STYLO ?
PLASTIQUE
' Limitation
actuelle du logiciel : réponse fausse :
FRANÇOIS POSSÈDE-T-IL
UN STYLO BLEU ?
**
Non.
FRANÇOIS POSSÈDE-T-IL
UN STYLO ?
**
Oui.
COULEUR
STYLO FRANÇOIS ?
BLEU
DE QUELLE
COULEUR EST LE STYLO DE FRANÇOIS ?
BLEU
ANNIE EST
UNE JOLIE FILLE
**
Compris.
ANNIE EST
SAGE
**
Compris.
MINNA EST
UNE FILLE ELLE AUSSI
**
Compris.
MINNA EST
FOFOLLE
**
Compris.
QUELLE
FILLE EST SAGE ?
ANNIE
ET
LAQUELLE EST FOFOLLE ?
MINNA
JOLIE EST
LE CONTRAIRE DE LAIDE
** Compris.
EST-CE QU'ANNIE
EST LAIDE ?
JOLIE
ÇA
SIGNIFIE-T-IL QU'ANNIE EST UNE JOLIE FILLE ?
**
Oui.
JEAN
REGARDE MARIE
** Compris.
MARIE
REGARDE HUGUES
** Compris.
QUI MARIE
REGARDE-T-ELLE ?
HUGUES
MARIE
REGARDE-T-ELLE JEAN ?
**
Non.
HUGUES
EST LE FRÈRE D'HENRI
** Compris.
HENRI EST
LE FILS D'OCTAVE
** Compris.
OCTAVE
EST L'ONCLE D'ANATOLE
** Compris.
QUI EST
LE FILS DE L'ONCLE D'ANATOLE ?
HENRI
ET QUI
REGARDE LE FRÈRE DU FILS DE L'ONCLE D'ANATOLE ?
MARIE
L'ENTREPRISE
A UN SIÈGE ET UNE ANNEXE
** Compris.
M.BERTRAND
EST RESPONSABLE DE L'ANNEXE
** Compris.
L'ANNEXE
A 15 SERVICES DIFFÉRENTS
** Compris.
M.JACQUES
EST RESPONSABLE DE LA SAISIE
** Compris.
M.RENÉ
EST LE CHEF DU SERVICE COMPTABILITÉ
** Compris.
M.MARTIN
EST UN AMI DE M.JACQUES
** Compris.
M.DUBOIS
EST CHEF DU SERVICE PHOTO
** Compris.
LA SAISIE
EST UN SERVICE DÉCENTRALISÉ
** Compris.
RENAUD
EST LE FILS DE M.BERTRAND
** Compris.
DAMIEN
EST LE FILS DE M.RENÉ
** Compris.
CHEF DE
SERVICE ?
M.RENÉ
M.DUBOIS
CHEF DE
SERVICE PHOTO ?
M.DUBOIS
SERVICE
PHOTO ?
M.DUBOIS
EST CHEF
RESPONSABLE
?
M.BERTRAND
EST RESPONSABLE DE L'ANNEXE
M.JACQUES
EST RESPONSABLE DE LA SAISIE
M.MARTIN
EST L'AMI DE QUI ?
DE
M.JACQUES
QUI EST
LE FILS DU RESPONSABLE DES 15 SERVICES ?
RENAUD
QUI EST
LE FILS D'UN CHEF DE SERVICE ?
DAMIEN
QUI EST
L'AMI DU RESPONSABLE D'UN SERVICE DÉCENTRALISÉ ?
M.MARTIN
TOUT
HOMME EST MORTEL
** Compris.
OR
SOCRATE EST UN HOMME
** Compris.
DONC ?
DONC
SOCRATE EST MORTEL <HOMME>
TOUT
HOMME EST BIPÈDE
** Compris.
OR PAUL
EST UN HOMME
** Compris.
DONC ?
DONC
PAUL EST BIPÈDE <HOMME>
DONC ?
OR
PAUL EST UN HOMME :
**
Recherche approfondie...
DONC
PAUL EST BIPÈDE <HOMME>
DONC
PAUL EST COMME SOCRATE <HOMME>
DONC
PAUL EST MORTEL <HOMME>
TOUT CE
QUI EST RARE EST CHER
** Compris.
UN CHEVAL
BON.MARCHÉ EST RARE
** Compris.
DONC ?
DONC
UN CHEVAL BON.MARCHÉ EST CHER
<RARE>
PLATON
EST GREC
** Compris.
OR PLATON
EST PHILOSOPHE
** Compris.
DONC ?
DONC
QUELQUE PHILOSOPHE EST GREC
<PLATON>
QUEL
PHILOSOPHE EST GREC ?
PLATON
Y A-T-IL
UN PHILOSOPHE GREC ?
PLATON
QUI EST
GREC ET PHILOSOPHE ?
PLATON
PHILOSOPHE
GREC ?
PLATON
PLATON
EST-IL GREC ?
**
Oui.
LES
SAVANTS SONT SOUVENT DISTRAITS
** Compris.
OR TOUS
LES SAVANTS SONT BAVARDS
** Compris.
DONC ?
DONC
QUELQUES BAVARDS SONT SOUVENT DISTRAITS
<SAVANTS>
TOUS LES
HOMMES SONT DES MORTELS
** Compris.
OR DES
HOMMES SONT JUSTES
** Compris.
DONC ?
DONC
QUELQUES JUSTES SONT DES MORTELS
<HOMMES>
X1 = X2
** Compris.
X2 = X3
** Compris.
PAR QUOI
X1 = X3 ?
X2
Y1 = F DE
X
** Compris.
F DE X ?
Y1
X = G DE T1
** Compris.
V = K DE W
** Compris.
T1 = H DE
V
** Compris.
F DE G DE
H DE K DE W ?
Y1
A QUOI
EST = F DE G DE H DE K DE W ?
Y1
F G H K W
?
Y1
CHAT =
ANIMAL
** Compris.
CHAT =
MANGEUR(SOURIS)
** Compris.
TIGRE =
ANIMAL
** Compris.
TIGRE =
MANGEUR(HOMME)
** Compris.
ANIMAL
MANGEUR ?
CHAT
TIGRE
MANGEUR
D'HOMME = ?
TIGRE
DONC ?
DONC MANGEUR(HOMME) = ANIMAL <TIGRE>
DONC ?
TIGRE
= MANGEUR(HOMME) :
** Recherche
approfondie...
DONC MANGEUR(HOMME) = ANIMAL <TIGRE>
DONC
TIGRE EST COMME CHAT <MANGEUR>
DONC
TIGRE = MANGEUR( PAUL ) <HOMME>
DONC
TIGRE = MANGEUR( BIPÈDE ) <HOMME>
DONC
TIGRE = MANGEUR( SOCRATE ) <HOMME>
DONC
TIGRE = MANGEUR( MORTEL ) <HOMME>
Y A-T-IL
UN MANGEUR DE SOURIS ET D'HOMME ?
**
Non.
QUI EST
MANGEUR D'HOMME ET DE SOURIS ?
** Je
l'ignore.
ARTABAN =
CHEVAL DE HENRI.4
** Compris.
BLANC =
COULEUR D'ARTABAN
** Compris.
HENRI.4 =
ROI DE NAVARRE
** Compris.
LOUIS.14
= ROI DE FRANCE
** Compris.
COULEUR
DU CHEVAL DU ROI DE NAVARRE ?
BLANC
QUELLE
EST LA COULEUR DU CHEVAL DU ROI DE NAVARRE ?
BLANC
QUELLE
EST LA COULEUR DU CHEVAL BLANC DU ROI DE NAVARRE ?
** Je
l'ignore.
' Faille :
composition incomplète, mauvaise indirection :
QUELLE
EST LA COULEUR DU CHEVAL DU ROI ?
ARTABAN
' Bonne indirection
:
QUEL ROI
A UN CHEVAL ?
HENRI.4
' Faille : mauvaise indirection :
CHEVAL DU
ROI ?
HENRI.4
CHEVAL DU
ROI DE NAVARRE ?
ARTABAN
CHEVAL DU
ROI DE FRANCE ?
HENRI.4
LE CANARI
EST UN OISEAU JAUNE
** Compris.
JAUNE EST
UNE COULEUR
** Compris.
QUEL
OISEAU EST JAUNE ?
LE
CANARI
QUEL EST
L'OISEAU JAUNE ?
LE
CANARI
DE QUELLE
COULEUR EST LE CANARI ?
JAUNE
QUELLE
EST LA COULEUR DU CANARI ?
JAUNE
COULEUR
CANARI ?
JAUNE
COULEUR ?
BLEU
EST UNE COULEUR
ROUGE
EST UNE COULEUR
BLANC
= COULEUR D'ARTABAN
JAUNE
EST UNE COULEUR
MARSEILLE
EST LA VILLE PHOCÉENNE
** Compris.
DEFERRE
EST LE MAIRE DE MARSEILLE
** Compris.
PHOCÉENNE
SIGNIFIE ORIGINAIRE DE PHOCÉE
** Compris.
LA PHOCÉE
EST UNE PROVINCE GRECQUE
** Compris.
GASTON
EST LE PRÉNOM DE DEFERRE
** Compris.
QUEL EST
LE PRÉNOM DU MAIRE DE MARSEILLE ?
GASTON
QUEL EST
LE PRÉNOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE GRECQUE ?
GASTON
' Test du système :
composition de fonctions incomplète :
QUEL EST
LE PRÉNOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE ?
** Je
l'ignore.
' Autres réponses
souhaitées : GASTON EST LE PRÉNOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE
PROVINCE PHOCÉENNE
' ou bien : D'UNE
PROVINCE PHOCÉENNE ?
' ou bien : **
heu... GASTON ?
PAUL POSSÈDE
UN PERROQUET BAVARD
** Compris.
MULTICOLORE
SIGNIFIE DE PLUSIEURS COULEURS
** Compris.
UN
PERROQUET EST UN ANIMAL MULTICOLORE
** Compris.
QUI POSSÈDE
UN ANIMAL DE PLUSIEURS COULEURS ?
PAUL
MARIE EST
UNE JOLIE FILLE
** Compris.
JOLIE EST
LE CONTRAIRE DE LAIDE
**
Assertion déjà connue !
MARIE
EST-ELLE LAIDE ?
JOLIE
EST-CE
QUE MARIE EST LAIDE ?
JOLIE
SABINE
AIME JACQUES
** Compris.
QUI AIME
JACQUES ?
SABINE
QUI AIME
SABINE ?
** Je
l'ignore.
QUI
JACQUES AIME-T-IL ?
** Je
l'ignore.
' Meilleure réponse
: Je L'ignore :
JACQUES
AIME-T-IL SABINE ?
**
Non.
SABINE
AIME-T-ELLE JACQUES ?
**
Oui.
' Capacités de la
version modifiée :
' Ordre des termes :
DONC TOUT CHEVAL EST HERBIVORE :
TOUT
CHEVAL EST UN ÉQUIDÉ
** Compris.
OR TOUT ÉQUIDÉ
EST HERBIVORE
** Compris.
DONC ?
DONC
TOUT CHEVAL EST HERBIVORE <ÉQUIDÉ>
' Sens logique :
DONC PAUL EST COMME TOUT HOMME :
TOUT
HOMME EST BIPÈDE
**
Assertion déjà connue !
OR PAUL
EST BIPÈDE
** Compris.
DONC ?
** Je
ne peux rien conclure !
DONC ?
OR
PAUL EST BIPÈDE :
**
Recherche approfondie...
DONC
QUELQUE BIPÈDE POSSÈDE UN PERROQUET BAVARD
<PAUL>
DONC
QUELQUE BIPÈDE EST UN HOMME <PAUL>
DONC
PAUL EST COMME TOUT HOMME <BIPÈDE>
' Sens logique :
ARISTOTE EST COMME TOUT HOMME :
TOUT
HOMME EST RATIONNEL
** Compris.
OR
ARISTOTE EST RATIONNEL
** Compris.
DONC ?
DONC
ARISTOTE EST COMME TOUT HOMME
<RATIONNEL>
ARISTOTE ÉTAIT
GREC
** Compris.
ARISTOTE ÉTAIT
PHILOSOPHE
** Compris.
PHILOSOPHE
GREC ?
PLATON
ARISTOTE
' Syllogismes :
ordre des assertions
OR
SOCRATE EST UN HOMME
**
Assertion déjà connue !
TOUT
HOMME EST MORTEL
**
Assertion déjà connue !
DONC ?
** Je
ne peux rien conclure !
DONC ?
TOUT
HOMME EST MORTEL :
**
Recherche approfondie...
DONC
SOCRATE EST MORTEL <HOMME>
DONC
QUELQUE MORTEL EST BIPÈDE <HOMME>
DONC
PAUL EST MORTEL <HOMME>
DONC
TIGRE = MANGEUR( MORTEL ) <HOMME>
DONC
QUELQUE MORTEL EST RATIONNEL
<HOMME>
' Syllogismes :
plusieurs à la fois
TOUT
HOMME EST MORTEL
**
Assertion déjà connue !
TOUT
HOMME EST BIPÈDE
**
Assertion déjà connue !
OR
SOCRATE EST UN HOMME
**
Assertion déjà connue !
DONC ?
DONC
SOCRATE EST MORTEL <HOMME>
OR PAUL
EST UN HOMME
**
Assertion déjà connue !
DONC ?
DONC
PAUL EST BIPÈDE <HOMME>
DONC ?
OR
PAUL EST UN HOMME :
**
Recherche approfondie...
DONC
PAUL EST BIPÈDE <HOMME>
DONC
PAUL EST COMME SOCRATE <HOMME>
DONC
PAUL EST MORTEL <HOMME>
DONC
TIGRE = MANGEUR( PAUL ) <HOMME>
DONC
QUELQUE HOMME POSSÈDE UN PERROQUET BAVARD
<PAUL>
DONC
QUELQUE HOMME EST BIPÈDE <PAUL>
DONC
PAUL EST RATIONNEL <HOMME>
TOUT
LOGICIEN EST INCOMPRIS
** Compris.
OR TOUT
HOMME SENSÉ EST LOGICIEN
** Compris.
DONC ?
DONC
TOUT HOMME SENSÉ EST INCOMPRIS
<LOGICIEN>
' Syllogismes :
syntaxe imparfaite (de la version modifiée)
LE LOUVRE
EST BEAU
** Compris.
OR J'AIME
TOUT CE QUI EST BEAU
** Compris.
DONC ?
DONC
J'AIME EST COMME LE LOUVRE <BEAU>
Intelligence
Artificielle Vraiment Basique (IAVB)
https://github.com/PatriceDargenton/IAVB
Documentation : IAVB.html
Code source : IAVB.vbproj.html
Par Patrice Dargenton : patrice.dargenton@free.fr
http://patrice.dargenton.free.fr/CodesSources/index.html
Version 3.12 du 18/06/2017
Le but de ce logiciel est ludique et pédagogique : Il montre qu'il est facile de faire un programme amusant et... laisse penser qu'il est quasi-impossible de faire un programme capable de mystifier (tromper) un humain dans un test de discussion en aveugle (test de Turing). L'avenir du traitement automatique du langage naturel est essentiellement l'interrogation de base de données (c'est le cas ici !), notamment les futurs moteurs de recherche du web, ainsi que les logiciels d'aide à la vérification (correcteur orthographique et grammatical) et à la traduction.
IAVB est la transcription en Visual Basic d'un logiciel paru dans la revue MICRO-SYSTEMES en Décembre 1984, pages 195-202 : "Mini-système expert pour Apple II" par Philippe LARVET : Gestion d'une base de connaissances.
Table des matières
Présentation
des fonctionnalités du logiciel
Contrôle
de l'existence des mots
Relation
horizontale avec indirection
Limitation
en cas d'échec de la composition de fonction
Composants
requis pour la synthèse vocale avec MS-Agent
Version
2.11 en VB6 et VBA du 18/06/2017
Version
2.10 en VB6 du 02/09/2007
Liste
des nouveautés par rapport à la version originale de 1984
Version
1.0b en VBA du 18/06/2017
Version
originale 1.0 du 23/08/2001
Le logiciel gère une base d'assertion du type Sujet - Verbe - Complément (dans cet ordre !) en éliminant les mots non signifiants figurant dans sa liste.
Pour plus de détails sur chacune de ces fonctionnalités, consultez les fonctions correspondantes.
Les principales fonctions sont les suivantes :
- Syllogisme (Modus ponens): cette fonction est lancée directement par la question "DONC ?" :
TOUT HOMME EST MORTEL
OR SOCRATE EST UN HOMME
DONC ?
DONC SOCRATE EST MORTEL
- ControleExistenceMots : cette fonction traite les questions d'un seul mot signifiant, en trouvant les assertions contenant ce mot :
RESPONSABLE ?
M.BERTRAND EST RESPONSABLE DE L'ANNEXE
M.JACQUES EST RESPONSABLE DE LA SAISIE
- bRelationHorizontale : cette fonction traite les questions dont le nombre de mots est <= NbMotsBCMax (4 mots par défaut par assertion stockée dans la base de connaissance) : la fonction retrouve, le cas échéant, l'assertion contenant les mots de la question dans le bon ordre :
M.RENÉ EST LE CHEF DU SERVICE COMPTABILITÉ (4 mots)
M.DUBOIS EST CHEF DU SERVICE PHOTO (4 mots)
CHEF DE SERVICE ? (2 mots)
M.RENÉ
M.DUBOIS
- bComposFonction : cette fonction traite des compositions de fonction (relations verticales sur des assertions de 3 mots exactement) du type :
ARTABAN = CHEVAL(HENRI.4)
BLANC = COULEUR(ARTABAN)
HENRI.4 = ROI(NAVARRE)
COULEUR(CHEVAL(ROI(NAVARRE))) ? : BLANC
- bIndirection : cette fonction relie des assertions (2 ou 3 mots) par des mots pivots en chaîne (mais pas imbriqués comme dans les compositions de fonction) :
TOUT STYLO EST BLEU (2 mots)
FRANÇOIS POSSÈDE UN STYLO (3 mots)
BLEU EST UNE COULEUR (2 mots)
QUELLE EST LA COULEUR DU STYLO DE FRANÇOIS ? : BLEU
TOUT STYLO EST BLEU
FRANÇOIS POSSÈDE UN STYLO
DONC ?
DONC FRANÇOIS POSSÈDE EST BLEU <STYLO>
Meilleure syntaxe à produire : DONC CE QUE FRANÇOIS POSSÈDE EST BLEU <STYLO>
TOUT STYLO EST BLEU
FRANÇOIS POSSÈDE UN STYLO
BLEU EST UNE COULEUR
DONC ?
** Je ne peux rien conclure !
DONC ?
BLEU EST UNE COULEUR :
** Recherche approfondie...
DONC TOUT STYLO EST UNE COULEUR <BLEU>
Meilleure syntaxe à produire : DONC TOUT STYLO EST D'UNE COULEUR <BLEU>
Relation horizontale avec une indirection : IAVB ne sait pas faire !
TOUT STYLO EST BLEU
FRANÇOIS POSSÈDE UN STYLO
BLEU EST UNE COULEUR
FRANÇOIS POSSÈDE-T-IL UN STYLO BLEU ? : ** Non. : réponse fausse, pourtant :
COULEUR STYLO FRANÇOIS ? : BLEU
FRANÇOIS POSSÈDE-T-IL UN STYLO ? : ** Oui.
Les fonctions bRelationHorizontale et bIndirection sont dissociées, elles ne peuvent pas coopérer en l'état actuel du logiciel.
L'indirection dépend de la syntaxe (des mots non-signifiants de la question !) :
ARTABAN = CHEVAL(HENRI.4) ; HENRI.4 = ROI(NAVARRE)
* Bonne indirection :
QUEL ROI A UN CHEVAL ? : HENRI.4
* Mauvaise indirection car composition de fonction incomplète :
CHEVAL DU ROI ? : HENRI.4
(peut-être faudrait-il tenir compte de l'ordre des mots de la question ?)
* Mais bonne composition de fonction :
CHEVAL(ROI(NAVARRE)) ? : ARTABAN ou bien :
CHEVAL DU ROI DE NAVARRE ? : ARTABAN
* Seules les assertions contenant le mot 1 ou 2 de la question sont recherchées, le mot 3 de la question n'est pas pris en compte :
CHEVAL DU ROI DE FRANCE ? donne encore HENRI.4 si LOUIS.14 = ROI(FRANCE)
* Erreur de saisie : si on oublie le signe ?, et qu'on saisit :
CHEVAL(ROI(NAVARRE)) : Compris, si après on saisit :
CHEVAL(ROI(NAVARRE)) ? : Oui !
Compte tenu de ces remarques, l'indirection est le point faible de ce logiciel.
De manière plus générale, en cas d'échec de la composition de fonction, le logiciel ne sait pas rattraper l'erreur :
* Si on enlève la dernière imbrication, la réponse est incorrecte :
QUELLE EST LA COULEUR DU CHEVAL DU ROI DE NAVARRE ? : BLANC
QUELLE EST LA COULEUR DU CHEVAL DU ROI ? : ARTABAN
IAVB devrait répondre : DU ROI DE NAVARRE ?
en trouvant que seul NAVARRE coïncide dans la base pour ROI, ou sinon répondre "Je l'ignore" (même pour les phrases courtes).
* En limitant l'indirection sur les questions simples (prm.iNbMotsEntree <= 3), le même problème est corrigé avec une composition de fonction de plus de 3 mots lorsqu'au lieu de : D'UNE PROVINCE GRECQUE on pose :
QUEL EST LE PRÉNOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE ?
** Je l'ignore.
Il est difficile de chercher des compositions de fonction incomplètes car on commence justement à les réduire par le bout qui manque, l'espace de recherche est donc maximal.
Au lieu de répondre Non, il y a une réponse plus logique à donner :
SABINE AIME JACQUES
JACQUES AIME-T-IL SABINE ? : ** Non. : meilleure réponse : ** Je l'ignore.
La relation horizontale doit respecter l'ordre : Sujet/Verbe/Complément.
Les mots doubles perturbent la syntaxe des syllogismes :
* Ordre à respecter pour les syllogismes :
OR TOUT HOMME SENSÉ EST LOGICIEN
TOUT LOGICIEN EST INCOMPRIS
DONC OR TOUT HOMME SENSÉ EST INCOMPRIS <LOGICIEN>
(compléter le traitement déjà commencé pour les mots simples ?)
* Recherche approfondie des syllogismes :
DONC SENSÉ EST LOGICIEN EST COMME PAUL <HOMME>
(rechercher la présence simultanée de EST ou SONT dans les 2 termes formant la conclusion ?)
* Syntaxe avec les fonctions :
DONC TIGRE = MANGEUR( SENSÉ EST LOGICIEN <HOMME>
iPosFinMot1 = HOMME au lieu de SENSÉ pour TOUT HOMME SENSÉ.
(compléter le traitement ?)
- C'est la version la plus complète.
- Cette version n'inclut pas la synthèse vocale sous Windows 10, ni le mode automatique, ni les tests unitaires.
- Version identique à la version VB6, le code source est partagé, via la compilation conditionnelle (bVersionVBA).
- Ce moteur IAVB en C# est utilisé en commun par trois projets avec trois technologies distinctes :
- La version WinForm en C# est équivalente à la version WinForm en VB .Net (sauf MS-Agent, qui n'est pas géré ici, et il n'y a pas de mode automatique).
- La version WPF en C# est équivalente à la version WinForm en C#.
- La version C#Html est équivalente aux versions WinForm et WPF en C# (il manque juste la gestion de la touche Entrée au clavier sur les commandes, et la copie dans le presse-papier), mais la définition de l'interface est assez sommaire, car la conception est plus difficile qu'en WPF (c'est une technologie en version beta encore) ;
- Je n'ai pas réussi à programmer l'équivalent de l'instruction :
listBox.ScrollIntoView(listBox.SelectedItem); // N'existe pas en C#HTML5
Du coup, j'ai ajouté les éléments en tête de liste, ce qui est moins joli. Si je trouve une solution à ce problème, il suffira de désactiver le booléen bAjoutListeDebut ;
- L'avantage de cette version, c'est qu'on peut la tester en ligne (en gros, cela consiste à compiler un sous-ensemble des dll dotnet en javascript !), ou bien sur des appareils mobiles : http://patrice.dargenton.free.fr/ia/iavb/CSharpHTML5/
Il y a un bug spécifique dans ce cas d'exécution seulement (ne se produit pas dans l'émulateur) : le texte sélectionné est celui en fin de liste et non en début de liste, malgré la constante bAjoutListeDebut ;
- Site web pour en savoir plus sur cette techno : www.cshtml5.com
- Limitations and workarounds : www.cshtml5.com/links/limitations.aspx
- Commencer une version en anglais, faire deux moteurs dans le logiciel, une pour chaque langue, lorsque l'on change de langue, changer de moteur, sans vider la base ;
- Chargement des exemples et des mots ignorés via un fichier ;
- Sauvegarde et restauration de l'état (liste des assertions) ;
- Reconnaissance vocale.
Si ces composants ne sont pas installés, alors IAVB fonctionne quand même en silence (lancer d'abord IAVB avant d'installer quoi que ce soit, car sur un Windows XP, je crois que la plupart des composants sont déjà présents, sauf "Lernout & Hauspie® TTS3000 TTS engine - French" pour la synthèse vocale du personnage MSAgent en français) :
- Page principale : www.microsoft.com/msagent
- Installation : Microsoft Agent download page for end-users
www.microsoft.com/msagent/downloads/user.aspx
- Configuration minimale pour les agents : minimal system requirements
www.microsoft.com/msagent/prodinfo/sysreq.aspx
- 1/3 : Download the Microsoft Agent core components (392 Ko exe)
http://activex.microsoft.com/activex/controls/agent2/MSagent.exe
- 2/3 : Download selected language component : French
www.microsoft.com/msagent/downloads/user.aspx#core : AgtX040C.exe (129 Ko)
- 3/3 : Download selected character : Choisissez le personnage Merlin
www.microsoft.com/msagent/downloads/user.aspx#character : Merlin.exe (1.83 Mo)
- 1/2 : Installer le composant "Microsoft Speech Object Library"
SAPI 4.0 runtime support : sapi.dll
"Download the Microsoft SAPI 4.0a runtime binaries (824 KB exe)"
http://activex.microsoft.com/activex/controls/sapi/spchapi.exe (825 Ko)
- 2/2 : Installer le composant : "Lernout & Hauspie® TTS3000 TTS engine - French (2.2 MB exe)"
(L&H TTS3000 Text-To-Speech - French)
www.microsoft.com/msagent/downloads/user.aspx#tts
Voir la documentation ici :
http://patrice.dargenton.free.fr/ia/iavb/IAVBOCX.html
- IAVB : Intelligence Artificielle en Visual Basic -> Vraiment Basique (pour tenir compte des versions en C#) ;
- Synthèse vocale en français de Windows 10 (sous Windows 7 on n'a que l'anglais), en plus de MS-Agent ;
- Version VB.Net : mode automatique pour tester automatiquement tous les exemples, zone de liste pour la synthèse vocale ;
- Gestion des majuscules : ajout d'un booléen (bTraiterEnMinuscules) pour pouvoir comparer les résultats avec la version d'origine (si on active les accents, par exemple pour que la synthèse vocale fonctionne bien, alors il faut désactiver les majuscules, car les accents ne sont pas faciles à trouver au clavier sur les majuscules) ;
- Gestion des accents : ajout d'un booléen (bTraiterSansAccents) pour pouvoir comparer les résultats avec la version d'origine ;
- Normalisation des réponses : ajout d'un booléen (bNormalisationSortieTrimEtVbLf) pour rendre homogène les espaces et sauts de ligne dans les réponses, on avait parfois saut de ligne en trop, ou espace en trop, parfois il en manquait ;
- Version en VBA Word (code commun avec la version VB6), car il est devenu difficile de coder en VB6, l'IDE de VB6 ne s'installant pas sous Windows 10 ;
- Version VBA d'origine : fonctionnement identique à la version de 1984 (reprise des exemples pour pouvoir vérifier qu'on obtient bien les mêmes résultats) ;
- Versions VBA : correction de la copie dans le presse-papier sous Windows 64 bit (l'ancienne méthode ne fonctionnait que sous Windows 32 bits) ;
- Versions en C# : WinForm, WPF et CSharpHtml (tout juste fonctionnel, mais à terminer, il manque notamment ListBox.ScrollIntoView) ;
- Tests unitaires pour vérifier les exemples fournis ;
- Respect des règles d'analyse du code selon Visual Studio 2017 ;
- Mise au norme DotNet du code hérité de VB6 (utilisation de Generic.List(Of String), du coup on part de l'index 0 et non plus 1, ...) ;
- Version sans Microsoft.VisualBasic.dll (pour pouvoir convertir plus facilement en C#) ;
- Passage en VB 2013 (les versions 2015 et 2017 ont toujours un bug d'indentation, si on a utilisé l'indentation en mode bloc ou bien désactivé).
- Passage en VB2010.
- Allocation dynamique de mémoire pour la collection d'assertions (au lieu de : Public Const iNbAssertionsMax% = 100) ;
- Séparation du moteur IAVB de son interface de façon à pouvoir créer un composant facilement réutilisable (un Ocx : Contrôle ActiveX).
- Compilation en mode Strict ;
- Utilisation systématique des constantes chaînes de caractères ;
- Amélioration de la prononciation en parlant avec des textes en minuscules au lieu de majuscule ;
- Vérification de l'installation des agents Microsoft (MSAgent), et assistance à l'installation ;
- Passage en DotNet sous VB 2005.
- Correction de la copie dans le presse-papier sous Windows 64 bit (l'ancienne méthode ne fonctionnait que sous Windows 32 bits) ;
- Correction des exemples pour obtenir les mêmes résultats que la dernière version 3.12 en VB.Net et C#.
- MSAgent au lieu du contrôle TextToSpeech (Microsoft Speech : Vtext.dll - HTTS - version 4.0.4.2512, qui est trop instable, par exemple il plante avec les accents) : si les agents ne sont pas installés ou bien s'il manque un des composants de synthèse vocal, alors IAVB fonctionne en mode silencieux.
La voix de l'IA : maintenant, ça parle :
- Les accents font planter le contrôle TextToSpeech ;
- Certains exemples ont été légèrement modifiés pour améliorer la prononciation :
HENRI.4 au lieu d'HENI_IV
- Petit défaut corrigé dans les syllogismes : suppression du signe = à gauche :
DONC = MANGEUR(HOMME) = ANIMAL <TIGRE>
La version 1.1 est améliorée par rapport à l'originale par l'utilisation :
- des constantes vb pour les chaînes ou entiers effectivement constants,
- des noms de variables plus explicites,
- de boucles lorsque les instructions Goto sont inutiles,
- des fonctions pour chaque fonctionnalité isolée,
- des commentaires et exemples issus de l'article original.
De plus, il a été ajouté des modifications sur le fonctionnement cette fois :
- bVersionModifiee = True : Version modifiée (2017) sinon originale (1984) ;
- Recherche approfondie des syllogismes sur l'ensemble des assertions de la base. Pour l'activer, il suffit de répéter la question DONC ?
- N° de l'assertion en cours : il est m.à.j. si une assertion est déjà connue ; pour pouvoir refaire une dernière conclusion, il faut maintenant utiliser la recherche approfondie, car ce n'est plus seulement la dernière conclusion qui est accessible, ou bien changer le n° de l'assertion en cours (pour cela trois possibilités : ajouter une nouvelle assertion, ajouter une assertion déjà connue, ou poser une question d'au moins deux mots sur un des mots d'une assertion déjà connue) ;
- Traitement de OR dans un terme à droite :
DONC EST HERBIVORE TOUT CHEVAL : DONC TOUT CHEVAL EST HERBIVORE : Mieux !
de plus, utilisation de EST COMME :
DONC ARISTOTE TOUT HOMME : ARISTOTE EST COMME TOUT HOMME
mais la syntaxe est un peu diminuée dans d'autres cas :
LE LOUVRE EST BEAU, OR J'AIME TOUT CE QUI EST BEAU
DONC J'AIME EST COMME LE LOUVRE <BEAU>
- Composition de fonction incomplète améliorée (pour les phrases longues seulement) :
QUEL EST LE PRÉNOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE ?
IAVB affiche maintenant : **Je l'ignore !
mais le problème persiste pour : CHEVAL DU ROI ? : HENRI.4
- Combinaison de la composition de fonction avec les syllogismes :
TIGRE = MANGEUR(HOMME)
OR SOCRATE EST UN HOMME
DONC ? TIGRE = MANGEUR(SOCRATE)
- Syntaxe améliorée :
DONC QUELQUE UN HOMME EST BIPÈDE <PAUL> : DONC QUELQUE HOMME EST BIPÈDE <PAUL>
- Dans l'interface :
* Exemples à tester : c'est pratique (déjà repris dans la version originale en VB)
* Bouton exemple suivant
* Traitement des commentaires avec le signe ' (en début ou sinon après une commande)
* Affichage du mot pivot dans les syllogismes : entre <> (cf. par exemple <PAUL> ci-dessus)
* /C : Copie de la discussion dans le presse papier
- Correction de la copie dans le presse-papier sous Windows 64 bit (l'ancienne méthode ne fonctionnait que sous Windows 32 bits) ;
- Correction des exemples pour obtenir les mêmes résultats que la dernière version 3.12 en VB.Net et C#, lorsque le booléen bVersionModifiee = False.
- C#Html : http://patrice.dargenton.free.fr/ia/iavb/CSharp2Html/
- IAVB2 : https://codes-sources.commentcamarche.net/source/1860
- Versions 1.1 et 1.0 d'IAVB : https://codes-sources.commentcamarche.net/source/1825
- VBBrainBox : un système expert d'ordre 0+ en VB .NET
https://codes-sources.commentcamarche.net/source/6949
- IA : RN : VBPerceptron : le code le + simple possible en VB6 & VB .Net
http://patrice.dargenton.free.fr/ia/ialab/perceptron.html
- Developing AI chatbots - This guide helps you how to program your own chat bot
www.codeproject.com/scrapbook/robomatic.asp
- ChatBot aiml : SophiaBot: creating a talking artificial personality with Vista Speech Recognition API
www.codeproject.com/vista/SAPISophia.asp
- http://patrice.dargenton.free.fr/ia/alice/alicechatbot.html
- http://ia.jenny.free.fr/Botmaster.htm
- Troubleshooting problems installing Microsoft Agent
www.microsoft.com/msagent/support/user/install.aspx
- MSDN : Microsoft Agent Start Page (2.0)
http://msdn2.microsoft.com/en-us/library/ms695784.aspx
- Les contrôles MS-Agent : liste des animations et verbes
www.supinfo-projects.com/fr/2004/ms/2/
- www.vbfrance.com/codes/CONTROLER-AGENTS-MICROSOFT_39035.aspx
- www.codeproject.com/vb/net/UseMSAgentControlVBNET.asp
- SAPI with MsAgent and Visemes to Explain TTS in C#
www.codeproject.com/useritems/csharpSapiwithAgent.asp : Text2Speech
- Documentation MS-Agent : Installing a Speech Engine
http://msdn2.microsoft.com/en-us/library/ms699235.aspx
- Using the Speex speech codec with the .NET framework
www.codeproject.com/useritems/speexincsharp.asp
- Synthèse musicale et vocale
A toolkit for creating software synthesizers with C# and Managed DirectX
www.codeproject.com/cs/media/synthtoolkitparti.asp
www.codeproject.com/cs/media/synthtoolkitpartii.asp
- DotNet3 / Vista : http://webman.developpez.com/articles/dotnet/texttospeech/
- www.codeproject.com/csharp/TextToSpeechWindowsSAPI.asp C#
- www.codeproject.com/cs/samples/TextEditorWithSpeech.asp
- Text to Speech with the Microsoft Speech Library and SDK version 5.1
www.codeproject.com/vb/net/TTSinVBpackage.asp
- Réglages Text2Speach
Exploring the SpVoice Class of MS SAPI 5.1 to use different available features for TTS
www.codeproject.com/useritems/TTSFeaturesOfSAPI.asp
- Texte to speech maison ou Alphi
www.vbfrance.com/code.aspx?id=41988
- C# Voice and Tone Alert Generator
www.codeproject.com/cs/media/CS_ToneGenerator.asp
- Téléchargement du SpeachSDK 5.1
- groups.google.fr : fr.comp.ia
- Annuaire Informatique : Intelligence artificielle
- Artificial Intelligence FAQ
www.faqs.org/faqs/ai-faq/general/part1/index.html
- Modélisation complexe : www.true-world.com