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