Grammaires formelles et. programmation logique



Documents pareils
Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Grammaires d unification

CH.6 Propriétés des langages non contextuels

BANQUES DE DONNÉES PÉDAGOGIQUES

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Code_Aster. Procédure IMPR_RESU aux formats 'RESULTAT' et 'ASTER' 1 But

Cours de Master Recherche

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Théorie des Langages

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

majuscu lettres accent voyelles paragraphe L orthographe verbe >>>, mémoire préfixe et son enseignement singulier usage écrire temps copier mot

La recherche d'information sur Internet

Formula Negator, Outil de négation de formule.

chapitre 4 Nombres de Catalan

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

Structures algébriques

Initiation à la Programmation en Logique avec SISCtus Prolog

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

MIS 102 Initiation à l Informatique

fiche D AUTOCORRECTION Frimousse, une petite chienne qu'on a adoptée le mois dernier, est intelligente et docile.

Utilisation des tableaux sémantiques dans les logiques de description

Machines virtuelles Cours 1 : Introduction

La fonction exponentielle

Langue Française. Syllabus A1. Description globale du niveau A1 utilisateur élémentaire

Voici les objectifs de la séance d'aujourd'hui :

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

La mémoire. Un ordinateur. L'octet. Le bit

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Algorithmes d'apprentissage

Fiche pour les étudiants «Comment répondre à une question à développement?»

Les structures. Chapitre 3

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

SOMMAIRE. Travailler avec les requêtes... 3

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Document d aide au suivi scolaire

Axiomatique de N, construction de Z

Le génie logiciel. maintenance de logiciels.

quelque quelque(s) quel(s) que/quelle(s) que quel(s) / quelle(s) qu elle(s)

I. Le déterminant Il détermine le nom. Le déterminant indique le genre, le

Calculabilité Cours 3 : Problèmes non-calculables.

Mesurer les altitudes avec une carte

Problèmes de Mathématiques Filtres et ultrafiltres

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Métriques de performance pour les algorithmes et programmes parallèles

LES DECIMALES DE π BERNARD EGGER

Réaliser une recherche avec le logiciel documentaire PMB

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

COMMENT ECRIRE UN «JOB AID»

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Module 16 : Les fonctions de recherche et de référence

Cours 1 : La compilation

Aide-mémoire : Chaque, leur, même, quelque, tout

VOS PREMIERS PAS AVEC TRACENPOCHE

Le langage SQL Rappels

Excel 2007 Niveau 3 Page 1

La mesure de Lebesgue sur la droite réelle

Évaluation et implémentation des langages

En direct de la salle de presse du Journal virtuel

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

Les tablettes et l'extranet Intermixt Mode d'emploi

Utilisez Toucan portable pour vos sauvegardes

Le modèle standard, SPE (1/8)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Le chiffre est le signe, le nombre est la valeur.

Introduction à l étude des Corps Finis

Le stockage local de données en HTML5

Application de la méthode QFD comme outil d'extraction des connaissances métier en conception intégrée

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

S'orienter et se repérer sur le terrain avec une carte

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

VÉRIFICATEUR ORTHOGRAPHIQUE POUR LE BAMBARA PRÉSENTATION & MODE D'EMPLOI

Ce document a été mis en ligne par le Canopé de l académie de Montpellier pour la Base Nationale des Sujets d Examens de l enseignement professionnel.

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Comment autoriser un programme à communiquer avec Internet sous Vista?

Recherche dans un tableau

OCL - Object Constraint Language

Algorithmes de recherche

Travail avec soin et concentration

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Les chaînes de caractères

Table des matières. Introduction

Probabilités sur un univers fini

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

GOL502 Industries de services

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

Protocoles DHCP et DNS

Langue, techniques de rédaction et correction d épreuves (412-2A1-LG)

Transférer et enregistrer les photos sur l'ordinateur

Transcription:

Grammaires formelles et programmation logique

Motivation Après avoir étudié Prolog nous l avons appliqué à l interprétation de règles de sémantique sur des termes (Arbres de Syntaxe Abstraite) Nous allons ici nous intéresser à la façon de produire de tels arbres à partir d un ensemble de lexèmes extraits d un texte (de programme par exemple). L analyseur se déduira simplement et automatiquement des règles de production établies pour définir sa grammaire

Généralités Phrase en français séquence finie de mots considérés comme éléments insécables d'un ensemble fini toutes les séquences ne sont pas permises correctes (syntaxique) sensées (sémantique) Nous (individu) savons produire de nouvelles phrases mécanisme de génération! Nous savons également reconnaître de nouvelles phrases mécanisme de reconnaissance! Pour les langues naturelles, on n'a pas de formalisation complète de ces mécanismes. Les "grammaires à structure de phrase" de Chomsky [Cho 59] en sont une lointaine mais très utile approximation. Parmi ces grammaires, nous regarderons dabord les grammaires hors-contexte ou grammaires non-contextuelles

Règles ou productions Ensemble de règles (productions) qui précise les suites de mots qui constituent les phrases bien formées : L'ensemble des productions suivantes phrase --> [effacer], groupe-nom. groupe_nom --> [le],[dernier],[mot], [de],groupe_nom. groupe_nom --> [la], [deuxième], [ligne]. permet de produire effacer le dernier mot de la deuxième ligne verbe verbe article adjectif nom prep art adjectif mot ------groupe_nominal---------- ------------------------groupe_nominal------------------------------------------

Grammaire 1) phrase --> verbe, groupe_nom. 2) groupe_nom --> article, adjectif, nom. 3) groupe_nom --> article, adjectif, nom, préposition, groupe_nom. 4) verbe --> [imprimer]. 5) verbe --> [effacer]. 6) article --> [le]. 7) article --> [la]. 8) adjectif --> [deuxième]. 9) adjectif --> [premier]. 10) adjectif --> [dernier]. 11) nom --> [mot]. 12) nom --> [ligne]. 13) préposition--> [de]. effacer le dernier mot de la deuxième ligne

Extensibilité On peut ajouter des productions 14) article --> [un]. 15) article --> [du]. 16) adjectif --> [troisième]. 17) nom --> [caractère]. 18) nom --> [page]. exemples de nouvelles phrases produites effacer un premier caractère effacer le premier caractère du troisième mot

Monoïde libre un ensemble (alphabet ou vocabulaire) * l'ensemble des séquences finies d'éléments de plus la séquence vide * est appelée fermeture de Les éléments de * seront appelés phrases + fermeture positive ne contient pas la séquence vide * est muni de la structure algébrique < *, {concaténation, } U { monoïde libre engendré par Σ* la concaténation définie au sens habituel est associative λ est l'élément neutre de la concaténation Σ donne l'ensemble des constantes (générateurs)

Définition des grammaires Hors-contexte (non-contextuelles) Une GNC G est un quadruplet (V, T, P, S) où V est un ensemble fini de "symboles non terminaux" ou "catégories syntaxiques" T P est un ensemble fini (disjoint de V) de "symboles terminaux" ou "mots" un ensemble fini de "règles" ou "productions" de la forme A --> avec A V et (V T) + S un "symbole initial" V

Retour sur l exemple dans notre exemple V = {phrase, groupe_nom, verbe, article, adjectif, nom, préposition, phrase} T = {imprimer, effacer, le, la, un, premier, deuxième, troisième, dernier, caractère, not, ligne, page, de, du} S = phrase

Productions et Dérivations On définit deux relations ==> et =*=> sur (V T)* Si A --> est une production de P et et des phrases de (V T)* alors A ==> On dit que A --> β est appliquée à ααγ pour engendrer αβγ Deux phrases sont liées par la relation ==> quand la seconde est obtenue à partir de la première par l'application d'une production..., m des mots de (V T)* tels que 1 ==> 2, 2 ==> 3..., m-1 ==> m on écrira alors 1 =*=> m =*=> est la fermeture réflexive et transitive de ==>

Langage non-contextuel engendré par une GNC L = { T* et S =*=> } ex : effacer le deuxième mot imprimer la deuxième ligne effacer la deuxième ligne de la troisième ligne

Arbres d analyse (arbres de dérivation) phrase verbe groupe-nom art adj nom prep groupe-nom effacer le dernier mot de art adj nom Le sommet s'appelle "racine" il est marqué par le symbole initial de G Les feuilles sont marquées par les symboles terminaux les noeuds intermédiaires correspondent aux productions. la deuxième ligne

Arbre de dérivation L'arbre de dérivation représente donc la trace de la construction d'une expression bien formée si A est dans l'arbre Xp X 1 A --> X 1,..., Xp est une production utilisée dans la construction de la phrase Une phrase est dite «ambiguë» si on peut lui associer plusieurs arbres syntaxiques. (par extension, on dit dans ce cas que la grammaire est ambigüe)

Expression parenthèsée (Terme) Un arbre peut s'écrire sous forme d'une expression parenthèsée ex : ph( v(effacer), gn(art(le), adj(dernier), n(mot), prep(de), gn( art(la), adj(deuxième), n(ligne)))). avec ici ph pour phrase, gn pour groupe-nom,n pour nom,...

GNC et clauses de Horn gram- maire analogie s p, q, r s est bien formée si p, q et r sont bien formées clauses s :- p, q, r s est vrai si p, q, et r sont vrais attention comme dans Prolog mais à la des clauses de Horn : l'ordre des symboles du corps compte

Exemple Prolog Une phrase étant une suite de "mots", on va utiliser des listes de "mots" pour la représenter 1) phrase ([V GN]) :- verbe([v]), groupe_nom(gn). 2) groupe_nom([art, Adj, N]) :- article ([Art]), adjectif ([Adj]), nom([n]). 3) groupe_nom ([Art, Adj, N, Pr GN]):- article([art]), adjectif([adj]), nom([n]), preposition([pr]), groupe_nom(gn).

Déclaration des terminaux 4) verbe([imprimer]). 5) verbe([effacer]). 6) article([le]). 7) article([la]). 8) adjectif([deuxieme]). 9) adjectif([premier]). 10) adjectif([dernier]). 11) nom([mot]). 12) nom([ligne]). 13 preposition([de]).

Construction de l Arbre de Syntaxe Abstraite Objectif: utiliser cette notation pour spécifier puis générer les termes dont nous avons besoin ensuite pour l interprétation prolog des règles de sémantique structurelle vues dans le cours précédent.

DCG et Construction de l'arbre syntaxique On réécrit la grammaire DCG avec un argument phrase(ph(v,gn)) --> verbe(v), groupe_nom(gn). groupe_nom(gn(art, Adj,N))--> article(art),adjectif(adj)),nom(n). groupe_nom(gn(art, Adj, N, Pr, gn(gn)))--> article(art),adjectif(adj),nom(n), preposition(p), groupe_nom(gn). verbe(v(effacer)) --> [effacer]. verbe(v(imprimer)) --> [imprimer]. article(art(le)) --> [le]. adjectif(adj(dernier)) --> [dernier].... nom(n(mot)) --> [mot]. preposition(prep(de)) --> [de].

exemple la phrase [effacer, le, dernier, mot] peut se construire par les productions phrase(ph(v(effacer), Gn)) --> verbe(v), groupe_nom(gn) puis en phrase(ph(v(effacer), gn(art, Adj, N)) --> verbe(v(effacer)), article(art), adjectif(adj), nom(n). et phrase(ph(v(effacer), gn(art(le),adj(dernier),n(mot))) --> verbe(v(effacer)), article(art(le)), adjectif(adj(dernier)), nom(n(mot)). ainsi jusqu'à produire l'arbre syntaxique (le terme) ph(v(effacer), gn(art(le), adj(dernier), n(mot))))

Limites des GNC ne permettent pas de tenir compte du contexte 1) effacer la dernier ligne 2) effacer la deuxième ligne de la deuxième ligne syntaxiquement incorrecte (1), sémantiquement absurde (2) et/ou la solution de certains de ces problèmes dans le cadre GNC demanderait de nombreuses autres productions.

Grammaires DCG Definite Clause Grammars afin de régler le problème de l'accord des genres (féminin ou masculin) (contexte syntaxique) on propose de remplacer par exemple par groupe_nom --> article, adjectif, nom, preposition, groupe_nom. groupe_nom --> article(c), adjectif(c), nom(c), preposition, groupe_nom. dans laquelle un "argument contextuel" C a été introduit

Exemple DCG : suite Ici cet argument pourra prendre les valeurs "masculin" ou "féminin" Les autres règles s'écrivant verbe --> [imprimer] verbe --> [effacer] article(masculin) --> [le] article(féminin) --> [la] adjectif(masculin) --> [dernier] nom(féminin) --> [ligne] effacer la dernière ligne ne peut être produite!

Représentation en Clauses de Horn groupe_nom ([Art, Adj, N]) :- article(c, [Art]), adjectif(c, [Adj]), nom(c, [Nom]).... article(masculin, [le]). article(feminin, [la]).... production des grammaires DCG clauses de Horn avec prédicats d'arité quelconque

Contextes sémantiques et DCG On veut éliminer les phrases du genre effacer la dernière ligne de la dernière ligne Le corps des règles pourra contenir des prédicats ou procédures(entre accolades) représentant des conditions d'emploi des productions ex : 1" phrase --> verbe, groupe_nom(o). 2" groupe_nom(y 1 ) --> article(c), adjectif(c), nom(c, Z 1 ), {Y 1 < Z 1 }. 3" groupe_nom(y 2 ) --> article(c), adjectif(c) nom(c, Z 2 ), {Y 2 < Z 2 }, preposition, groupe_nom(z 2 ).... 12" nom(masc, 1) --> [caractère] 13" nom(masc, 2) --> [mot] 14" nom(fem, 3) --> [ligne] 15" nom(fem, 4) --> [page]

Trace de dérivation 12",..., 15" introduisent une hiérarchie sémantique caractère not ligne page (l'idée vient de ce que la préposition...de... implique l'inclusion) {Y 1 < Z 1 } dans 2" et 3" élimine les phrases absurdes ex : on suppose que l'on en est à groupe_nom(y 2 )--> [la, dernière], nom(fem, Z 2 ), {Y 2 < Z 2 }, [de], groupe_nom(z 2 ). avec nom(fem, 3) --> [ligne] on passe à groupe_nom(y 2 ) --> [la, dernière, ligne], {Y 2 < 3}, [de], groupe_nom(3) puis avec la règle 2" correctement instanciée groupe_nom(y 2 ) --> [la, dernière, ligne], {Y 2 < 3}, [de, la, dernière], nom(fem, Z 1 ), {3 < Z 1 } seule nom(fem, 4) --> [page] permet de satisfaire 3 < Z 1 groupe_nom(y 2 ) --> [la, dernière, ligne], {Y 2 < 3}, [de, la, dernière, page].

Grammaire DCG et programmation logique groupe_nom(y 2 ) --> article(c), adjectif(c), nom(c, Z 2 ), {Y 2 < Z 2 }, preposition, groupe_nom(z 2 ) est traduit en groupe_nom(y 2, [art, Adj, N, Pr GN]) :- article(c, [Art]), adjectif(c, [Ad]), nom(c, Z 2, [N]), Y 2 < Z 2, preposition(pr), groupe_nom(z 2, GN). dans laquelle les catégories syntaxiques (comme nom(c, Z 2, [N])) ou les procédures {Y 2 < Z 2 } sont interprétées comme des prédicats logiques.

Construction de l'arbre de syntaxe abstraite On réécrit la grammaire DCG avec les arguments phrase(ph(v, Gn)) --> verbe(v), groupe-nom(o,gn) groupe_nom(y 1, gn(art, Adj,N))--> article (C, Art), adjectif (C, Adj)), nom(c, Z 1, N), {Y 1 <Z 1 }. groupe_nom(y 2, gn (Art, Adj, N, Pr, gn, (Gn)))--> article(c, Art), adjectif(c, Adj), nom(c, Z 2, N), {Y 2 <Z 2 } preposition(p), groupe_nom(z 2, Gn). verbe (v(effacer)) --> [effacer]. verbe (v(imprimer)) --> [imprimer]. article(masc, art(le)) --> [le].... nom(fem, 4, n(page)) --> [page]. preposition(prep(de)) --> [de].

Eléments de transformations automatique en Prolog En partant de phrase --> verbe, groupe nom nous avions écrit phrase([v GN]) :- verbe([v]), groupe_nom(gn). Cela suppose la reconnaissance du fait que 'verbe' consomme un mot de la phrase.

Représentation en D_liste Un traitement automatique pourrait plus simplement produire Phrase(Ph) :- conc(début, Reste, Ph), verbe(début), groupe_nom(reste). Ou plus efficacement Phrase(Ph, Fin) :- verbe(ph, Suite), groupe_nom(suite, Fin) avec par exemple et et le but verbe --> [effacer] transformé en verbe([effacer S], S).?- phrase([effacer, le, dernier, mot], [ ]).