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 7

Introduction. 7

Syllogisme. 7

Contrôle de l'existence des mots. 7

Relation horizontale. 7

Composition de fonction. 7

Indirection. 8

Limitations d'IAVB.. 8

Syntaxe approximative. 8

Relation horizontale avec indirection. 8

Indirection et syntaxe. 8

Limitation en cas d'échec de la composition de fonction. 9

Logique inversée. 9

Syllogisme et mot double. 9

Versions. 9

Visual Basic .Net 9

VB6. 9

VBA Word. 10

CSharp (C#) 10

WinForm... 10

WPF. 10

C#/XAML for HTML5. 10

Projets. 10

Composants requis pour la synthèse vocale avec MS-Agent 10

Agents Microsoft 11

Synthèse vocale avec MS-Agent 11

Composant IAVB ocx. 11

Historique des versions. 11

Version 3.12 du 18/06/2017. 11

Version 3.11 du 15/09/2013. 12

Version 3.10 du 06/12/2009. 12

Version 3.01 du 02/09/2007. 12

Version 2.11 en VB6 et VBA du 18/06/2017. 12

Version 2.10 en VB6 du 02/09/2007. 12

Version 2 du 07/09/2001. 12

Version 1.01 du 23/08/2001. 12

Liste des nouveautés par rapport à la version originale de 1984. 13

Version 1.0b en VBA du 18/06/2017. 13

Version originale 1.0 du 23/08/2001. 13

Liens. 13

Chatbot (Robot de discussion) 14

MS-Agent 14

Synthèse vocale. 14

Divers. 15

 

 

Présentation des fonctionnalités du logiciel

 

Introduction

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

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

 

Contrôle de l'existence des mots

- 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

 

Relation horizontale

- 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

 

Composition de fonction

- 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

 

Indirection

- 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

 

 

Limitations d'IAVB

 

Syntaxe approximative

  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 indirection

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.

 

Indirection et syntaxe

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.

 

Limitation en cas d'échec de la composition de fonction

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.

 

Logique inversée

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.

 

Syllogisme et mot double

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 ?)

 

 

Versions

 

Visual Basic .Net

- C'est la version la plus complète.

 

VB6

- Cette version n'inclut pas la synthèse vocale sous Windows 10, ni le mode automatique, ni les tests unitaires.

 

VBA Word

- Version identique à la version VB6, le code source est partagé, via la compilation conditionnelle (bVersionVBA).

 

CSharp (C#)

 

- Ce moteur IAVB en C# est utilisé en commun par trois projets avec trois technologies distinctes :

WinForm

- 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).

 

WPF

- La version WPF en C# est équivalente à la version WinForm en C#.

 

C#/XAML for HTML5

- 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

 

 

Projets

 

- 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.

 

 

Composants requis pour la synthèse vocale avec MS-Agent

 

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) :

 

Agents Microsoft

- 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)

 

Synthèse vocale avec MS-Agent

- 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

 

 

Composant IAVB ocx

 

Voir la documentation ici :

http://patrice.dargenton.free.fr/ia/iavb/IAVBOCX.html

 

 

Historique des versions

 

Version 3.12 du 18/06/2017

- 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é).

 

Version 3.11 du 15/09/2013

- Passage en VB2010.

 

Version 3.10 du 06/12/2009

- 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).

 

Version 3.01 du 02/09/2007

- 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.

 

Version 2.11 en VB6 et VBA du 18/06/2017

- 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#.

 

Version 2.10 en VB6 du 02/09/2007

- 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.

 

Version 2 du 07/09/2001

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>

 

Version 1.01 du 23/08/2001

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 :

 

Liste des nouveautés par rapport à la version originale de 1984

- 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

 

Version 1.0b en VBA du 18/06/2017

- 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.

 

Version originale 1.0 du 23/08/2001

 

 

Liens

 

- 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

 

Chatbot (Robot de discussion)

- 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

 

www.alicebot.org

http://patrice.dargenton.free.fr/ia/alice/alicechatbot.html

http://ia.jenny.free.fr/Botmaster.htm

 

MS-Agent

- 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

 

Synthèse vocale

- 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

  www.microsoft.com/downloads/details.aspx?FamilyId=5E86EC97-40A7-453F-B0EE-6583171B4530&displaylang=en

 

Divers

groups.google.fr : fr.comp.ia

Annuaire Informatique : Intelligence artificielle

http://ai.about.com

- Artificial Intelligence FAQ

  www.faqs.org/faqs/ai-faq/general/part1/index.html

- Modélisation complexe : www.true-world.com