Cours 8 - PowerPoint PPT Presentation

About This Presentation
Title:

Cours 8

Description:

Avec Les orchestres aiment cette m lodie, les 10 premiers arbres contiennent ... Avec Les orchestres aiment cette m lodie, toutes les s quences qui contiennent ... – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 41
Provided by: lapo4
Category:
Tags: aiment | cours

less

Transcript and Presenter's Notes

Title: Cours 8


1
Cours 8
  • Analyse syntaxique
  • - descendante
  • - ascendante
  • - par programmation dynamique

2
Analyse syntaxique
  • Parsing
  • Entrées une phrase étiquetée et une grammaire
    algébrique
  • Sorties le ou les arbres de dérivation de la
    phrase
  • Algorithmes
  • Descendants
  • Ascendants
  • Programmation dynamique
  • Cascade de transducteurs

3
Exemple de grammaire algébrique
  • P --gt GN ltdisparaîtregt
  • P --gt GN ltempirergt
  • P --gt GN ltorchestrergt GN
  • P --gt GN ltaimergt GN
  • GN --gt Det N
  • GN --gt Npr
  • Det --gt ltlegt
  • Det --gt ltcegt
  • Det --gt ltungt

Det --gt tous les Det --gt toutes les N --gt
ltmélodiegt N --gt ltcorruptiongt N --gt ltorchestregt N
--gt ltempiregt Npr --gt Luc Npr --gt Anne
4
Analyse syntaxique descendante
Les orchestres aiment cette mélodie
P
P
P
GN
ltdisparaîtregt
GN
ltdisparaîtregt
Det
N
P
GN
ltdisparaîtregt
Det
N
ltlegt
5
Analyse descendante
P
P
GN
ltdisparaîtregt
GN
ltdisparaîtregt
exploration arborescente on essaye autre chose
Det
N
Det
N
ltlegt
ltlegt
ltcorruptiongt
ltmélodiegt
P
P
GN
ltdisparaîtregt
GN
ltdisparaîtregt
Det
N
Det
N
ltlegt
ltlegt
ltorchestregt
ltempiregt
6
Analyse descendante
P
P
GN
ltdisparaîtregt
etc.
ltempirergt
GN
Npr
P
P
GN
ltaimergt
GN
GN
ltorchestrergt
GN
7
Arbre produit
P
GN
GN
ltaimergt
Det
N
Det
N
ltcegt
ltmélodiegt
ltlegt
ltorchestregt
8
Analyse descendante
  • phrase.desc(arbre, feuilleCourante, tokenCourant)
  • pour chaque feuille1 à partir de feuilleCourante
  • symbole feuille1.étiquette
  • si symbole est terminal
  • si symbole est compatible avec token
  • token phrase.suivant(token)
  • sinon détruire arbre sortir de la fonction
  • sinon si symbole est une variable
  • pour chaque règle dont le membre gauche est
    symbole
  • copieArbre arbre.copier()
  • feuille2 équivalent de feuille1 dans
    copieArbre
  • copieArbre.ajouter(règle, feuille2)
  • feuille3 copieArbre.premierFils(feuille2)
  • phrase.desc(copieArbre, feuille3, token)
  • sortir de la fonction
  • arbre.écrire()

9
Exemple (1/8)
  • L'orchestre aime cette mélodie
  • desc(P, P, L')
  • desc(P(GN disparaître), GN, L')
  • desc(P(GN(Det N) disparaître), Det, L')
  • desc(P(GN(Det(le) N) disparaître), le,
    L')
  • desc(P(GN(Det(le) N(mélodie))
    disparaître), mélodie, orchestre)
  • desc(P(GN(Det(le) N(corruption))
    disparaître), corruption, orchestre)
  • desc(P(GN(Det(le) N(orchestre))
    disparaître), orchestre, orchestre)
  • desc(P(GN(Det(le) N(orchestre))
    disparaître), disparaître, aime)
  • desc(P(GN(Det(le) N(empire))
    disparaître), empire, orchestre)

10
Exemple (2/8)
  • desc(P(GN(Det(ce) N) disparaître), ce,
    L')
  • desc(P(GN(Det(un) N) disparaître), un,
    L')
  • ...
  • desc(P(GN(Npr) disparaître), Npr, L')

11
Exemple (3/8)
  • desc(P(GN empirer), GN, L')
  • desc(P(GN(Det N) empirer), Det, L')
  • desc(P(GN(Det(le) N) empirer), le, L')
  • desc(P(GN(Det(le) N(mélodie)) empirer),
    mélodie,
  • orchestre)
  • desc(P(GN(Det(le) N(corruption)) empirer),
    corruption,
  • orchestre)
  • desc(P(GN(Det(le) N(orchestre)) empirer),
    orchestre,
  • orchestre)
  • desc(P(GN(Det(le) N(orchestre))
    empirer), empirer, aime)
  • desc(P(GN(Det(le) N(empire))
    empirer), empire, orchestre)

12
Exemple (4/8)
  • desc(P(GN(Det(ce) N) empirer), ce, L')
  • desc(P(GN(Det(un) N) empirer), un, L')
  • ...
  • desc(P(GN(Npr) empirer), Npr, L')

13
Exemple (5/8)
  • desc(P(GN ochestrer GN), GN, L')
  • desc(P(GN(Det N) orchestrer GN), Det, L')
  • desc(P(GN(Det(le) N) orchestrer GN), le,
    L')
  • desc(P(GN(Det(le) N(mélodie)) orchestrer GN),
    mélodie,
  • orchestre)
  • ...
  • desc(P(GN(Det(ce) N) orchestrer GN), ce,
    L')
  • desc(P(GN(Det(un) N) orchestrer GN), un,
    L')
  • ...
  • desc(P(GN(Npr) orchestrer GN), Npr, L')

14
Exemple (6/8)
  • desc(P(GN aimer GN), GN, L')
  • desc(P(GN(Det N) aimer GN), Det, L')
  • desc(P(GN(Det(le) N) aimer GN), le, L')
  • desc(P(GN(Det(le) N(mélodie)) aimer GN),
    mélodie,
  • orchestre)
  • desc(P(GN(Det(le) N(corruption)) aimer GN),
    corruption,
  • orchestre)
  • desc(P(GN(Det(le) N(orchestre)) aimer GN),
    orchestre,
  • orchestre)
  • desc(P(GN(Det(le) N(orchestre)) aimer
    GN), aimer, aime)
  • desc(P(GN(Det(le) N(orchestre)) aimer GN(Det
  • N)), Det, cette)

15
Exemple (7/8)
  • desc(P(GN(Det(le) N(orchestre)) aimer GN(Det
  • N)), Det, cette)
  • desc(P(GN(Det(le) N(orchestre)) aimer
  • GN(Det(le) N)), le, cette)
  • desc(P(GN(Det(le) N(orchestre)) aimer
  • GN(Det(ce) N)), ce, cette)
  • desc(P(GN(Det(le) N(orchestre)) aimer
  • GN(Det(ce) N(mélodie))),
  • mélodie, mélodie)
  • desc(P(GN(Det(le) N(orchestre)) aimer
  • GN(Det(ce) N(corruption))),
  • corruption, mélodie)
  • ...

16
Exemple (8/8)
  • desc(P(GN(Det(un) N(orchestre)) aimer
  • GN(Det(un) N)), un, cette)
  • ...
  • desc(P(GN(Det(le) N(orchestre)) aimer
  • GN(Npr)), Det, cette)
  • desc(P(GN(Det(le) N(empire)) aimer GN),
    empire,
  • orchestre)
  • desc(P(GN(Det(ce) N) aimer GN), ce, L')
  • desc(P(GN(Det(un) N) aimer GN), un, L')
  • ...
  • desc(P(GN(Npr) aimer GN), Npr, L')

17
Inconvénients
  • On utilise peu le texte
  • Avec Les orchestres aiment cette mélodie, les 10
    premiers arbres contiennent disparaître, qui ne
    figure pas dans la phrase
  • On construit plusieurs fois les mêmes sous-arbres
  • Le sous-arbre pour Les orchestres est construit 4
    fois et détruit 3 fois
  • Boucle en cas de récursivité gauche
  • Une règle comme GN --gt GN Adj met l'algorithme
    dans une boucle infinie

18
Analyse syntaxique ascendante
Les orchestres aiment cette mélodie
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
Det
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
19
Analyse ascendante (itération 1)
Det
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
Det
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
20
Analyse ascendante (itération 2)
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
Det
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
N
Det
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
21
Analyse ascendante (itération 2)
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
Det
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
Det
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
22
Analyse ascendante (itération 2)
Det
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
23
Analyse ascendante (itération 3)
GN
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
GN
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
24
Analyse ascendante (itération 3)
Det
N
Det
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
Det
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
25
Analyse ascendante (itération 3)
Det
Det
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
GN
Det
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
26
Analyse ascendante (itération 4)
GN
Det
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
GN
Det
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
27
Analyse ascendante (itération 4)
GN
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
GN
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
28
Analyse ascendante (itération 4)
Det
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
GN
Det
Det
N
ltlegt
ltorchestrergt
ltaimergt
ltcegt
ltmélodiegt
29
Analyse ascendante (itération 5)
GN
Det
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
GN
Det
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
30
Analyse ascendante (itération 6)
GN
GN
Det
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
31
Analyse ascendante (itération 7)
P
GN
GN
Det
N
Det
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
32
Algorithme (1/2)
  • ensSeqArbres un ensemble de séquences d'arbres
    vide
  • pour chaque combinaison de terminaux compatible
    avec phrase
  • ensSeqArbres.ajouterSeqArbres(combinaison)
  • tant que ensSeqArbres n'est pas vide
  • nouvEnsSeqArbres un ensemble de séquences
    d'arbres vide
  • pour chaque seqArbres dans ensSeqArbres
  • seqRacines seqArbres.seqRacines()
  • pour chaque facteur de seqRacines
  • pour chaque règle dont le membre droit corresp.
    à facteur
  • copieSeqArbres seqArbres.copier()
  • copieSeqArbres.ajouter(facteur, règle)
  • nouvEnsSeqArbres.ajouter(copieSeqArbres)

33
Algorithme (2/2)
  • pour chaque seqArbres dans nouvEnsSeqArbres
  • si seqArbres est un arbre et si sa racine est
    l'axiome
  • seqArbres.écrire()
  • nouvEnsSeqArbres.supprimer(seqArbres)
  • ensSeqArbres nouvEnsSeqArbres

34
Inconvénients
  • On utilise peu la grammaire
  • Avec Les orchestres aiment cette mélodie, toutes
    les séquences qui contiennent ltorchestrergt suivi
    de ltaimergt sont incompatibles avec la grammaire

35
L'algorithme d'Earley (1970)
  • Analyse descendante
  • Sauvegarde dans un tableau tous les résultats
    intermédiaires réutilisables (programmation
    dynamique)
  • Tableau indicé par les tokens de la phrase
  • Phrase Les orchestres aiment cette mélodie
  • Indices 0 1 2
    3 4 5
  • Pour chaque indice, le tableau contient un
    ensemble de sous-arbres correspondant à des
    analyses partielles
  • On remplit le tableau de gauche à droite, sans
    retours en arrière
  • On ne détruit jamais des sous-arbres déjà créés
  • Pour construire les arbres de dérivation, on
    combine les sous-arbres du tableau

36
Les sous-arbres
  • Un sous-arbre est représenté par
  • - une règle pointée (le point indique jusqu'où on
    a analysé)
  • - deux positions dans la phrase, correspondant
  • - au début de la règle
  • - et au point jusqu'où on a analysé
  • Exemple 1
  • P --gt GN ltaimergt . GN
  • 0-3

P
GN
GN
Det
Det
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
0 1 2 3 4 5
37
Les sous-arbres
  • Exemple 2
  • GN --gt Det N .
  • 0-2
  • Exemple 3
  • GN --gt . Det N
  • 3-3
  • Si la 2e position d'un sous-arbre est j, ce
    sous-arbre est rangé à l'indice j dans le tableau
  • Exemple 2 rangé à l'indice 2 Exemple 3 rangé
    à l'indice 3

P
GN
GN
Det
Det
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
0 1 2 3 4 5
38
L'algorithme
  • On parcourt le tableau de gauche à droite
  • Quand on est à l'indice i, on parcourt les
    sous-arbres et on crée de nouveaux sous-arbres à
    l'indice i (queue FIFO) et à l'indice i 1
  • On suppose que l'axiome de la grammaire apparaît
    une seule fois, dans une règle P0 --gt P
  • Début P0 --gt . P
  • 0-0
  • Fin P0 --gt P .
  • 0-n (n nombre de tokens dans la phrase)
  • Règle pointée complétée règle dont le point est
    à la fin

39
L'algorithme
  • analyseur.table0.enfiler(P0 --gt . P, 0, 0)
  • pour i de 0 à n
  • pour chaque sousArbre dans tablei
  • si sousArbre.complétée()
  • analyseur.compléter(sousArbre)
  • sinon si sousArbre.prochainSymbole() est
    terminal
  • analyseur.vérifier(sousArbre)
  • sinon analyseur.prédire(sousArbre)
  • si analyseur.tablen.contient(P0 --gt P ., 0, n)
  • analyseur.construireArbres(n)

40
L'algorithme
  • compléter(B --gt w ., j, k)
  • pour chaque (A --gt u . B v, i, j) dans tablej
  • tablek.enfiler(A --gt u B . v, i, k)
  • vérifier(A --gt u . t v, i, j)
  • si t correspond à tokenj
  • tablej 1.enfiler(A --gt u t . v, i, j 1)
  • prédire(A --gt u . B v, i, j)
  • pour chaque (B --gt w) dans règles(B)
  • tablej.enfiler(B --gt . w, j, j)
Write a Comment
User Comments (0)
About PowerShow.com