REGLES, MOTEURs D’INFERENCE    ET ARCHITECTURES REACTIVES             (Version Etendue)Cours de 5 ème année ESILV Option I...
Cette présentation traite de:-- comment faire un moteur d’inférence en chaînage avant pourdes règles de production avec va...
On se place dans un monde de « triplets:     TRT / fait partie de / THALES    THALES / a un effectif de / 62000     PIERRE...
« TOUT » peut être représenté par des triplets•Des tables relationnelles•Des tableaux Excel•Des objets JAVA•Du XML•Des arb...
Exemples de représentations par triplets•Frames•Réseaux sémantiques•Graphes conceptuels•RDF•C’est très ancien: années 60 (...
Un simple tableau à 3 colonnesTRT    Fait            THALES       partie deTHALES A un            62000       effectif    ...
TRT          Fait partie de   THALES               Ca se dessine …                                        THALES       A u...
REGLES …« LES AMIS DE MES AMIS SONT MES AMIS »X / AMI / Y     et          Y / AMI / Z              =>                   X ...
APPLIQUER UNE REGLEPIERRE / AMI / PAULPAUL / AMI / JACQUESX / AMI / Y et      Y / AMI / Z =>               X / AMI / ZTout...
MOTEUR DE REGLES / MOTEUR D’INFERENCEUN ENSEMBLE DE TRIPLETS+UN ENSEMBLE DE REGLESDE NOUVEAUX TRIPLETS              J. ROH...
MOTEUR D’INFERENCE / APPROCHE NAIVEAPPLIQUER TOUTES LES REGLESAJOUTER LEURS CONCLUSIONS A LA BASERECOMMENCER SI LA BASE A ...
APPLIQUER UNE REGLE   X / AMI / Y      Y / AMI / Z         ->       X / AMI / Z   AA   ami   BB     AA    ami   BB   AA   ...
APPLIQUER UNE REGLE = opération de JOINTURE   X / AMI / Y      Y / AMI / Z        ->       X / AMI / Z                    ...
UN MOTEUR, CA TOURNE …UNE REGLE QUI S’APPLIQUE CREE DE NOUVEAUXTRIPLETSCES NOUVEAUX TRIPLETS PEUVENT PERMETTRE AD’AUTRES R...
LORS D’ UN TOUR SUIVANT …X / AMI / Y      Y / AMI / Z         ->        X / AMI / Z                                       ...
RELATIONS INVERSESRELATIONS SYMETRIQUESTraité par des règles supplémentairesX / travaille pour / Y => Y / emploie / XX /em...
Implémentation Naïve de la       Saturation       J. ROHMER ESILV S09 2010-2011
Syntaxe des RèglesUn fichier .txt de la forme:R1,IF,?X,ami de,?YR1,IF,?X, est un,PersonneR1,IF,?Y,ami de,?ZR1,THEN,?X,ami ...
Syntaxe de la base de faitsUn fichier .txt de la forme:Pierre,est un,PersonnePierre,ami de,PaulPaul,ami de,Louis          ...
Premier programme•   Lire un fichier de faits•   Lire un fichier de règles•   Faire toutes les déductions possibles•   Lis...
Structure du programme (1)•   Lire les faits     –   Vérifier que syntaxiquement correct     –   Ignorer les faits incorre...
Structure du programme (2)• Choix simples d’implémentation• Tous les symboles sont codés dans un dictionnaire• La base de ...
Structure des données (1)                                                    R1,IF,?X,ami de,?Y0    Pierre                ...
Structure des données (2)•   Donc on va essentiellement manipuler des matrices de codes dictionnaire•   => Classe Java: M•...
Classe Java Vecteur « V » (suggestions et exemples)V: un ArrayList de IntegerV ( ) /** créé un vecteur videV (int n,Intege...
Classe Java Matrice « M » (suggestions et exemples)M est un ArrayList de V (vecteur) /** un Arraylist de vecteurs qui sont...
Classe Java Dictionnaire « D » (suggestions et exemples)D est un ArrayList de StringMéthodesInt code(String s) /** donne l...
Opération clé: la jointure•   Programmation de la jointure en Java•   Une jointure va être une CLASSE Java•   JMM( M A,int...
APPLIQUER UNE REGLE = opération de JOINTURE   X / AMI / Y      Y / AMI / Z        ->       X / AMI / Z                    ...
Principe de la Jointure• Soit un élément commun E entre les deux  colonnes de la jointure• Si il est présent nA fois dans ...
ExempleLA1   AA   AA     LB1                                   AA : 2 * 1 = 2LA2   AA   BB    LB2                         ...
ExempleLA1   AA           AA       LB1           LA1           AA   AA   LB1           BB      LB2            LA2         ...
LA1       AA         AA          LB1           LA1       AA     AA         LB1                     BB         LB2         ...
Une opération intermédiaire: apparier deux vecteurs                                          1              1AA           ...
Classe ApparierApparier (V va,V vb)Apparier(va,vb).get_ia: donne le vecteur  d’indices pour vaApparier(va,vb).get_ib: donn...
Lecture des fichiers de règles               et faitsTraduire un fichier en une matriceEt codage dans un dictionnaireVia u...
REPRESENTATION ETEXECUTION D’UNE REGLE      J. ROHMER ESILV S09 2010-2011
Représentation d’une règleLa matrice des règles a 5 colonnes : M_reglesCalcul de l’ensemble des noms des règles:V M_regles...
Exécution d’une règleX / AMI / Y    Y / AMI / Z        ->        X / AMI / Z A la fin des hypothèses, il faut l’ensemble d...
La matrice « M_XYZT »Toutes les combinaisons des variables (comme en Prolog)X ami Y et Y ami Z => X ami Z=> Tableau à 3 co...
M_XYZTX ami Y et Y ami Z => X ami Z                      X                Y    Z                      AA               BB ...
En fait:Un Vecteur V_XYZTUne Matrice M_XYZT          X             Y          Z          AA            BB         CC      ...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …             X travaille à TX    Y   ZAA BB CCAA BB DDAA C...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …               X chef de YX    Y   ZAA BB CCAA BB DDAA CC ...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …               T habite à UX    Y   ZAA BB CCAA BB DDAA CC...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …               T habite à U                         On va ...
Importance de l’ordre des hypothèsesAu lieu de:                Il faut écrire:Si                         Si?X ami ?Y      ...
RestrictionPour l’instant, on se limite à des hypothèses  ne comportant que des variables, et pas des  constantes:?X ami ?...
Exécution d’une RègleUne règle est représentée par deux M:M_H : matrice 3 colonnes de ses hypothèsesM_C : matrice 3 colonn...
Cœur du MoteurC_delta_global = M videC_delta_un_tour = M contenant une valeur bidon (non vide)Tant que C_delta_un_tour non...
Exécution de la première hypothèse d’une règleExemple: X ami YCela consiste à initialiserV_XYZTM_XYZTMettre les variables ...
Exécution des Hypothèses Suivantes                 D’une règleV_XYZT et M_XYZT ont déjà des valeursQue l’on va modifier av...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …             Y travaille à TX    Y   Z           Détermine...
Si une nouvelle hypothèse arrive        X ami Y et Y ami Z et …            Y travaille à T                   Calculer un e...
Si une nouvelle hypothèse arriveX ami Y et Y ami Z et …Y travaille à T                                   Faire la jointure...
Si une nouvelle hypothèse arriveX ami Y et Y ami Z et …Y travaille à T                                    BB         trava...
Ce qui donne un nouveau M_XYZT …                                  AA         BB   CC   DD1                                ...
Si une nouvelle hypothèse arrive         X ami Y et Y ami Z et …               X chef de YX    Y   Z           Déterminer ...
Exécution des Conclusions d’une             RègleOn a exécuté toutes les hypothèses d’une règleOn a V_xyzt et M_xyzt qui n...
Si une nouvelle hypothèse arrive         Si X ami Y et Y ami Z alors X ami Z                              Rechercher les p...
Génération d’une Conclusion (suite)Les conclusions sont ajoutées au  C_delta_une_regle si elles ne sont pas déjà  présente...
Autres Méthodes UtilesDédoublonnage d’une matrice: supprimer les  doublons de lignes de M1Intersection de deux matrices M1...
Note d’implémentationLes fonctions Apparier, Dédoublonnage, Intersection,Moins peuvent s’implémenter:-- de manière naïve a...
Mieux que la saturation naïve:La méthode « DELTA DRIVEN »       (J. Rohmer 1982)          J. ROHMER ESILV S09 2010-2011
LA METHODE NAIVE DE SATURATION: A CHAQUEFOIS ON REFAIT LES MEMES CALCULS …POUR OPTIMISER:1) IL FAUT RELANCER LE MOTEUR SEU...
Algorithme DELTA-DRIVENPrincipe: intégrer les dérivées des règles  P Q => Rse transforme en   ∆PQ ∪ ∆QP => ∆RExemple:X / a...
X / ∆ami / Y et Y / ami / Z               => X / ∆ami / Z« les nouveaux amis de mes amis sont mesnouveaux amis » !Distinct...
X / ∆ami / Y et Y / ami / Z          => X / ∆ami / Z AA   ami   BB                                   AA   ami   CC        ...
ECORCHE FINAL DU MOTEUR REGLES                 H1 H2            => C1 D’ORIGINE                 H3 H4 H5         => C2 C3 ...
Points Importants:Réordonner les hypothèses des règlesY compris pour les Delta-RèglesOpérations de base sur des tables-- s...
EVALUATION DES HYPOTHESES D’UNE REGLE:Construire le produit cartésien des variables:X / habite à Z / et Y / habite à T / e...
CECI C’ETAIT LECHAINAGE AVANT: « on cherche tout sans but »MAIS ON VEUT SOUVENT FAIREDU CHAINAGE ARRIERE: « on a un but »«...
PRINCIPE DE LA METHODE D’ALEXANDRE (Très simplifié)Soit la règle P Q => RElle se transforme en trois règles:    Si j’ai le...
LE CELEBRE PROBLEME DES ANCETRESX Parent Y => X Anc Y(X Parent Y) (Y Anc Z) => X Anc ZOn transforme les règles en introdui...
J. ROHMER ESILV S09 2010-2011
APPLICATIONS AUX RESEAUX SOCIAUX« SOCIAL COGNITIVE RULES »We can formulate several theories about Trust:I trust people tru...
(X trusts Y) (Z trusts Y) => X trusts ZSe transforme via la Méthode d’Alexandre en:R1: (Pb_Trust_10 On X) (X Trust Y) => (...
PASSER DU MOTEUR D’INFERENCE DELTA-DRIVEN  A UNE ARCHITECTURE DE SYSTEME REACTIVE         (parfois appelée aussi EVENT- DR...
ARCHITECTURE REACTIVE: DELTA-DRIVENMise à jourde la baseNOUVELLE                       Relance du moteurINFORMATION       ...
ARCHITECTURE DELTA-DRIVEN+ METHODE D’ ALEXANDRE= RAFRAICHISSEMENT AUTOMATIQUEDES ALERTESDES CONSIGNES DE RECHERCHEDES CONS...
On veut surveiller « Qui sont les amis de Paul ?»                                                                   Premie...
Prochain SlideShare
Chargement dans…5
×

Semantic networks, business rules, inference engines, and complex event processing

1 733 vues

Publié le

Theses slides describe the principles of semantic networks (or triples) as a general and flexible representation format. We introduce the notion of deduction rules / inferences on semantic networks / triples. The detailed design of an inference engine -forward chaining- is introduced. It uses the so-called "delta driven computing" to optimise inference. The gereralization to forward chaining is provided, using the "Alexander Method". Principles of the implementation in Java are introduced, with appropriate methods on matrix operations, inparticular relational Join operations. FInally, we show how we can implement "Complex Event processing" and trigger mechanisms.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 733
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
59
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Semantic networks, business rules, inference engines, and complex event processing

  1. 1. REGLES, MOTEURs D’INFERENCE ET ARCHITECTURES REACTIVES (Version Etendue)Cours de 5 ème année ESILV Option Informatique Jean Rohmer J. ROHMER ESILV S09 2010-2011
  2. 2. Cette présentation traite de:-- comment faire un moteur d’inférence en chaînage avant pourdes règles de production avec variables: moteur Delta-Driven-- comment transformer des problèmes de chaînage arrière enchaînage avant: Méthode d’Alexandre-- comment construire une architecture réactive avec unmoteur Delta-Driven et la Méthode d’Alexandre J. ROHMER ESILV S09 2010-2011
  3. 3. On se place dans un monde de « triplets: TRT / fait partie de / THALES THALES / a un effectif de / 62000 PIERRE / travaille pour / TRT TRT France / fait partie de / TRT TRT France / est situé à / PALAISEAU THALES / est une / ORGANISATIONORGANISATION / est une / CATEGORIE Est situé à / est une / RELATION J. ROHMER ESILV S09 2010-2011
  4. 4. « TOUT » peut être représenté par des triplets•Des tables relationnelles•Des tableaux Excel•Des objets JAVA•Du XML•Des arbres d’analyse syntaxique de langage naturel J. ROHMER ESILV S09 2010-2011
  5. 5. Exemples de représentations par triplets•Frames•Réseaux sémantiques•Graphes conceptuels•RDF•C’est très ancien: années 60 (ou Aristote …)•Voir un réseau sémantique du 16 ème siècle:http://www.serialmapper.com/archive/2008/01/08/reseau-semantique-du-16eme-siecle.html•Papier sur l’histoire des réseaux sémantiques :http://www.jfsowa.com/pubs/semnet.htm J. ROHMER ESILV S09 2010-2011
  6. 6. Un simple tableau à 3 colonnesTRT Fait THALES partie deTHALES A un 62000 effectif dePIERRE Travaille TRT pourTRT Fait TRTFrance partie deTRT Est situé PalaiseauFrance à J. ROHMER ESILV S09 2010-2011
  7. 7. TRT Fait partie de THALES Ca se dessine … THALES A un effectif 62000 de PIERRE Travaille TRT pour THALES TRT France Fait partie de TRT PIERRE dirige TRT France PIERRE TRT France Est situé à Palaiseau Fait partie de Travaille pour A un effectif de dirige TRT 62000 Fait partie deTRT France Est situé à PALAISEAU J. ROHMER ESILV S09 2010-2011
  8. 8. REGLES …« LES AMIS DE MES AMIS SONT MES AMIS »X / AMI / Y et Y / AMI / Z => X / AMI / Z J. ROHMER ESILV S09 2010-2011
  9. 9. APPLIQUER UNE REGLEPIERRE / AMI / PAULPAUL / AMI / JACQUESX / AMI / Y et Y / AMI / Z => X / AMI / ZTout ceci implique: PIERRE / AMI / JACQUES J. ROHMER ESILV S09 2010-2011
  10. 10. MOTEUR DE REGLES / MOTEUR D’INFERENCEUN ENSEMBLE DE TRIPLETS+UN ENSEMBLE DE REGLESDE NOUVEAUX TRIPLETS J. ROHMER ESILV S09 2010-2011
  11. 11. MOTEUR D’INFERENCE / APPROCHE NAIVEAPPLIQUER TOUTES LES REGLESAJOUTER LEURS CONCLUSIONS A LA BASERECOMMENCER SI LA BASE A GROSSI(Méthode de « saturation ») J. ROHMER ESILV S09 2010-2011
  12. 12. APPLIQUER UNE REGLE X / AMI / Y Y / AMI / Z -> X / AMI / Z AA ami BB AA ami BB AA ami CC AA ami CC BB ami CC BB ami CC BB ami DD BB ami DD CC ami EE CC ami EE EE ami GG FF ami GGTous les triplets Tous ROHMER ESILV S09 2010-2011 J. les triplets
  13. 13. APPLIQUER UNE REGLE = opération de JOINTURE X / AMI / Y Y / AMI / Z -> X / AMI / Z AA ami CC Ancien ! AA ami DD Nouveau ! AA ami EE Nouveau ! BB ami EE Nouveau !Tous les triplets TousROHMER ESILV S09 2010-2011 J. les triplets
  14. 14. UN MOTEUR, CA TOURNE …UNE REGLE QUI S’APPLIQUE CREE DE NOUVEAUXTRIPLETSCES NOUVEAUX TRIPLETS PEUVENT PERMETTRE AD’AUTRES REGLES DE S’APPLIQUERQUAND PLUS AUCUNE REGLE NE PRODUIT DENOUVEAUX TRIPLETS, C’EST FINICA S’ARRETE TOUJOURSCAR ??? J. ROHMER ESILV S09 2010-2011
  15. 15. LORS D’ UN TOUR SUIVANT …X / AMI / Y Y / AMI / Z -> X / AMI / Z AA ami CC ANCIEN! AA ami DD ANCIEN! AA ami EE ANCIEN! BB ami EE ANCIEN! AA ami GG Nouveau ! AA ami EE J. ROHMER ESILV S09 2010-2011
  16. 16. RELATIONS INVERSESRELATIONS SYMETRIQUESTraité par des règles supplémentairesX / travaille pour / Y => Y / emploie / XX /emploie / Y => Y /travaille pour / XX / ami / Y => Y / ami / XOu mécanisme assuré par la base de données: solutionIdéliance J. ROHMER ESILV S09 2010-2011
  17. 17. Implémentation Naïve de la Saturation J. ROHMER ESILV S09 2010-2011
  18. 18. Syntaxe des RèglesUn fichier .txt de la forme:R1,IF,?X,ami de,?YR1,IF,?X, est un,PersonneR1,IF,?Y,ami de,?ZR1,THEN,?X,ami de,?ZConvention: une variable commence par un ?Sinon c’est une constante J. ROHMER ESILV S09 2010-2011
  19. 19. Syntaxe de la base de faitsUn fichier .txt de la forme:Pierre,est un,PersonnePierre,ami de,PaulPaul,ami de,Louis J. ROHMER ESILV S09 2010-2011
  20. 20. Premier programme• Lire un fichier de faits• Lire un fichier de règles• Faire toutes les déductions possibles• Lister toutes les déductions nouvelles J. ROHMER ESILV S09 2010-2011
  21. 21. Structure du programme (1)• Lire les faits – Vérifier que syntaxiquement correct – Ignorer les faits incorrects – Lister les faits incorrects• Lire un fichier de règles – Vérifier que syntaxiquement correct – Ignorer les règles incorrectes – Lister les lignes des règles incorrectes• Lancer le moteur – Faire toutes les déductions possibles – Lister toutes les déductions nouvelles J. ROHMER ESILV S09 2010-2011
  22. 22. Structure du programme (2)• Choix simples d’implémentation• Tous les symboles sont codés dans un dictionnaire• La base de faits est une matrice à 3 colonnes contenant les codes des symboles des faits• La base de règle est une matrice à 5 colonnes contenant les codes des symboles des règles J. ROHMER ESILV S09 2010-2011
  23. 23. Structure des données (1) R1,IF,?X,ami de,?Y0 Pierre Pierre,est un,Personne R1,IF,?X, est un,Personne1 est un Pierre,ami de,Paul R1,IF,?Y,ami de,?Z2 Personne Paul,ami de,Louis R1,THEN,?X,ami de,?Z3 ami de4 Paul 0 1 2 6 7 8 3 95 Louis 6 7 8 1 26 R1 0 3 4 6 7 9 3 107 IF 6 11 8 3 108 ?X 4 3 59 ?Y10 ?Z11 THEN J. ROHMER ESILV S09 2010-2011
  24. 24. Structure des données (2)• Donc on va essentiellement manipuler des matrices de codes dictionnaire• => Classe Java: M• Et des vecteurs de codes dictionnaire• => Classe Java: V• Et on a besoin d’un dictionnaire• => Classe Java: D J. ROHMER ESILV S09 2010-2011
  25. 25. Classe Java Vecteur « V » (suggestions et exemples)V: un ArrayList de IntegerV ( ) /** créé un vecteur videV (int n,Integer Val) /** créé un vecteur de N fois ValV(Integer I) /** créé un vecteur de 1 élémentMéthodes sur VInt membre (Integer I) /** rend 0 si I n’est pas dans V, 1 sinonVoid Indicer (V indice) /** undice le vecteur par un vecteur d’indicesVoid ajout_integer (INteger I) /** ajoute un élément à un vecteurVoid concat(V V2)b /**Concatene un vecteur à un vecteurInteger Get (Int i) /** rend le ième élémentVoid Set (Int i, Integer Val) /** affectation élément iV Union () /** rend l’ensemble des éléments d’un vecteurVoid lister (D d) /*µ liste les symboles d’un vecteur décodés avec le dictionnaire J. ROHMER ESILV S09 2010-2011
  26. 26. Classe Java Matrice « M » (suggestions et exemples)M est un ArrayList de V (vecteur) /** un Arraylist de vecteurs qui sont les colonnes de la matriceM(String s,D d) /** matrice 1 ligne 1 colonne contenant le code de s dans DM(Integer i) /** matrice 1 ligne 1 colonne contenant iVoid Add_Vect_C (V c) /** ajoute un vecteur à une matrice en dernière colonneVoid Add_Vect_L (V c) /** ajoute un vecteur à une matrice en dernière ligneVoid Add_Mat_C(M m) /** ajoute une matrice à droiteVoid Add_Mat_L(M m) /** ajoute une matrice en basV getcol(int i) /** rend un vecteur égal à la i ème colonneVoid setcol (int i,V) /** remplace la ième colonne par un vecteurEtc, etc … J. ROHMER ESILV S09 2010-2011
  27. 27. Classe Java Dictionnaire « D » (suggestions et exemples)D est un ArrayList de StringMéthodesInt code(String s) /** donne le code de la chaîne s dans le dictionnaire, la rajoute si absenteString decode(int i) /** rend la chaine d’un codeV code(String[] s) /** le vecteur des codes d’un tableau de chaînesEtc … J. ROHMER ESILV S09 2010-2011
  28. 28. Opération clé: la jointure• Programmation de la jointure en Java• Une jointure va être une CLASSE Java• JMM( M A,int iA,M B,int iB)• Jointure entre A et B selon colonnes iA, iB• JMM( M A,int iA,M B,int iB). get() va rendre le résultat J. ROHMER ESILV S09 2010-2011
  29. 29. APPLIQUER UNE REGLE = opération de JOINTURE X / AMI / Y Y / AMI / Z -> X / AMI / Z AA ami CC Ancien ! AA ami DD Nouveau ! AA ami EE Nouveau ! BB ami EE Nouveau !Tous les triplets TousROHMER ESILV S09 2010-2011 J. les triplets
  30. 30. Principe de la Jointure• Soit un élément commun E entre les deux colonnes de la jointure• Si il est présent nA fois dans une colonne et nB fois dans l’autre, ceci va générer nA*nB lignes dans le résultat J. ROHMER ESILV S09 2010-2011
  31. 31. ExempleLA1 AA AA LB1 AA : 2 * 1 = 2LA2 AA BB LB2 BB : 3 * 2 = 6LA3 BB BB LB3 CC : 1 * 1 = 1LA4 BB EE LB4LA5 BB CC LB5 Donc le résultat aura 9 lignesLA6 CC FF LB6LA7 DD GG LB7 J. ROHMER ESILV S09 2010-2011
  32. 32. ExempleLA1 AA AA LB1 LA1 AA AA LB1 BB LB2 LA2 AA AA LB1LA2 AA BB LB3 LA3 BB BB LB2LA3 BB EE LB4 LA3 BB BB LB3 CC LB5 LA4 BB BB LB2LA4 BB FF LB6 LA4 BB BB LB3 GG LB7 LA5 BB BB LB2LA5 BB LA5 BB BB LB3 LA6 CC CC LB5LA6 CCLA7 DD J. ROHMER ESILV S09 2010-2011
  33. 33. LA1 AA AA LB1 LA1 AA AA LB1 BB LB2 LA2 AA AA LB1LA2 AA BB LB3 LA3 BB BB LB2LA3 BB EE LB4 LA3 BB BB LB3 CC LB5 LA4 BB BB LB2LA4 BB FF LB6 LA4 BB BB LB3 GG LB7 LA5 BB BB LB2LA5 BB LA5 BB BB LB3 LA6 CC CC LB5LA6 CCLA7 DDIl suffit de calculer les indices des lignes présentes dans le résultat:Depuis M1: 1, 2, 3, 3, 4, 4, 5, 5, 6Depuis M2: 1, 1, 2, 3, 2, 3, 2, 3, 5 J. ROHMER ESILV S09 2010-2011
  34. 34. Une opération intermédiaire: apparier deux vecteurs 1 1AA AA 2 1AA BB 3 2BB BB 3 3BB + EE = 4 + 2BB CC 4 3CC FF 5 2DD GG 5 3 6 5 J. ROHMER ESILV S09 2010-2011
  35. 35. Classe ApparierApparier (V va,V vb)Apparier(va,vb).get_ia: donne le vecteur d’indices pour vaApparier(va,vb).get_ib: donne le vecteur d’indices pour vbBien voir: l’opération va et vb -> ia et ibest une instance de la classe ApparierLes résultats sont construits comme attributs internes à l’instance J. ROHMER ESILV S09 2010-2011
  36. 36. Lecture des fichiers de règles et faitsTraduire un fichier en une matriceEt codage dans un dictionnaireVia une méthode sur une matrice de classe MM.Lire_fichier(File F, D d) J. ROHMER ESILV S09 2010-2011
  37. 37. REPRESENTATION ETEXECUTION D’UNE REGLE J. ROHMER ESILV S09 2010-2011
  38. 38. Représentation d’une règleLa matrice des règles a 5 colonnes : M_reglesCalcul de l’ensemble des noms des règles:V M_regles.getcol(0).union()Retrouver les lignes d’une règle de nom Rm = matrice 1 ligne 1 colonne qui contient RM_lignes_regle = Jointure(M_regles,0,m,0)Séparer les hypothèses et les conclusionsmh = matrice 1 ligne 1 colonne qui contient le code de ‘IF’mc=matrice 1 ligne 1 colonne qui contient le code de ‘THEN’M_hypos_regle = Jointure(M_lignes_regle,1,mh,0)M_concl_regle = Jointure(M_lignes_regle,1,mc,0) J. ROHMER ESILV S09 2010-2011
  39. 39. Exécution d’une règleX / AMI / Y Y / AMI / Z -> X / AMI / Z A la fin des hypothèses, il faut l’ensemble de toutes les combinaisons des variables: (X,Y,Z, …) ⇒Construction d’une table des N-uplets ⇒C’est la matrice « M_XYZT » ⇒Où chaque colonne correspond à une variable J. ROHMER ESILV S09 2010-2011
  40. 40. La matrice « M_XYZT »Toutes les combinaisons des variables (comme en Prolog)X ami Y et Y ami Z => X ami Z=> Tableau à 3 colonnes: X,Y,Z J. ROHMER ESILV S09 2010-2011
  41. 41. M_XYZTX ami Y et Y ami Z => X ami Z X Y Z AA BB CC AA BB DD AA CC EE BB CC EE J. ROHMER ESILV S09 2010-2011
  42. 42. En fait:Un Vecteur V_XYZTUne Matrice M_XYZT X Y Z AA BB CC AA BB DD AA CC EE BB CC EE J. ROHMER ESILV S09 2010-2011
  43. 43. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … X travaille à TX Y ZAA BB CCAA BB DDAA CC EEBB CC EE J. ROHMER ESILV S09 2010-2011
  44. 44. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … X chef de YX Y ZAA BB CCAA BB DDAA CC EEBB CC EE J. ROHMER ESILV S09 2010-2011
  45. 45. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … T habite à UX Y ZAA BB CCAA BB DDAA CC EEBB CC EE J. ROHMER ESILV S09 2010-2011
  46. 46. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … T habite à U On va interdire ce cas:X Y Z Cela ferait un produit cartésien Entre toutes les valeurs deAA BB CC (X,Y,Z) d’une part et de (T,U)AA BB DD d’autre part. Une hypothèse –sauf la première-AA CC EE doit avoir au moins une variable commune avec les précédentesBB CC EE J. ROHMER ESILV S09 2010-2011
  47. 47. Importance de l’ordre des hypothèsesAu lieu de: Il faut écrire:Si Si?X ami ?Y ?X ami ?Y?Z ami ?T ?X père ?Z?X père ?Z ?Y père ?T?Y père ?T ?Z ami ?YAlors … Alors … J. ROHMER ESILV S09 2010-2011
  48. 48. RestrictionPour l’instant, on se limite à des hypothèses ne comportant que des variables, et pas des constantes:?X ami ?Y est permis?X ami Paul est interdit(sera étendu dans un second temps) J. ROHMER ESILV S09 2010-2011
  49. 49. Exécution d’une RègleUne règle est représentée par deux M:M_H : matrice 3 colonnes de ses hypothèsesM_C : matrice 3 colonnes de ses conclusionsProgramme:Exécuter la première hypothèseExécuter les hypothèses suivantesExécuter chaque conclusion J. ROHMER ESILV S09 2010-2011
  50. 50. Cœur du MoteurC_delta_global = M videC_delta_un_tour = M contenant une valeur bidon (non vide)Tant que C_delta_un_tour non vide FaireC_delta_un_tour = vide Pour chaque règle Exécuter la règle sur la base de faits Soient C_delta_une_regle les conclusions C_delta_une_regle = C_delta_une_regle moins Base_de_Faits Si C_delta_une_regle non vide: Ajouter C_delta_une_regle à Base_de _Faits Ajouter C_delta_une_regle à C_delta_un_tour Ajouter C_delta_une_regle à C_delta_global J. ROHMER ESILV S09 2010-2011
  51. 51. Exécution de la première hypothèse d’une règleExemple: X ami YCela consiste à initialiserV_XYZTM_XYZTMettre les variables X et Y dans V_XYZTMettre dans M_XYZT tous les X et Y tels que X R YCas particulier à traiter plus tard:Une hypothèse peut très bien être de la forme X R XExemple: X est l’employeur de X J. ROHMER ESILV S09 2010-2011
  52. 52. Exécution des Hypothèses Suivantes D’une règleV_XYZT et M_XYZT ont déjà des valeursQue l’on va modifier avec la nouvelle hypothèse J. ROHMER ESILV S09 2010-2011
  53. 53. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … Y travaille à TX Y Z Déterminer la position de Y et T dans V_XYZT Pos_Y = 1AA BB CC Pos_T = Hors (convention)AA BB DD Donc méthode sur vecteur: Int Get_position (Int)AA CC EE Il faut retrouver dans la base de faitsBB CC EE les Y déjà présents dans M_XYZT qui travaillent pour des T … J. ROHMER ESILV S09 2010-2011
  54. 54. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … Y travaille à T Calculer un extrait de la base de faitsX Y Z BB travaille DD1 CC travaille DD2AA BB CC CC travaille DD3AA BB DD HH travaille DD4AA CC EEBB CC EE J. ROHMER ESILV S09 2010-2011
  55. 55. Si une nouvelle hypothèse arriveX ami Y et Y ami Z et …Y travaille à T Faire la jointure entre M_xyzt et l’extrait de la bdf: BB travaille DD1X Y Z CC travaille DD2 CC travaille DD3AA BB CC HH travaille DD4AA BB DDAA CC EE C’est-à-dire: JMM (M_XYZT, 1, M_Extrait, 0)BB CC EE J. ROHMER ESILV S09 2010-2011
  56. 56. Si une nouvelle hypothèse arriveX ami Y et Y ami Z et …Y travaille à T BB travaille DD1X Y Z CC travaille DD2 CC travaille DD3AA BB CC HH travaille DD4AA BB DDAA CC EE C’est-à-dire: JMM (M_XYZT, 1, M_Extrait, 0)BB CC EE J. ROHMER ESILV S09 2010-2011
  57. 57. Ce qui donne un nouveau M_XYZT … AA BB CC DD1 BB BB DD DD1 AA CC EE DD2 BB CC EE DD2 AA CC EE DD3 BB CC EE DD3… et un nouveau V_XYZT X Y Z Ten rajoutant T J. ROHMER ESILV S09 2010-2011
  58. 58. Si une nouvelle hypothèse arrive X ami Y et Y ami Z et … X chef de YX Y Z Déterminer la position de X et Y dans V_XYZT Pos_X= 0AA BB CC Pos_Y = 1AA BB DD Il faut retrouver dans la base de faitsAA CC EE les X et Y déjà présents dans M_XYZT tels que X travaille pour YBB CC EE J. ROHMER ESILV S09 2010-2011
  59. 59. Exécution des Conclusions d’une RègleOn a exécuté toutes les hypothèses d’une règleOn a V_xyzt et M_xyzt qui nous donnent toutes lescombinaisons de variables qui satisfont toutes leshypothèses.Important: M_xyzt peut être vide: aucune ligne, il n’y aaucune solution !(On peut arrêter l’exécution d’une règle dès qu’unehypothèse a rendu M_xyzt vide)Si M_xyzt n’est pas vide, on va générer chacune desconclusions J. ROHMER ESILV S09 2010-2011
  60. 60. Si une nouvelle hypothèse arrive Si X ami Y et Y ami Z alors X ami Z Rechercher les positions de X et Z dans V_xyzt: 0 et 2 Construire la matrice de 2 colonnes avecX Y Z les colonnes 0 et 2 de M_xyzt et ajouter « ami » au milieuAA BB CC AA ami CCAA BB DD AA ami DDAA CC DD AA ami DDBB CC EE BB ami EE Et dédoublonnez les lignes présentes plusieurs fois (union) J. ROHMER ESILV S09 2010-2011
  61. 61. Génération d’une Conclusion (suite)Les conclusions sont ajoutées au C_delta_une_regle si elles ne sont pas déjà présentes dans la base de faits J. ROHMER ESILV S09 2010-2011
  62. 62. Autres Méthodes UtilesDédoublonnage d’une matrice: supprimer les doublons de lignes de M1Intersection de deux matrices M1 et M2 : les lignes qui sont présentes dans les deuxM1 moins M2: ne garder de M1 que les lignes qui ne sont pas présentes dans M2Implémentation possible de ces opérations: rendre le vecteur des indices des lignes de M1 à conserver (comme dans le cas de la méthodes Apparier) J. ROHMER ESILV S09 2010-2011
  63. 63. Note d’implémentationLes fonctions Apparier, Dédoublonnage, Intersection,Moins peuvent s’implémenter:-- de manière naïve avec des boucles imbriquées-- optimisées avec des tris-- optimisées avec du h-code J. ROHMER ESILV S09 2010-2011
  64. 64. Mieux que la saturation naïve:La méthode « DELTA DRIVEN » (J. Rohmer 1982) J. ROHMER ESILV S09 2010-2011
  65. 65. LA METHODE NAIVE DE SATURATION: A CHAQUEFOIS ON REFAIT LES MEMES CALCULS …POUR OPTIMISER:1) IL FAUT RELANCER LE MOTEUR SEULEMENTAVEC LES NOUVEAUX TRIPLETS2) IL FAUT ALLER CHERCHER LES REGLES QUE LESNOUVEAUX VA EXCITERC’EST L’ALGORITHME: « DELTA DRIVEN » (JR 1982) J. ROHMER ESILV S09 2010-2011
  66. 66. Algorithme DELTA-DRIVENPrincipe: intégrer les dérivées des règles P Q => Rse transforme en ∆PQ ∪ ∆QP => ∆RExemple:X / ami / Y et Y / ami / Z => X / ami / Zse transforme en deux règles différentes:X / ∆ami / Y et Y / ami / Z => X / ∆ami / ZY / ∆ami / Z et XROHMER ESILVY 2010-2011X / ∆ami / Z J. / ami / S09 =>
  67. 67. X / ∆ami / Y et Y / ami / Z => X / ∆ami / Z« les nouveaux amis de mes amis sont mesnouveaux amis » !Distinction entre la base des triplets et la base des« DELTA TRIPLETS » J. ROHMER ESILV S09 2010-2011
  68. 68. X / ∆ami / Y et Y / ami / Z => X / ∆ami / Z AA ami BB AA ami CC BB ami CCDELTA de DELTA deDEPART ARRIVEE J. ROHMER ESILV S09 2010-2011
  69. 69. ECORCHE FINAL DU MOTEUR REGLES H1 H2 => C1 D’ORIGINE H3 H4 H5 => C2 C3 BASE de Triplets CUMUL des Delta ∆ ∆H1 H2 => ∆C1 New ∆H2 H1 => ∆C1DELTA Only ∆H3 H4 H5 => ∆C2 ∆C3REGLES ! ∆H4 H3 H5 => ∆C2 ∆C3 ∆H5 H3 H4 => ∆C2 ∆C3 ∆ J. ROHMER ESILV S09 2010-2011
  70. 70. Points Importants:Réordonner les hypothèses des règlesY compris pour les Delta-RèglesOpérations de base sur des tables-- sélection-- jointureDonc:Pour travail en mémoire (par exemple en Java): créer des objets detype table, et des opérateurs de sélection et jointure sur tablePour travail sur de gros volumes, ce moteur peut être interprété etmême compilé en SQL J. ROHMER ESILV S09 2010-2011
  71. 71. EVALUATION DES HYPOTHESES D’UNE REGLE:Construire le produit cartésien des variables:X / habite à Z / et Y / habite à T / et X / ami de Y /et T / situé en / France et Y / est né à / Z X Z Y T J. ROHMER ESILV S09 2010-2011
  72. 72. CECI C’ETAIT LECHAINAGE AVANT: « on cherche tout sans but »MAIS ON VEUT SOUVENT FAIREDU CHAINAGE ARRIERE: « on a un but »« Quels sont les Amis de Pierre » ?« Est-ce que Pierre et Paul sont Amis » ?C’est plus délicat …PROLOG fait du chaînage arrière, mais il peut bouclerMETHODE D’ALEXANDRE (Rohmer, Lescoeur, Kérisit 1985)Transforme le chaînage arrière en chaînage avant partransformation des règles selon les 2010-2011 J. ROHMER ESILV S09 buts, sans boucler
  73. 73. PRINCIPE DE LA METHODE D’ALEXANDRE (Très simplifié)Soit la règle P Q => RElle se transforme en trois règles: Si j’ai le problème de trouver R Bien sûr les règles concluant sur P et Alors j’ai le problème de trouver P Q seront transformées de la même Et je dois continuer après P manière Si j’ai la solution à P Et que je dois continuer après P Baptisée d’après Alexandre le Grand Alors j’ai le problème de trouver Q qui trancha le nœud gordien: ici on Et je dois continuer après Q coupe aussi un prédicat en 3 faits: •Un problème Si j’ai la solution à Q Et que dois continuer après Q •Une continuation Alors j’ai la solution à R •Une solution J. ROHMER ESILV S09 2010-2011
  74. 74. LE CELEBRE PROBLEME DES ANCETRESX Parent Y => X Anc Y(X Parent Y) (Y Anc Z) => X Anc ZOn transforme les règles en introduisant les Problèmes, Continuations et Solutions:(Pb_Anc_10 On X) (X Parent Y) => X Sol_Anc_10 Y(Pb_Anc_10 On X) (X Parent Y) => (Pb_Anc_10 On Y) (X Cont_Anc_10 Y)(Y Sol_Anc_10 Z) (X Cont_Anc_10 Y) => X Sol_Anc_10 Z J. ROHMER ESILV S09 2010-2011
  75. 75. J. ROHMER ESILV S09 2010-2011
  76. 76. APPLICATIONS AUX RESEAUX SOCIAUX« SOCIAL COGNITIVE RULES »We can formulate several theories about Trust:I trust people trusted by people I trust:(X trusts Y) (Y trusts Z) => X trusts Z (transitive closure).Another theory is: I trust people who trust the same people as me:(X trusts Y) (Z trusts Y) => X trusts Z(which is quite different from a S09 2010-2011 closure) J. ROHMER ESILV transitive
  77. 77. (X trusts Y) (Z trusts Y) => X trusts ZSe transforme via la Méthode d’Alexandre en:R1: (Pb_Trust_10 On X) (X Trust Y) => (Pb_Trust_01 On Y) (YCont_Trust_10 X)R2: (X Cont_Trust_10 Y) (Z Trust Y) => X Sol_Trust_10 ZR3 : (X Cont_Trust_10 Y) (Z Sol_Trust_10 Y) => X Sol_Trust_10 ZR4: (Pb_Trust_10 On X) (X Sol_Trust_10 Y) => (Pb_Trust_01 On Y) (XCont_Trust_10 Y)R5: (Pb_Trust_01 On Z) (Z Trust Y) => (Pb_Trust_01 On Y) (ZCont_Trust_01 Y)R6: (Pb_Trust_01 On Z) (Z Sol_Trust_01 Y) => (Pb_Trust_01 On Y) (ZCont_Trust_01 Y)R7: (X Sol_Trust_01 Y) (Z Cont_Trust_01 Y) => X Sol_Trust_01 ZR8: (X Trust Y) (Z Cont_Trust_01 Y) => X Sol_Trust_01 Z J. ROHMER ESILV S09 2010-2011
  78. 78. PASSER DU MOTEUR D’INFERENCE DELTA-DRIVEN A UNE ARCHITECTURE DE SYSTEME REACTIVE (parfois appelée aussi EVENT- DRIVEN)PRINCIPE:Quand des éléments d’information nouveaux arrivent del’extérieur (messages, importations de fichiers, saisie manuelle)On va faire comme si c’étaient des conclusions de règles, on lesprend comme des Delta ∆Et on lance les Delta-Règles avecQui vont relancer tout le moteur J. ROHMER ESILV S09 2010-2011
  79. 79. ARCHITECTURE REACTIVE: DELTA-DRIVENMise à jourde la baseNOUVELLE Relance du moteurINFORMATION J. ROHMER ESILV S09 2010-2011
  80. 80. ARCHITECTURE DELTA-DRIVEN+ METHODE D’ ALEXANDRE= RAFRAICHISSEMENT AUTOMATIQUEDES ALERTESDES CONSIGNES DE RECHERCHEDES CONSIGNES DE SURVEILLANCEPERMANENTESEN MODE « DATA STREAM » J. ROHMER ESILV S09 2010-2011
  81. 81. On veut surveiller « Qui sont les amis de Paul ?» Premiers résultats:Installation des delta Les amis actuels de Paulrègles d’Alexandrequi concluent sur« amis de quelqu’un » 1 3Injection du problème 2« je cherche les amis dePaul » comme nouvelle 5information Déduction permanente de nouveaux amis de Paul, viaArrivée permanente denouvelles infos ‘lointaines’: 4 le jeu des règles d’Alexandre avec les« Max ami de Leo » Problèmes« Henri ennemi de Fred » Continuations J. ROHMER ESILV S09 2010-2011 Solutions

×