4 par pages - Alpage

Transcription

4 par pages - Alpage
Prolog
et
Traitement Automatique des Langues
Septième partie VII
Prolog comme analyseur
Éric de la Clergerie
[email protected]
ALPAGE – INRIA
http://alpage.inria.fr
Cours M2 LI 2008
INRIA
INRIA
É. de la Clergerie
2008
1 / 69
INRIA
INRIA
Quelques problèmes avec Prolog
É. de la Clergerie
Prolog comme analyseur
2008
134 / 69
Terminaison
s −−> gn , v , gn .
gn −−> np .
gn −−> gn , gp .
Divers problèmes bien connus, dus à la gestion en profondeur d’abord avec
retour-arrière de Prolog :
s L = [ Paul , aime , Marie ]
gn , v , gn L = [ Paul , aime , Marie ]
gn L = [ Paul , aime , Marie ]
np L = [ Paul , aime , Marie ]
[ Paul ] L = [ Paul , aime , Marie ]
v , gn L = [ aime , Marie ]
v L = [ aime , Marie ]
[ aime ] L = [ aime , Marie ]
gn L = [ Marie ]
np L = [ Marie ]
[ Paul ] L = [ Marie ]
[ Marie ] L = [ Marie ]
[ ] L=[]
Answer :
L = [ Paul , aime , Marie ]
terminaison sur des productions récursives
non-complétude des réponses
duplication importante de calculs
%f a i l
INRIA
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
135 / 69
INRIA
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
136 / 69
Terminaison (suite)
Complétude
gn , gp L = [ Marie ]
gn L = [ Marie ]
np L = [ Marie ]
[ Paul ] L = [ Marie ]
%
[ Marie ] L = [ Marie ]
gp L = [ ]
%
gn , gp L = [ Marie ]
gn L = [ Marie ]
np L = [ Marie ]
[ Paul ] L = [ Marie ]
[ Marie ] L = [ Marie ]
gp L = [ ]
gn , gp L = [ Marie ]
...
s −−> gn , v , gn .
gn −−> gn , gp .
gn −−> det , nc .
fail
s L = [ Paul , aime , Marie ]
gn , v , gn L = [ Paul , aime , Marie ]
gn L = [ Paul , aime , Marie ]
gn , gp L = [ Paul , aime , Marie ]
gn L = [ Paul , aime , Marie ]
gn , gp L = [ Paul , aime , Marie ]
gn L = [ Paul , aime , Marie ]
gn , gp L = [ Paul , aime , Marie ]
...
fail
% fail
% fail
⇒ boucle, sans aucune réponse
⇒ boucle de prédiction sur gn −−> gn,gp.
INRIA
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
137 / 69
Importance de l’ordre des productions :
Ennuyeux pour un formalisme déclaratif !
(cause : ordre non équitable de sélection des productions)
INRIA
Boucles
É. de la Clergerie
Prolog comme analyseur
2008
La gestion de non-déterminisme à la Prolog (retour-arrière) ⇒ beaucoup de
re-calculs :
p(X ), q(Y )
NP ← NP Prep NP
A←Bc
B←A
A←BAc
(b) indirecte
p(X )
I
I
2
3
(c) cachée
pas toujours possible ou facile
éventuellement incompatible avec des constructions sémantiques
pertube les arbres d’analyse attendus
X = t1
Y = r1
Compare l’appel courant avec les appels en cours
⇒ mémo-fonction et tabulation
changer de stratégie d’analyse et de contrôle
É. de la Clergerie
Prolog comme analyseur
tn r1
t1
2008
139 / 69
X = tn
Y = rm
X = t1
Y = r1
rm
X = tn
Y = rm
Sans partage, les GN sont recalculés 5 fois
Jean observe un homme sur sur la colline avec un télescope.
INRIA
INRIA
q(X )
B ← |b
Remèdes :
1
Transformation de programmes,
I
138 / 69
Duplication de calculs
Boucles et récursions en présence de récursions// en particulier sur les
récursions gauches
(a) directe
INRIA
Le nombre de re-calculs croit exponentiellement avec le nombre de points
d’ambiguïtés.
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
140 / 69
INRIA
Construire une analyse
Stratégies d’analyse
Par collage d’arbres (partiels) d’analyse :
Une stratégie d’analyse décrit quels pas de calculs sont autorisés pendant
l’analyse :
S
s
gn
gn
gn
gv
gv
gp
−−>
−−>
−−>
−−>
−−>
−−>
−−>
gn gv
np
d e t nc
gn gp
v np
gv gp
prep gn
GN
GV
GN
VP
V
NP
stratégies descendantes (top-down), guidées par les buts, en partant de
l’axiome
stratégies ascendantes (bottom-up)
guidées par les réponses, en partant des terminaux
GN
GN
det
nc
stratégies hybrides (comme la stratégie Earley)
stratégies dirigées par des tables (Left Corner, Head Corner, LR, . . . )
NP
V
det
nc
Jean
observe
un
homme
INRIA
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
INRIA
INRIA
141 / 69
É. de la Clergerie
Prolog comme analyseur
2008
142 / 69
Stratégies de contrôle
Une stratégie de contrôle spécifie la gestion du non-déterminisme,
en particulier en terme d’ordonnancement :
Ambiguïtés Que faire des ambiguïtés
désambiguïser (probabilités, heuristiques, regard en avant)
désambiguïsation totale ou partielle
exploration par retour arrière,
exploration par tabulation, . . .
Huitième partie VIII
Implanter des stratégies d’analyse
Ordonnancement Dans quel ordre examiner les alternatives ?
I
I
I
I
I
en profondeur d’abord (dernière alternative examinée en
premier)
en largeur d’abord
en fonction de probabilités ou heuristiques
synchronisation lecture (gauche-droite) de la chaîne
parallèle, concurrent, . . .
INRIA
INRIA
É. de la Clergerie
Prolog comme analyseur
2008
143 / 69
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
144 / 69
Analyseur descendant
En profondeur incrémentale
Même stratégie descendante, mais contrôle = profondeur d’abord mais bornée
ie :
DCG Prolog ≡
analyse : descendante gauche-droite
contrôle : profondeur d’abord avec retour-arrière
en profondeur d’abord, jusqu’à une certaine profondeur k
en relançant avec une profondeur k + 1
phrase ( A , L , R) :− t d _ p a r s e ( A , L , R) .
t d _ p a r s e ( A , L , R) :−
recorded ( ( A −−> G) ) ,
t d _ p a r s e (G, L , R) .
td_parse ( [ ] , L , L ) .
t d _ p a r s e ( [ T | Rest ] , L , R) :−
’C ’ ( L , T ,M) ,
t d _ p a r s e ( Rest ,M, R) .
t d i _ p a r s e _ i t e r a t e ( A , L , R, Depth ) :−
( t d i _ p a r s e ( A , L , R, Depth )
; NewDepth i s Depth+1 ,
t d i _ p a r s e _ i t e r a t e ( A , L , R, NewDepth )
).
t d i _ p a r s e ( A , L , R, Depth ) :−
Depth > 0 , NewDepth i s Depth−1 ,
recorded ( ( A −−> G) ) ,
t d i _ p a r s e (G, L , R, NewDepth ) .
Facile à mettre en oeuvre (≡ descente récursive gauche [LL])
mais boucles, incomplétude et duplication de calculs.
Permet d’éviter les incomplétudes dans les réponses, mais
toujours des problèmes de terminaison
encore plus de duplication de calculs
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
INRIA
145 / 69
Analyseur ascendant : moteur
É. de la Clergerie
Implanter des stratégies d’analyse
INRIA
2008
146 / 69
Analyseur ascendant : trace
L’analyse part des terminaux pour remonter vers l’axiome
mise en oeuvre : réduction progressive de corps de production dans la chaîne
phrase ( A , L , R) :−
bu_parse ( L , [ A | R ] ) .
bu_parse ( L , L ) .
bu_parse ( L , R) :−
%% L = F r o n t . Body . T a i l
s p l i t ( L , Front , Body , T a i l ) ,
%% t r o u v e une prod Head −−> Body
dcg_match ( Body , Head ) ,
s p l i t (M, Front , [ Head ] , T a i l ) ,
%% M = F r o n t . [ Head ] . T a i l
bu_parse (M, R) .
bu [ Paul , aime , Marie ]
bu [ np , aime , Marie ]
bu [ gn , aime , Marie ]
bu [ gn , v , Marie ]
bu [ gn , v , np ]
bu [ gn , v , gn ]
bu [ s ]
Answer :
L = [ Paul , aime , Marie ]
...
:−s t d _ p r o l o g s p l i t / 4 .
s p l i t ( L , A , B , C) :−
append ( A , BC, L ) ,
append ( B , C,BC) .
L’analyse termine, car aucune boucle de prédiction, mais . . .
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
147 / 69
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
148 / 69
Analyseur ascendant : efficacité
Analyseur shift-reduce : principe
Extrêmement inefficace !
les constituants sont reconstruits dans tous les ordres possibles
des constituants intermédiaires inutiles sont créés
Approche ascendante légèrement plus efficace :
Answer :
L = [ Paul , aime , Marie ]
bu [ gn , aime , np ]
bu [ gn , v , np ]
bu [ gn , v , gn ]
bu [ s ]
Answer :
L = [ Paul , aime , Marie ]
bu [ gn , aime , gn ]
bu [ gn , v , gn ]
bu [ s ]
Answer :
L = [ Paul , aime , Marie ]
...
les terminaux sont lus de gauche à droite et empilés (shift) sur une pile
réduction (reduce) quand le corps d’une production est présent sur la pile
la tête de la production est empilée à la place
Peut être rendue plus efficace en pré-calculant des tables des shift et
reduce autorisés dans un certain état :
⇒ stratégies LR et (non déterministe tabulaire) GLR (Tomita)
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
149 / 69
INRIA
INRIA
Analyseur shift-reduce : moteur
É. de la Clergerie
Implanter des stratégies d’analyse
2008
150 / 69
Shift-reduce : Trace
s h i f t Paul => [ Paul ]
s h i f t aime => [ aime , Paul ]
s h i f t Marie => [ Marie , aime , Paul ]
reduce t o np => [ np , aime , Paul ]
reduce t o gn => [ gn , aime , Paul ]%f
reduce t o v => [ v , Paul ]
s h i f t Marie => [ Marie , v , Paul ]
reduce t o np => [ np , v , Paul ]
reduce t o gn => [ gn , v , Paul ]%f
reduce t o np => [ np ]
s h i f t aime => [ aime , np ]
s h i f t Marie => [ Marie , aime , np ]
reduce t o np => [ np , aime , np ]
reduce t o gn => [ gn , aime , np ]%f
reduce t o v => [ v , np ]
%% s r _ p a r s e ( StackIn , StackOut , S t r i n g I n , S t r i n g O u t )
s r _ p a r s e ( SI , SI , L , L ) .
s r _ p a r s e ( SI , SO, [ A |M] , R) :−
s r _ p a r s e ( [ A | SI ] , SO,M,R) .
s r _ p a r s e ( SI , SO, L , R) :−
%% match en r e v e r s e l e haut de l a p i l e SI = [ RevBody | SRed ]
%% avec l e corps d ’ une c l a u s e Head −−> Body
sr_dcg_match ( SI , Head , SRed ) ,
s r _ p a r s e ( [ Head | SRed ] ,SO, L ,R) .
s h i f t Marie => [ Marie , v , np ]
reduce t o np => [ np , v , np ]
reduce t o gn => [ gn , v , np ]%
reduce t o gn => [ gn ]
s h i f t aime => [ aime , gn ]
s h i f t Marie => [ Marie , aime , gn ]
reduce t o np => [ np , aime , gn ]
reduce t o gn => [ gn , aime , gn ]%f
reduce t o v => [ v , gn ]
s h i f t Marie => [ Marie , v , gn ]
reduce t o np => [ np , v , gn ]
reduce t o gn => [ gn , v , gn ]
reduce t o s => [ s ]
Answer :
L = [ Paul , aime , Marie ]
Plus efficace et terminaison, mais
gestion explicite d’une pile
toujours des re-calculs
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
151 / 69
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
INRIA
2008
152 / 69
Relation coin-gauche
Analyseur coin-gauche
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
153 / 69
INRIA
INRIA
É. de la Clergerie
Implanter des stratégies d’analyse
2008
154 / 69
Tabuler ?
Principe : garder des traces de calculs dans une table, pour
détecter des boucles, afin d’améliorer la terminaison
Neuvième partie IX
partager des sous-calculs
Analyseurs tabulaires
déployer des stratégies d’ordonnancement plus flexibles
extraire des traces des sous-calculs réussis
(preuves, arbres d’analyse)
agréger une valeur sur un ensemble de résultats
(moyenne, somme, plus court chemin, . . . )
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
155 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
156 / 69
Tabulation et CFG
Tabulation passive
Une longue histoire avec de nombreux algorithmes :
CKY [Cocke-Kasami-Younger]
Algorithme d’Earley – Analyseurs à Charte [Kay]
Generalized LR [Tomita]
Automates à piles / programmation dynamique [Lang]
La table ne sert qu’à enregistrer des calculs terminés.
La table ne sert pas à diriger les calculs
Mais essentiel de clairement distinguer
Stratégie d’analyse
Stratégie de contrôle (niveau tabulation)
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
157 / 69
INRIA
INRIA
Cocke-Kasami-Younger [CKY]
É. de la Clergerie
Analyseurs tabulaires
2008
159 / 69
Complexité
Algorithme en Programmation Dynamique (1965)
Analyse ascendante avec tabulation des constituants
table_initialize
f o r a l l p o s i t i o n s x and l e n g t h s l
f o r a l l p r o d u c t i o n s A0 ← A1 . . . Av
f o r a l l l e n g t h s l1 , . . . , lv −1 w i t h Σk =1..v −1 lk < l
lv = l − Σk =1..v −1 lk
xj = x + l1 + · · · + lj−1
i f Aj ∈ T [xj , lj ] f o r a l l j > 1
then add A0 i n T [x, l] ( u n l e s s p r e s e n t )
Si il existe une production A0 ← A1 . . . An avec, pour tout i > 0, Ai
présent dans (xi , li ) et xi+1 = xi + li , alors tabuler le non terminal A0
dans l’entrée (x1 , Σi li ) (sauf si déjà tabulé).
S17
7
GV15,[16]
6
5
S13
4
GV11
3
2
v2
1 np1 GN8
Jean
observe
GN14
Complexité temps pire des cas fournie par les itérations enchâssées sur x, l et
l j (1 ≤ j < v ) bornées par la longueur de la chaîne n.
⇒ O(nv +1 ) où v est la longueur de la plus longue production
GP12
GN9
det3
un
nc4
prep5
GN10
det6
nc7
homme
avec
un
télescope
Les constituants généralement construits par longueur croissante,
de la gauche vers la droite
mais en fait non obligatoire !
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
160 / 69
Pour un reconnaisseur, complexité espace pire des cas fournie par le # de
cellules dans la table and le # de constituants par cellule
⇒ O(n2 )
INRIA
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
161 / 69
Forme normale de Chomsky (binarisation)
Limitations de CKY
Constituants inutiles
Complexité en O(nv +1 ) réduite à O(n3 ) en mettant sous
forme normale de Chomsky (binarization).
John who looks [S Marie leaves ]
Règle ternaire VP −−> V, NP, NP donne une complexité O(n4 )
mais peut être remplacée par les règles binaires
S
NP
VP −−> V , VP_ARGS.
VP_ARGS −−> NP, NP.
VP
Rel
PN
V
Pron
Mais implique une transformation de la grammaire
plus élégant de manipuler des règles pointées
S
NP
Traces
Pire des cas temps en O(n3 ) et espace en O(n2 ) (quasi) optimal pour les CFG
mais CKY non efficace (défauts des stratégies purement ascendantes)
VP
PN
John
V
NP
observes that Mary
leaves
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
162 / 69
INRIA
INRIA
Analyses avec Charte
Analyseurs tabulaires
É. de la Clergerie
2008
163 / 69
CKY reformulé en charte passive
Les entrées de la table CKY visuellement représentés par des arcs et stockés
comme items hi, j, Cati.
Historiquement, approches motivées par le souhait :
S
VP
d’utiliser de la tabulation (pour le partage de calculs)
NP
S
de préserver la complexité optimale O(n2 ) pour les CFGs
VP
NP
d’introduire de la prédiction (descendante)
développement de techniques génériques fondées sur des chartes
une charte equiv ensemble d’arcs (items) entre 2 positions de la chaîne, avec
divers types de labels
0
PP
NP
NP
PN
V
Det
N
Prep
Paul
1 observe 2
un
3 homme 4
avec
5
Det
N
un
6 télescope 7
Complexité temps en O(nv +1 )
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
164 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
165 / 69
Interpréteur Prolog
Règles pointées
Une charte active stocke non seulement des constituants incomplets mais aussi
des constituants partiels, pouvant servir à guider l’analyse.
Utilisation de
A0 ← A1 . . . Ai • Ai+1 . . . An
règles pointées [dotted rules]
arcs étiquetés par des règles pointées ( items ≡ hi, j, A ← α • βi )
un système déductif spécifie comment dériver les items
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
166 / 69
INRIA
INRIA
Un système déductif pour CKY
É. de la Clergerie
Analyseurs tabulaires
2008
168 / 69
Invariant
A← •α
hi, i, A ← • αi
Chaque item hl, r , A ← α • βi vérifie l’invariant : α →? al+1 . . . ar
i
∃A ← α
(Seed)
A
A ← αa • β
hi, j, A ← α • aβi
hi, j + 1, A ← αa • βi
A ← α • aβ
a = aj+1
j
i
j+1
α
A ← α • Bβ
i
r
β
L’utilisation des règles pointées induit une binarisation implicite
⇒ complexité temps O(n3 )
A ← αB • β
hi, j, A ← α • Bβi hj, k , B ← γ•i
hi, k , A ← αB • βi
l
(Scan)
j B ← γ• k
INRIA
(Complete)
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
169 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
170 / 69
Algorithme d’Earley
Invariant et complexité
Chaque item hl, r , A ← α • βi satisfait 2 invariants :
1
Reconnaissance de α entre l et r (comme pour CKY)
Possibilité d’ajouter une règle de prédiction (descendante)
⇒ Algorithme d’Earley [1970]
2
validité des préfixes : ∃γ ∈ (T ∪ N)? , S →? a1 . . . al Aγ
S
A
B ← •γ
hi, j, A ← α • Bβi
hj, j, B ← • γi
A ← α • Bβ
∃B ← γ
j
i
(Pred)
α
l
0
r
β
+ rules (Scan) and (Complete)
La complexité pire des cas en temps demeure O(n3 )
Mais, en pratique, la prédiction réduit l’espace de recherche et réduit la
complexité
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
171 / 69
INRIA
INRIA
Charte : mise en oeuvre
É. de la Clergerie
Analyseurs tabulaires
2008
172 / 69
Formulation Prolog
Un algorithme à charte repose sur :
une table (i.e. charte) où sont stockés les items, sans duplication.
Un item (A −−> Body)(I,J), en notation Hilog
Variante de Earley : règle pointée A ← α • β représentée par A ← β
un agenda où sont stockés les items à traiter
e a r l e y _ p a r s e ( A , L ,R) :−
p r e d i c t ( A( L , L ) , [ ] , Agenda ) ,
process ( Agenda ) ,
s t o r e d ( ( A −−> t r u e ) ( L , R) ) .
Un cycle de l’algorithme implique
1
2
Sélectionner un item I dans l’agenda
Si I n’est pas déjà tabulé, l’ajouter ; sinon retour étape 1
3
Construire de nouveaux items en combinant I avec les items déjà tabulés
4
Insérer les nouveaux items dans l’agenda
process ( [ ] ) .
process ( [ Item | OldAgenda ] ) :−
process_item ( Item , OldAgenda , Agenda ) ,
process ( Agenda ) .
Variante : Les items sont d’abord tabulés avant insertion dans l’agenda
Ordre de sélection (Earley) : hi, j, Ai choisi avant hk , l, Bi si j < l :
⇒ synchronisation gauche-droite de la lecture
process traite le 1er item de l’agenda
Pour les CFG, l’ordre de sélection importe peu (univers fini) :
⇒ l’algorithme termine et est complet
stored test si l’item est dans la table
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
173 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
174 / 69
Formulation Prolog (process)
Formulation Prolog (predict)
Prédit de nouvelles production à réduire.
p r e d i c t (G : : A ( I , I ) , Agenda1 , Agenda2 ) :−
a l l _ s o l u t i o n s ( NewItem ,
G^ p r e d i c t i o n (G, NewItem ) ,
Agenda1 ,
Agenda2 ) .
p r e d i c t i o n (A ( I , I ) , NewItem ) :−
recorded ( Prod : : ( A−−>Body ) ) ,
s t o r e ( NewItem : : Prod ( I , I ) ) .
process_item ( ( B−−> t r u e ) ( J , K) , OldAgenda , Agenda ) :−
r e s o l v e _ p a s s i v e ( B ( J , K) , OldAgenda , Agenda ) .
process_item ( Item : : (A−−>B , Beta ) ( I , J ) , OldAgenda , Agenda ) :−
p r e d i c t ( B ( J , J ) , OldAgenda , MiddleAgenda ) ,
r e s o l v e _ a c t i v e ( Item , MiddleAgenda , Agenda ) .
all_solutions : collecte tout les items résultant de la prédiction et les ajoute à
l’agenda
(Prolog : findall , bagof ou setof , DyALog : iterate , . . . )
store ajoute l’item à la table ; échoue si déjà présent
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
175 / 69
INRIA
INRIA
Formulation Prolog (passive)
É. de la Clergerie
Analyseurs tabulaires
2008
176 / 69
Formulation Prolog (active)
Utilise un fait pour réduire des règles pointées
À partir d’une règle pointée, cherche un fait tabulé pour avancer
r e s o l v e _ p a s s i v e ( Fact : : B( J , K) , Agenda1 , Agenda2 ) :−
a l l _ s o l u t i o n s ( NewItem ,
Fact ^ p a s s i v e ( Fact , NewItem ) ,
Agenda1 ,
Agenda2 ) .
r e s o l v e _ a c t i v e ( Item : : (A−−>B , Beta ) ( I , J ) , Agenda1 , Agenda2 ) :−
a l l _ s o l u t i o n s ( NewItem ,
Item ^ a c t i v e ( Item , NewItem ) ,
Agenda1 ,
Agenda2 ) .
p a s s i v e ( B ( J , K ) , NewItem ) :−
s t o r e d ( ( A −−>B , Beta ) ( I , J )
s t o r e ( NewItem : : (A−>Beta ) ( I , K ) ) .
a c t i v e ( ( A−−>B , Beta ) ( I , J ) , NewItem ) :−
s t o r e d ( ( B −−> t r u e ) ( J , K) )
s t o r e ( Item : : (A−>Beta ) ( I , K) ) .
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
177 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
178 / 69
findall (Prolog)
Schéma d’analyse
Description of parsing strategies in terms (of classes) of partial parse trees
[Sikkel] “These intermediate results are not necessarily partial
trees, but they must be objects that denote relevant properties of those
partial parses.”
h a b i t e ( jean , b e l f o r t ) .
habite ( lucie , paris ) .
habite ( c h r i s t i a n , toulouse ) .
habite ( adeline , paris ) .
habite ( nicolas , paris ) .
A schema indicates
the domain of items (and their form)
?− f i n d a l l ( X , h a b i t e ( X , p a r i s ) , R) .
R = [ lucie , adeline , nicolas ] ?
the item invariants
Very close from chart algorithms
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
179 / 69
INRIA
INRIA
Stratégie par coin-gauche
É. de la Clergerie
Analyseurs tabulaires
2008
180 / 69
Stratégie dirigée par les têtes
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
181 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
182 / 69
Construire un arbre d’analyse
Earley revisité
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
184 / 69
INRIA
INRIA
Test de redondance
É. de la Clergerie
Analyseurs tabulaires
2008
185 / 69
Boucles : variance vs sumsomption
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
186 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
187 / 69
Subsomption faible et forte
Terminaison et spirales
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
188 / 69
INRIA
INRIA
Grammaires finiment ambiguës
É. de la Clergerie
Analyseurs tabulaires
2008
189 / 69
Boucles de prédiction
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
190 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
191 / 69
Couper les boucles de prédiction
Restrictions
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
192 / 69
INRIA
INRIA
Implantation des restrictions en Prolog
É. de la Clergerie
Analyseurs tabulaires
2008
193 / 69
Restrictions en DyALog
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
194 / 69
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
195 / 69
Ordonnancement et complétude
Dixième partie X
Efficient tabular parsing strategies
INRIA
INRIA
É. de la Clergerie
Analyseurs tabulaires
2008
196 / 69
INRIA
INRIA
Efficient strategies
É. de la Clergerie
Efficient strategies
2008
197 / 69
Useless argument
Building and propagating parse trees reduce computation sharing
VP ← VP PP
VP(vp(VP, PP)) ← VP(VP) PP(PP)
Tabulation and parsing strategies are two largely orthogonal issues.
hi, j, VP(t)i +
But some strategies are more efficient than others when using tabulation
These strategies may differ from those used for deterministic evaluations.
hj, k , PP(t 1 )i →
hj, k , PP(t 2 )i →
hi, k , VP(vp(t, t 1 ))i
hi, k , VP(vp(t, t 2 ))i
⇒ duplication of computations and no search space pruning
More judicious to extract a tree (or forest) from tabulated traces
Similar problem for semantic forms
INRIA
INRIA
É. de la Clergerie
Efficient strategies
2008
198 / 69
INRIA
INRIA
É. de la Clergerie
Efficient strategies
2008
199 / 69
Example of modulation : hanoi
Idée : oublier pendant les prédiction les arguments non-prédictifs
% hanoi w i t h accumulator l i s t
hanoi ( [ ] , _ , _ , _ ,M,M) .
hanoi ( [ X | Y ] , L , C, R, M1,M2) :−
hanoi ( Y , C, L , R, M3,M2) ,
hanoi ( Y , L , R, C, M1 , [m( L , R) |
M3 ] ) .
Pour partager sur les plots & accumulateur :
hanoi(stack, l, c, r, moves, acc)
Call
call_hanoi_6(stack)
hanoi(Y, C, L, R, M3, M2)
hanoi(Y, L, R, C, M1, [m(L, R)|M3])
Return
ret(l, c, r , moves, acc)
call_hanoi_6(Y )
En DYAL OG : :−mode(hanoi/6,+(+,−,−,−,−,−).
INRIA
É. de la Clergerie
Efficient strategies
⇒
Sharing
INRIA
2008
200 / 69