It's normal...

Because, a lot of bots are programmed with deterministic answers... The programmer must write a list of all input sentences. It's impossible to have a exhaustive list of all sentences. AIML has limit, and another project based on an internal database with or not with script, variables have the same problem.

The beginning solution is a project like the ECTOR of Mr Parmentier.  This item is not completely a probabilistic bot because it's possible to learn for this bot with an instructor.

The good final solution wouldl be a mix between probabilistic and deterministic solutions.  I've give here some little solutions in AIML and php to have an learning with the notion "Why" - Pourquoi in french.

2

(4 réponses, dans Solutions techniques)

???


Allô? Houston ?

On vous reçoit plus...

Regarde du côté de ton encoding... Ou alors, enlève tous les accents ?!

François Hollande? (I go away....)

I you read other subject, you can see : PyAIML wrote in python.

See more detail here : http://pyaiml.sourceforge.net/

Ici, ce n'est que quelques détails pouvant donner des idées à l'un ou l'autre, qui sait?

Et si besoin d'info, n'hésitez pas...

Le module d'apprentissage (toujours en php)


<?php

function enregistrerPourquoi($proposition){
    $retour;
    $bOK=false;
    $quand=false;
    $parce=false;

    $header1= '<?xml version="1.0" encoding="ISO-8859-1"?><aiml version="1.0">"';
    $header2= '<!--  AIML issu du module pourquoi.php issu du projet Enee - bernard_jacob at yahoo.fr - novembre 2012.-->';
    $footer='</aiml>';

    // *********************************************************************
    // ATTENTION ! ne faire cette démarche que si on ne parle pas du enee 
    // ou que le visiteur ne parle pas de lui !
    //
    // car on peut avoir une phrase du style j'irais au marché quand il s'arrêtera de pleuvoir.
    // *********************************************************************

    $proposition= utf8_decode($proposition);
    echo "Proposition = " . $proposition . "<br>";
    // Exemple que l'utilisateur peut introduire comme instructeur dans le enée :
    // "Le chat feule quand il a peur"


    if (strpos( $proposition , "quand" )>0){
        echo "<br>On m'explique une raison sous la forme xx QUAND yy<br>";
        $bOK = true;
        $quand=true;
    }

    if (strpos( $proposition , "parce qu" )>0){
        echo "<br>On m'explique une raison sous la forme xx PARCE QUE yy<br>";
        $bOK = true;
        $parce=true;
    }

    if($bOK){
        // Ici, le Enée va essayer d'enregistrer l'information
        if($quand){
            $mots= split("quand", $proposition);
            // Dans notre exemple, nous aurons :
            // IN = le chat feule
            // OUT= il a peur
            echo "phrase IN = " . $mots[0]. "<br>";
            echo "phrase OUT = " . $mots[1] . "<br>";


            // On va construire le corps de l'AIML sous forme
            // $corps="<category><pattern> POURQUOI LE CHAT FEULE </pattern><template>Parce que" . $mots[1] . ".</template></category>"
            // Dans notre exemple : <category><pattern> POURQUOI LE CHAT FEULE </pattern><template>Parce que il a peur.</template></category>
            $corps = "<category><pattern> POURQUOI ". mb_strtoupper($mots[0]) .  " </pattern><template>Parce que" . $mots[1] . ". </template></category>";
        }




        // Maintenant, il s'agit d'offrir cet AIML au module python et lui lancer une invitation via un envoi d'un fichier askxxxxx contenant 
        // tout simplement la commande "loadinfo"
        if(trim($corps)!=""){
            // ecriture des AIML (un comme archive et l'autre devant etre digeré par le enee....)
            
            $time = date("YmdHis");


            echo "<br>TIMESTAMP = " . $time . "<br>";
            $nomFichier = "./PyAIML/aiml/info.aiml";
            $fichierAIML = fopen( $nomFichier ,"w");    // Il écrase le precedant !
            fwrite($fichierAIML, $header1 . "\n");
            fwrite($fichierAIML, $header2 . "\n");
            fwrite($fichierAIML, $corps . "\n");
            fwrite($fichierAIML, $footer);
            fclose($fichierAIML);

            $nomFichier = "./PyAIML/aiml/".$time."info.aiml";    
            $fichierAIML = fopen( $nomFichier ,"w");    //En principe, nom unique
            fwrite($fichierAIML, $header1 . "\n");
            fwrite($fichierAIML, $header2 . "\n");
            fwrite($fichierAIML, $corps . "\n");
            fwrite($fichierAIML, $footer);
            fclose($fichierAIML);



            
            // On va envoyer un fichier "Askxxxx" contenant simplement "loadinfo".
            $message="loadinfo";
            $fichierAsk = fopen("./PyAIML/dialog/ask".$time,"w");    // Ce fichier sera renomme par module python.
            fwrite($fichierAsk, $message);
            fclose($fichierAsk);
            
        }

        
    }

    $retour="Info enregistrée, merci.";
    return $retour;
}

?>

Comment appeler ce module?  (soit en bidouillant le module précédant ou soit, déjà pour les tests, en appelant un module test)

testPourquoi.php

<?php

    require_once("pourquoi.php");
    $message=     "Le lion rugit quand il est faché.";

    enregistrerPourquoi($message);

?>

Organisation des folders:

soit le folder de votre site: monBot

Dedans, j'ai créé un folder PyAIML dans lequel se trouve dézippé le projet pyAIML

J'y ai rajouté donc un folder dialog pour que php puisse y écrire son fichier askxxx
beginFile.py (lancé comme daemon ou dans un console) le capture, le traite, met sa réponse dans un fichier outxxxx et renomme askxxx en _askxxxx (comme cela, il n'est plus traité la boucle suivante.

Les module php:

testAIML.php

<html>
    <FORM ACTION='testAIML.php'>
    <INPUT id=response TYPE="text" size="40" name="string">&nbsp;<INPUT TYPE="SUBMIT" value="Ok.">    
    </td>
    </tr>
    <tr>
    <td colspan=2>
    
    </FORM>        



<?php


function stripAccents($string){
    // Fonction qui enlève les accents, j'ai un blême dans la reconnaissance des mots clés
    return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
    
}


    //error_reporting(E_ALL);
    error_reporting(0);
    $session_id = rand(0,500);        // A mettre en commentaire si mis en PROD
    echo "<br>" . $session_id . "<br>";
    $message = $_GET['string'];
    $message = stripAccents($message);
    if(trim($message)!="") echo "<small>votre message : "  . $message . "</small><br>";
    if(trim($message)!=""){    
        $fichierAsk = fopen("./PyAIML/dialog/ask".$session_id,"w");
        fwrite($fichierAsk, $message);
        fclose($fichierAsk);
        if ($message=="reload") sleep(12);
        sleep(1);
        $fichierRep = fopen("./PyAIML/dialog/out".$session_id,"r");     // $handle = fopen( $fichier, 'r');
        $out = fgets($fichierRep);
        fclose($fichierRep);
        rename($fichierRep, $fichierRep . "__"); 
    }
    else echo "<br>Mode silencieux ?<br>";
    
    if(trim($out)!="") echo "Reponse = " . utf8_decode($out) . "<br>";
    echo "<br>Fin...<br>";

    
?> 

</html>

Ces modules de bases n'auraient jamais pu exister avec l'AIML si  Cort Stratton n'avait pas écrit son génial "A Python AIML Interpreter "

Les sources sont disponibles sur sourceforge.net :  http://pyaiml.sourceforge.net/


Perso, j'ai donc modifié pour qu'il communique via web avec des modules php:

Son begin.py est devenu : beginFile.py


beginFile.py (en python donc)

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-


 
import aiml
import commands
import os
import sys
import socket #biblio necessaire
import time

print "aiml parsing "

path = './dialog/'
def listdirectory(path): 
    fichier=[] 
    for root, dirs, files in os.walk(path): 
        for i in files: 
            fichier.append(os.path.join(root, i)) # donne le fullpathname avec
            #fichier.append(i) #donne juste le nom du fichier NE PAS UTILISER !!!!!!!!
    return fichier

k = aiml.Kernel()
if os.path.isfile("standard.brn"):
    k.bootstrap(brainFile = "standard.brn")
    existe= True
else:
    print "Pas de kernel compilé trouvé..."
    nomKernel = "./aiml/atomique.aiml"
    existe = os.path.isfile(nomKernel)
    k.learn(nomKernel)                    #enlever le commentaire pour chargement kernel
    k.saveBrain("standard.brn")
 


# set constants
k.setBotPredicate("name", "Enee")
k.setBotPredicate("location", "Liege")
k.setBotPredicate("birthplace", "Gaume")

input='quit'
sortie = False 
if existe==True: 
    while sortie==False :
        liste = listdirectory(path)    
        
        for i in liste: 
            if    i[0:12] == './dialog/ask' :        
                sortie = i.replace('ask','out')
                change = i.replace('ask','__ask')
                source = open(i, "r")
                input = source.readline().rstrip('\n\r')
                source.close()
                print 'message recu :' ,input
                if input == "quit" or input == "exit":                
                    sortie = True
                    k.saveBrain("standard.brn")
                    input=""
                    os.rename(i,change )
                if input =="reload"     :
                    k.learn(nomKernel)
                    os.rename(i,change )
                    input=""
                if input =="loadinfo"     :
                    nomInfo = "./aiml/info.aiml"
                    existe2 = os.path.isfile(nomInfo)
                    k.learn(nomInfo)    
                    k.saveBrain("standard.brn")
                    input="loadinfo"
                if input:
                    response = k.respond(input)
                    reponseOut = open(sortie, "w")
                    print response
                    reponseOut.write(response)                   #rapport.write(input.encode(self._textEncoding))
                    reponseOut.close()
                    os.rename(i,change )    
                    sortie = False
                response=""    
    print "A plus tard...    "
else:
        print "fichier Kernel inexistant !"
print 'fin process...'        

Bonjour à tous, moi, j'ai rajouté un 2eme moteur à mon bot écrit en php.

De fait, je me suis basé sur un AIML existant en français après une multitude de corrections.

Le parseur est basé sur un moteur écrit en python : le PyAIML

De fait, je fait une connexion entre php et ce module python qui est lancé en tant que deamon (je tourne le système sur Mint13, equivalent à ubuntu)

Le php et python communiquent via fichier.
Le php servant d'interface Web pour capturer la phrase de l'utilisateur, et l'écrivant dans un répertoire nommé "dialog".
Le nom de se fichier doit commencer par ASKxxxx (xxxx étant un numéro de session pour permettre une multi-utilisation.

L'originalité du bot est qu'il peut apprendre, j'avais parlé dans un autre poste du concept des premisses.
L'implémentation a été effectuée uniquement avec le verbe être et avoir.

Ici, le visiteur peut servir d'instructeur.

Le cheval a quatre pattes

Et par la suite, si on lui demande :

le cheval a combien de patte, il va répondre;

Le cheval a quatre pattes.



Je vous propose un autre cas de figure: lui apprendre le pourquoi des choses.


Le lion rugit quand il est fâché.

Le code php va générer automatiquement un fichier aiml de la forme suivante:

<?xml version="1.0" encoding="ISO-8859-1"?><aiml version="1.0">"
<!--  AIML issu du module pourquoi.php issu du projet Enee --->
<category><pattern> POURQUOI LE LION RUGIT  </pattern><template>Parce que il est faché.. </template></category>
</aiml>

On sauve ce fichier toujours sur le même nom (ce sont juste des toutes petites informations qui s'ajoutent à son cerveau de départ.) : info.aiml.

Ensuite, il suffira d'appeler la fonction learn()   (toujours via php qui communique avec begin.py)

exemple:

                if input =="loadinfo"     :
                    nomInfo = "./aiml/info.aiml"
                    existe2 = os.path.isfile(nomInfo)
                    k.learn(nomInfo)    
                    k.saveBrain("standard.brn")
                    input="loadinfo"

La fois suivante, quand vous lui demanderez:

pourquoi le lion rugit

Il vous répondra:

Reponse = Parce que il est faché..



Et ici, on a un robot qui apprend, grâce à son instructeur humain.

trotter a écrit:

Le vainqueur du Loebner Prize 2010 rend son code open source :
http://chatscript.sourceforge.net/

ChatScript is a "next Generation" chatbot engine, based on the one that powered Suzette, that won the 2010 Loebner Competition. ChatScript has many advanced features and capabilities that, when properly utilitized, permit extremely clever bots to be programmed. There is also a potentially useful ontology of nouns, verbs, adjectives, and adverbs for understanding meaning.

Ca a l'air costaud.


De fait.... J'ai jeté l'éponge.

Arf! Et moi qui suis sous linux, pas de chance.... J'avais installé à l'époque de recherche de compatibilité via WINE entre windaube et mandriva, l'IE 6.00, mais au boulot (sous XP et seven) la plupart de nos applis web présentent aussi des très graves problèmes (CSS trébuchants, javascript déconnants) sous IE 6.0

Donc, si je comprends bien, tu n'a pas eu un source en php, avec une lib éventuelle ? Tu paies un petit loyer, et tu configures leur moteur qui se trouve chez eux ?

J'ai vu que pandora faisait la même chose, si j'ai bien lu.  Ici, au niveau perso, c'est une machine mandriva 2008 qui héberge la plupart de mes applis.

J'essaie de lancer un projet appelé Enée, en php, mysql, et un fatras indescriptible de librairie: MBROLA, GIAC pour un projet futur de résolutions formelles d'équations.

J'ai déjà transformé Enée en calculette scientifique, avec la fonction EVAL, il peut même calculer des valeurs trigono, ainsi que des calculs comportant des parenthèses.


Éventuellement, si tu as les sources php, et tu cherches un hébergeur, tu es le bienvenu.

Dans les jours prochains, j'éditerai la partie calculette scientifique, c'est pas trop dur ni trop tirbouchonné.

Bonne soirée, ou je ne sais pas trop...

Patrice rend à César ce qui est à César...

L'idée originelle appartient à Philippe LARVET, qui avait écrit un article dans Micro-Système de 1984, en Basic pour Apple II


http://patrice.dargenton.free.fr/ia/iav … B1984.html

J'ai pu lire récemment un article assez intéressant.

Un bonhomme qui a programmé en vb un mini-système expert: 


Les sources sont ici : http://www.vbfrance.com/codes/MINI-SYST … _1825.aspx

Ici, on peut voir un extrait : http://patrice.dargenton.free.fr/ia/iavb/index.html

Sa page index :   http://patrice.dargenton.free.fr/ia/iav … .html#IAVB

TOUT STYLO EST BLEU

** Compris

FRANCOIS POSSEDE UN STYLO

** Compris

BLEU EST UNE COULEUR

** Compris

ROUGE EST UNE COULEUR

** Compris

TOUT STYLO EST EN PLASTIQUE

** Compris

LE PLASTIQUE EST UNE MATIERE

** Compris

FRANCOIS POSSEDE-T-IL UN STYLO ROUGE ?

** Non

QUELLE EST LA COULEUR DU STYLO DE FRANCOIS ?

BLEU

RAOUL A ACHETE UN STYLO EGALEMENT

** Compris

DE QUELLE COULEUR EST LE STYLO DE RAOUL ?

BLEU

TOUT STYLO EST EN QUELLE MATIERE ?

PLASTIQUE

EN QUELLE MATIERE EST TOUT STYLO ?

PLASTIQUE

' Limitation actuelle du logiciel : réponse fausse :

FRANCOIS POSSEDE-T-IL UN STYLO BLEU ?

** Non

FRANCOIS POSSEDE-T-IL UN STYLO ?

** Oui

COULEUR STYLO FRANCOIS ?

BLEU

DE QUELLE COULEUR EST LE STYLO DE FRANCOIS ?

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 QUE ANNIE EST LAIDE ?

JOLIE

CA 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 FRERE 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 FRERE DU FILS DE L'ONCLE D'ANATOLE ?

MARIE



L'ENTREPRISE A UN SIEGE ET UNE ANNEXE

** Compris

M.BERTRAND EST RESPONSABLE DE L'ANNEXE

** Compris

L'ANNEXE A 15 SERVICES DIFFERENTS

** Compris

M.JACQUES EST RESPONSABLE DE LA SAISIE

** Compris

M.RENE EST LE CHEF DU SERVICE COMPTABILITE

** Compris

M.MARTIN EST UN AMI DE M.JACQUES

** Compris

M.DUBOIS EST CHEF DU SERVICE PHOTO

** Compris

LA SAISIE EST UN SERVICE DECENTRALISE

** Compris

RENAUD EST LE FILS DE M.BERTRAND

** Compris

DAMIEN EST LE FILS DE M.RENE

** Compris

CHEF DE SERVICE ?

M.RENE

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

M.MARTIN



TOUT HOMME EST MORTEL

** Compris

OR SOCRATE EST UN HOMME

** Compris

DONC ?

DONC SOCRATE EST MORTEL  <HOMME>



TOUT HOMME EST BIPEDE

** Compris

OR PAUL EST UN HOMME

** Compris

DONC ?

DONC PAUL EST BIPEDE  <HOMME>

DONC ?

OR PAUL EST UN HOMME :

** Recherche approfondie...

DONC PAUL EST BIPEDE  <HOMME>

DONC PAUL EST COMME SOCRATE  <HOMME>

DONC PAUL EST MORTEL  <HOMME>



TOUT CE QUI EST RARE EST CHER

** Compris

UN CHEVAL BON_MARCHE EST RARE

** Compris

DONC ?

DONC UN CHEVAL BON_MARCHE 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(X)

** Compris

F(X) ?

Y1

X = G(T1)

** Compris

V = K(W)

** Compris

T1 = H(V)

** Compris

F(G(H(K(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(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( BIPEDE )  <HOMME>

DONC TIGRE = MANGEUR( SOCRATE )  <HOMME>

DONC TIGRE = MANGEUR( MORTEL )  <HOMME>

Y A-T-IL UN MANGEUR(SOURIS ET HOMME) ?

** Non

QUI EST MANGEUR(HOMME ET SOURIS) ?

** Je l'ignore



ARTABAN = CHEVAL(HENRI_IV)

** Compris

BLANC = COULEUR(ARTABAN)

** Compris

HENRI_IV = ROI(NAVARRE)

** Compris

LOUIS_14 = ROI(FRANCE)

** Compris

COULEUR(CHEVAL(ROI(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_IV

' Faille :  mauvaise indirection :

CHEVAL DU ROI ?

HENRI_IV

CHEVAL DU ROI DE NAVARRE ?

ARTABAN

CHEVAL DU ROI DE FRANCE ?

HENRI_IV



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

JAUNE EST UNE COULEUR



MARSEILLE EST LA VILLE PHOCEENNE

** Compris

DEFERRE EST LE MAIRE DE MARSEILLE

** Compris

PHOCEENNE SIGNIFIE ORIGINAIRE DE PHOCEE

** Compris

LA PHOCEE EST UNE PROVINCE GRECQUE

** Compris

GASTON EST LE PRENOM DE DEFERRE

** Compris

QUEL EST LE PRENOM DU MAIRE DE MARSEILLE ?

GASTON

QUEL EST LE PRENOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE GRECQUE ?

GASTON

' Test du système : composition de fonctions incomplète :

QUEL EST LE PRENOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE ?

** Je l'ignore

' Autres réponses souhaitées : GASTON EST LE PRENOM DU MAIRE DE LA VILLE ORIGINAIRE D'UNE PROVINCE PHOCEENNE

' ou bien : D'UNE PROVINCE PHOCEENNE ?

' ou bien : ** heu... GASTON ?



PAUL POSSEDE UN PERROQUET BAVARD

** Compris

MULTICOLORE SIGNIFIE DE PLUSIEURS COULEURS

** Compris

UN PERROQUET EST UN ANIMAL MULTICOLORE

** Compris

QUI POSSEDE 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

Ce n'est qu'un extrait....

Bravo donc à Patrice99 alias Patrice Dargenton

Je me demandais si on avait quelque part  un exemple de syllogisme en php.

Je prends le cas de Mylène, qui, quand on démarre mal, peut réagir tout à fait comme la blonde parfaite.

Mais à certains moments, on est quand même bluffé, et on se gratte la tête....

  • Mylène : Tu peux me demander "Combien un chat a-t-il de pattes ?", par exemple.
    Vous : combien de pattes a un serpent.
    Mylène : Un serpent n'a pas de pattes.
    Vous : Juste
    Mylène : Tu peux me demander "Combien un chat a-t-il de pattes ?", par exemple.
    Vous : Combien de plume a un chat
    Mylène : Un chat n'a pas de plumes.
    Vous : c'est quoi une vipère ?
    Mylène : Une vipère est un serpent.
    Vous : combien de plume a une vipere ?
    Mylène : Une vipère n'a pas de plumes.
    Vous : C'est quoi une truite ?
    Mylène : Une truite est un poisson.
    Vous : combien de dents a une truite
    Mylène : Je ne sais pas combien une truite a des dents.
    Vous : combien de plume a une truite ?
    Mylène : Je ne sais pas combien une truite a des plumes.
    Vous : un poisson n'a pas de plume
    Mylène : Ah bon.
    Vous : combien de plume a une truite ?
    Mylène : Une truite n'a pas de plumes.
    Vous : Comment s'appelle ton papa ?
    Mylène : Merci de m'avoir posé cette question.

Dans un premier temps, elle sait qu'une truite est un poisson, mais ne sait pas combien il y a de plume sur la truite

Ici, vers la fin, on voit que Mylène apprend une propriété concernant les poissons (ne possèdent pas de plume)

On redemande combien de plume possède la truite, et elle arrive à répondre correctement..


Mais....


Vous : combien de plume possède une truite ?
Mylène : Je ne sais pas combien une truite possède des plumes.


L'action "avoir" n'est pas assimilée avec l'action "posséder"...

De fait, moi, je n'accède jamais à Janneton , j'obtiens que des signes chinois ? Japonais ?

16

(2 réponses, dans Solutions techniques)

Bonjour,

J'ai trouvé cet article sur le site d'IBM expliquant comment récupérer les informations issues du Wikipédia.


http://www.ibm.com/developerworks/opens … ml?ca=drs-

Deux bibliothèque sont nécessaires :  framework Zend (gratuit mais inscription obligation), je n'utilise que la version light )

et PEAR, surtout les modules Text avec Text_Wiki ( J'ai installé 1.2.1) et le Text_Wiki_Mediawiki ( la version alpha qui fonctionne bien:  0.2.0 )


Ne pas oublier, à moins que votre boot soit rosbeef, de modifier les http://en.wikipedia.org/w/api.php en http://fr.wikipedia.org/w/api.php.

Si j'ai le temps et je m'y retrouve enfin avec genesis, je montrerai comment interfacer l'exemple de Vikram Vaswani (le contact d'IBM) avec genesis.

17

(9 réponses, dans Vos bébés)

trotter a écrit:

Voici la première version de l'interpréteur PHP C23, utilisé entre autres pour Genesis, Brendon ou encore le guide sur chatterbots.fr.

INCLUS :

-La documentation, également lisible ici.
-Un chatterbot exemple d'une dizaine de ligne présentant les fonctions.
-L'intégralité de Genesis dans sa version du 12 février 2010.

TELECHARGEMENT :

http://s140685957.onlinehome.fr/bot/C23 … _02_12.zip

Copyright :

Distribué sous  licence GPL.
Le cerveau est mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France. La licence est consultable ici : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Vieille versions :
http://s140685957.onlinehome.fr/bot/C23R1.zip



J'avoue que je me suis planté en beauté lorsque j'ai essayé de comprendre le code avec l'ancienne version...

Et comme je ne voulais pas bêtement faire tourner un php sans pouvoir trifouiller les code, j'ai laissé tomber.
De fait, dans la boucle principale, après le fopen du cerveau (ar.txt), je n'arrivais plus réellement à retomber sur mes pattes avec la variable permettant de continuer analyse, du coup, le système s’arrêtait après la dizième ligne de ar.txt.

Je vais voir si mes lunettes sont mieux nettoyées avec cette nouvelle version.


Bonjour à tous.

18

(9 réponses, dans Les chatterbots en général)

inconnu a écrit:

Mais sinon j'ai remarquer que Genesis ne prenais pas en compte la personne toucher par l'adjectif, ainsi une fois pour voir j'ai sortie:

Utilisateur : je suis con
Bot : COMMENT ? J'EXIGE DES EXCUSES !


N'est ce pas plutôt le respect des lois d'Asimov qui fait que Genesis s'insurge,: De par ton inaction, tu ne dois pas laisser maltraiter un humain (si mes souvenirs sont pas trop vieux...

Oky, je sors...

19

(7 réponses, dans Les chatterbots en général)

Dédalus a écrit:

Merci Trotter et  Sylvain je vais m'y atteler, Dommage pour Linux...


Bonjour à tous, j'ai pas trouvé la page spéciale pour la présentation.

Par contre, je me permets de m'insurger sur linux, surtout ubuntu, en natif, ubuntu a déjà mysql et apache, or, la plupart des bots, que ce soit celui de trotter, celui de o-atic, sont sous php, donc, sous apache. Pas besoin de se casser la nénette avec les xamp et autres.