560 likes | 665 Vues
Análisis de gramáticas lógicas. Introducción El Prolog como analizador Análisis con gramáticas de rasgos abiertas Schöter Análisis con gramáticas de rasgos con tipos ALE (Carpenter) Amalia (Wintner). Introducción 1.
E N D
Análisis de gramáticas lógicas • Introducción • El Prolog como analizador • Análisis con gramáticas de rasgos abiertas • Schöter • Análisis con gramáticas de rasgos con tipos • ALE (Carpenter) • Amalia (Wintner)
Introducción 1 • Gramáticas Sintagmáticas (Phrase Structure Grammars) vs Gramáticas Lógicas (Logic Grammars) • Elementos de los vocabularios (terminal y no terminal) • símbolos (etiquetas) pertenecientes a un conjunto finito • expresiones abiertas • términos de una lógica de predicados de 1er orden (ej. términos Prolog) • estructuras de rasgos (Feature Structures, FS) • ...
Introducción 2 • Gramáticas Lógicas vs Gramáticas de Unificación • El peso de la unificación • Adaptación de los algoritmos clásicos de tratamiento de gramáticas incontextuales
Introducción 3 • El peso de la unificación • Tomabechi,1991 • 85% - 90% del tiempo de análisis • 75% - 95% de este tiempo: copia de estructuras • > 60% de las unificaciones de los análisis correctos fallan • Otras operaciones • subsunción, generalización, herencia, disyunción, negación, reescritura, asignación
Introducción 4 • Unificación de dags y unificación de términos • Representación de las estructuras de rasgos • Compilación: • FS términos Prolog, vectores de bits, predicados lógicos • P-Patr (Hirst,1988), CLE (Hinrich,1992), Schöter • HPSG Tag (Kasper, Kiefer) • FS con tipos: ALE (Carpenter,1993), ALEP, TFS, CUF • WAM (Warren Abstract Machine) • Carpenter, Penn (ALE), Wintner (Amalia)
Esquemas de análisis con unificación • Enriquecer el esquema de análisis con información que puede añadirse al núcleo incontextual de la gramática • Introducción de rasgos • 0 (A ) para las producciones • (X) para los constituyentes • ([A , i, j]) para los items • Aplicable a CKI, Earley, LR, ... () () subsunción () () unificación
Extensión del esquema de Earley 1 Iearley = {[A , i, j] | A PG 0 i j 0 (A ) () consistent ( ())} Dinit = {[S , 0, 0] | () = 0 (S )}
Extensión del esquema de Earley 2 Dscan = {[A a, i, j], [a, j, j+1][A a, i, j+1] | () = () ()} Dcompl = {[A B, i, j], [B , j, k] [AB, i, k] | () = () ()}} Dpred = {[A B, i, j][B, j, j] | () = (B) (B)}}}
Prolog como analizador 1 • Ventajas • Análisis sintáctico como demostración de un teorema • No es necesario construir un analizador • Incorporado al lenguaje: DCG • Relativamente fácil de escribir la gramática • Relativamente fácil de integrar
Prolog como analizador 2 • Limitaciones • Estrategia fija descendente • Orden de tratamiento fijo de izquierda a derecha • Orden de aplicación de las cláusulas (reglas de la gramática) fijo • Problemas al gestionar la recursividad izquierda • Repetición de cálculos • Generación de árboles de análisis parciales inútiles • Rigidez
Mejoras (Stabler,1990) 1 • Separación de las cláusulas de la gramática de las del lexicón. • Reordenación de los objetivos a satisfacer. Estática y Dinámica (en el momento de intentar la demostración de la parte derecha de la cláusula), • Técnicas de desplegado. Substituyendo parte de los objetivos de la derecha de una cláusula por el desplegado de la o las posibles cláusulas a expandir. • Evaluación parcial. Ejecución por adelantado de etapas de resolución y reordenación de los literales.
Mejoras (Stabler,1990) 2 • Generación y test. Ejecutar los tests cuanto antes dentro de una conjunción. • Uso de funciones de selección específicas del dominio • Ordenación de literales de la gramática usando técnicas estadísticas que tengan en cuenta factores como el número de argumentos, su complejidad, su nivel de instanciación, etc... • Podado dinámico (ej. limitaciones sobre el número de pasos recursivos). • Almacenamiento de resultados intermedios (positivos o negativos)
Mejoras (Kiefer et al, 1999) 3 • Precompilación del lexicón • expansión y aplicación de reglas léxicas • eliminación de partes de la FS no útiles para el análisis • Mejoras en la unificación • algoritmo casi-destructivo de unificación de Tomabechi • reusar partes de la estructura de entrada en la de salida (Pereira) • Precompilación de la unificación de tipos • Precompilación de las reglas de filtrado • evitar el fallo de las unificaciones aplicando filtros baratos
Mejoras (Kiefer et al, 1999) 4 • Filtros dinámicos de unificación (“quick check”) • Reducción del tamaño de las FS con restrictores • Limititación del número inicial de items del chart • Cálculo de los mejores análisis parciales
Unificación • Técnicas • Compartición de información en FS y MFS • [Pereira, 1985], [Karttunen,Kay, 1985] • Incremental Copying • Lazy copying
BUP 1 • Bottom Up Parser • Traducción, en tiempo de compilación, de les reglas de la gramàtica, escritas en DCG, a un tipo de cláusulas de Horn, denominadas cláusulas BUP, que posteriormente serán procesadas por Prolog. • Dotar a la gramática DCG original de una interpretación procedimental diferente. • El analizador resultante incorpora en las cláusulas BUP el mecanismo de control: de tipo ascendente y en profundidad ("left corner")
BUP 2 • [Matsumoto et al, 1983], [Matsumoto et al, 1985] • Búsqueda indexada para Links • Consulta en diccionario • almacenamiento de éxitos y fracasos parciales • LangLab (Tanaka) • XG • Lexías. Tries • SAX (Matsumoto, Sagimura) • PAX (paralelo), Prologs paralelos (Parlog -Clark-, Guarded Horn Clauses -Ueda-) • Técnicas de compilación Prolog • indexación de predicados • eliminación de recursividad terminal
BUP 3 proceso de la gramática BUP como si se tratara de una DCG gramática DCG original gramática BUP
Paso de DCG a BUP 1 reglas del tipo c0 c1 c2. producen reglas BUP del tipo: c1 (Obj, Pal_ini, Pal_fin):- objetivo (c2, Pal_ini,Pal_1), c0 (Obj, Pal_1,Pal_fin). reglas del tipo: c0 c1. producen reglas BUP del tipo: c1 (Obj, Pal_ini, Pal_fin):- c0 (Obj, Pal_ini,Pal_fin).
Paso de DCG a BUP 2 donde: objetivo (Obj,X,Z) :- dicc (C,X,Y), P =.. [C,Obj,Y,Z], P. La cláusula objetivo da lugar a la expansión horizontal
BUP (ejemplo) 1 oracion sintagma_nominal, sintagma_verbal. sintagma_nominal pronombre. sintagma_verbal verbo_intransitivo. Pronombre [ella]. verbo_intransitivo [pasea]. Esta gramática y lexicón DCG (G1) sólo es capaz de analizar la oración "ella pasea"
BUP (ejemplo) 2 sintagma_nominal (Obj) objetivo (sintagma_verbal), oracion (Obj). pronombre (Obj) sintagma_nominal (Obj). verbo_intransitivo (Obj) sintagma_verbal (Obj). dicc (pronombre) [ella]. dicc (verbo_intransitivo) [pasea]. Aplicando las transformaciones anteriores obtenemos una gramática BUP (G2) equivalente
BUP (ejemplo) 3 sintagma_nominal (Obj,X,Z):- objetivo(sintagma_verbal,X,Y), oracion (Obj,Y,Z). pronombre (Obj,X,Y):- sintagma_nominal (Obj,X,Y). verbo_intransitivo (Obj,X,Y):- sintagma_verbal (Obj,X,Y). dicc (pronombre,[ella|X],X). dicc (verbo_intransitivo,[pasea|X],X). oracion (oracion,X,X). sintagma_nominal (sintagma_nominal,X,X). sintagma_verbal (sintagma_verbal,X,X). pronombre (pronombre,X,X). verbo_intransitivo (verbo_intransitivo,X,X). Explicitando los argumentos ocultos de la DCG tenemos una gramática Prolog (G3) equivalente
BUP (ejemplo) 4 el objetivo inicial objetivo(oracion, [ella,pasea], []). da lugar al subobjetivo dicc y a la construcción del objetivo ascendente dicc(pronombre, [ella,pasea], [pasea]) pronombre(oracion, [pasea], []) la aplicación de la cláusula correspondiente permite la ascensión left-corner sintagma_nominal (oracion, [pasea], [])
BUP (ejemplo) 5 la aplicación de la cláusula que expande el sintagma_nominal produce objetivo (sintagma_verbal, [pasea], Y) oracion (oracion, Y, []) la cláusula objetivo da lugar a la expansión horizontal dicc (verbo_intransitivo, [pasea], []) verbo_intransitivo (sintagma_verbal, [], Y)
BUP (ejemplo) 6 la aplicación de la cláusula correspondiente permite la ascensión left-corner sintagma_verbal (sintagma_verbal, [], Y) que permite, a continuación, la unificación de Y con [] sintagma_verbal (sintagma_verbal, [], []) oracion (oracion, [], [])
Análisis con gramáticas de rasgos abiertas 1 • Boyer,1988 • Convierte las listas originales de rasgos en listas incompletas. • Efectúa la reordenación de las listas y renombrado de las variables. • Expande las desreferenciaciones de las ecuaciones. • Expande las apariciones de determinados predicados.
Análisis con gramáticas de rasgos abiertas 2 P-Patr (Hirsh, 1988) 1) Cálculo de la aridad y composición de todas las FS complejas 2) Pares atributo/valor en posición correcta. Listas cerradas. Eliminación de los atributos. Análisis siguiendo una estrategia left corner [n,[masc,sing,_]] [n,[_,plu,3]]
Análisis con gramáticas de rasgos abiertas 3 oracion sintagma_nominal, sintagma_verbal <oracion head> === <sintagma_verbal head> <sintagma_verbal head agr> === <sintagma_nominal head agr> se representaría como: oracion([head:[agr:Y]]) --> sintagma_nominal([head:[agr:Y]]), sintagma_verbal([head:[agr:Y]]). es decir, los componentes de la backbone CFG actúan como functores y las ecuaciones se reflejan en argumentos ojo! parte de la información que en la forma original se compartía, ahora se copia!
Schöter 19931 • Compilación Patr términos Prolog • se extrae un conjunto de dags de referencia a partir de la gramática. • se genera una especificación tipificada de la gramática • Se usa esta especificación para construir un conjunto de esquemas de traducción de dags a términos • funciones de acceso • Se aplican los esquemas y funciones de acceso sobre la gramática inicial para construir la gramática de términos
Schöter 19932 flat terms PATR equations Prolog DAGs Hirsh-style lists partial evaluation compilation
Schöter 19933 PATR's macro facility rule(1,tran,VB,V,NP):- V:subcat === 1, cat_macro([v,bar(0)],V), cat_macro([norm,bar(2)],NP), cat_macro(bar(1),VB), VB:head === V:head, V:subj === ‘-’, VB:subj === V:subj, NP:tree === A, V:tree === B, VB:tree === vb(A,B). V1 H[1], N2 subcategorization number rule identification mother category daughters
Schöter 19934 Evaluación parcial macro expansion individual unification performance rule(1,tran,A,B,C):- C===[head:[cat:[maj:[n:+,v:-|D],min:nil|E]...], B===[subcat:1,head:[cat:[maj:[n:-,v:+|I]...], C===[bar:1,head[cat:[maj:[n:-,v:+|I]...].
Schöter 19935 Evaluación parcial DAG:Path <== Value (A===B;C===D) no pueden ser precompilados, han de ser evaluados en el momento del parsing rule(nil,bare_np,A,B):- B===[head:[cat:[maj:[n:+,v:-|C],min:nil|D]...], A===[bar:2,head:[cat:[maj:[n:+,v:-|C],min:nil|D]...], ( A:head:agr:num === pl ; A:head:ntype === mass ).
Schöter 19936 Compilación Los términos deben poseer instancias instanciadas al máximo Conseguir un inventario estable de features conjunto de features enumeración Usar sólo la información implícita en la gramática (no hay estructura de tipos preexistente) 3 etapas 1) Obtención de la estructura de tipos de la gramática (implícita en ella) 2) Obtención de un conjunto de templates para traducir dags a términos 3) Aplicar las templates sobre todos los dags de la gramática
Schöter 19937 1ª etapa path(0, head:cat:n, [+]). path(0, head:cat:v, [-]). path(0, head:agr:per, [1,2,3]). path(0, head:agr:num, [sg,pl]). path(0, head:case, [nom,acc]). path(0, head:nform, [it,norm]). path(0, bar, [0]). hierarchy type number (0 for simple terms) feature path set of values Fuente de conocimiento: conjunto representativo de dags (por defecto la propia gramática, incluyendo el lexicón) Posibilidad de modificación manual Posibilidad de usar una especificación de la estructura de tipos
Schöter 19938 2ª etapa 1) Compiler template Skeletal maximal DAG whose values are replaced by variables Equivalent terms all of whose arguments are terms A set of type constraints on atomic values 2) Access functions path(0, head:cat:n, [+]). path(0, head:cat:v, [-]). path(0, head:agr:per, [1,2,3]). path(0, head:agr:num, [sg,pl]). path(0, head:case, [nom,acc]). path(0, head:nform, [it,norm]). path(0, bar, [0]). [head:[cat:[n:A,v:B|_],agr:[per:C,num:D|_],case:E,nform:F|_],bar:G|_] dag0(A,B,C,D,E,F,G)
Schöter 19939 Access functions Replacing the functionality lost in moving from named grouped arguments to positional independent ones a_func/3 a_func(Path, Term, Value) path(0, head:cat:n, [+]). path(0, head:cat:v, [-]). path(0, head:agr:per, [1,2,3]). path(0, head:agr:num, [sg,pl]). path(0, head:case, [nom,acc]). path(0, head:nform, [it,norm]). path(0, bar, [0]). a_func(head_cat, dag0(...,A,B,...), dag3(A,B)). ... Functions (dagterm/1) are also generated to recognize terms as compiled DAGs
Schöter 199310 rule(nil,bare_np,A,B):- B===[head:[cat:[maj:[n:+,v:-|C],min:nil|D]...], A===[bar:2,head:[cat:[maj:[n:+,v:-|C],min:nil|D]...], ( A:head:agr:num === pl ; A:head:ntype === mass ). Uso de Access functions rule(nil,bare_np, dag0(2,np(A),_,_,_,_,_,_,nil,-,+,norm,H,I,J,K,L,M,N,O,P,Q), dag0(1,A,_,_,_,_,_,_,nil,-,+,norm,H,I,J,K,L,M,N,O,P,Q)):- (a_func(head:agr:num, dag0(1,A,_,_,_,_,_,_,nil,-,+,norm,H,I,J,K,L,M,N,O,P,Q), pl); a_func(head:ntype, dag0(1,A,_,_,_,_,_,_,nil,-,+,norm,H,I,J,K,L,M,N,O,P,Q), mass)).
Schöter 199311 3ª etapa Translating DAGs of the grammar into terms Unifying the DAG to be compiled with the template's skeletal maximal DAG rule(1,tran,A,B,C):- C===[head:[cat:[maj:[n:+,v:-|D],min:nil|E]...], B===[subcat:1,head:[cat:[maj:[n:-,v:+|I]...], C===[bar:1,head[cat:[maj:[n:-,v:+|I]...]. rule(1,tran, dag0(1,vb(A,B),_,C,_,_,_,_,nil,-,+,D,E,F,G,H,I,J,K,L,M,N), dag0(0,A,1,C,_,_,_,_,nil,-,+,D,E,F,G,H,I,J,K,L,M,N), dag0(2,B,_,_,_,_,_,_,nil,+,-,norm,_,_,_,_,_,_,_,_,_,_),
Schöter 199312 Transformaciones en el analizador DAG1: Path1 === DAG2: Path2 path_to_pathname(Path1,PathName1), path_to_pathname(Path2,PathName2), a_func(PathName1,Term1,V), a_func(PathName2,Term2,V) path_to_pathname(Path,PathName), a_func(PathName,Term,V0), nonvar(V0), V0 = Value DAG: Path <== Value
Schöter 199313 Test Grammar: GPSG diccionario 268 lexemas 39 reglas 10 definiciones auxiliares 22 rasgos Extensiones: Implicit Types Gross (G) Type: atomic vs complex Fine (F) Type: valid extensions of a label Terminal (T) Type: constraints sobre los valores Constraints FCR (Feature Co-occurrence Restriction) Hierarchical Compilation
Restrictores • Forma de limitar el espacio de busqueda • [Shieber,1985], [Seiffert,1987], [Gerdemann,1993], [La Serna,1998] • Dominios potencialmente infinitos • Algoritmos que implican predicción (e.g. Earley) • R = Restrictor = conjunto finito de caminos (subconjunto del conjunto de caminos, potencialmente infinito) • RD Restricted Dag (relativo a R) • RD subsume a D • Para cada camino p en RD, q en R tal que p es prefijo de q • RD es el dag más específico que satisface estas conditiones • Uso de RD para predicción y D para scanning y completion • Forma de seleccionar los restrictores: • cat: CFG backbone • Modelo estadístico sobre el grado de instanciación de los rasgos
Análisis con gramáticas de rasgos con tipos 1 • Typed FS • Cualquier FS f posee un tipo t • t T, conjunto finito no vacío de tipos normalmente organizado como una jerarquía • Una FS f, de tipo t permite tener un conjunto finito de rasgos, apropiados al tipo • Un valor específico, perteneciente a un tipo apropiado puede asociarse a cada rasgo de una FS • Ejemplos • ALE, Carpenter • Alep, Alshawi • AMALIA, Wintner • CUF, Dörre • TFS, Zajac
bot list atom ne-list hd: bot tl: list e-list a b Análisis con gramáticas de rasgos con tipos 2 Ejemplo de jerarquía de tipos en ALE bot sub [list, atom] list sub [e-list ne-list] e-list sub [] ne-list sub [] intro [hd:bot, tl:list] atom sub [a, b] a sub [] b sub []
Análisis con gramáticas de rasgos con tipos 3 Parsing con gramáticas ALE • Compiling Type structure T • transitive closure of subsumption in T • Wharshall´s algorithm • least upper bounds for each pair of consistent types • Appropriateness • appropriate features for each type • appropriate value for each feature • Compiling basic operations • Compiling descriptions • Compiling grammar and programs
Análisis con gramáticas de rasgos con tipos 4 Implementing FS in ALE Siguiendo a Carpenter,1993 una FS se representa como Tag - foo (V1,...Vn) donde Tag reference pointer - prolog operator foo type of the structure
Análisis con gramáticas de rasgos con tipos 5 Compilación de las operaciones básicas El siguiente tipo de código se producirá: Comunicación de que una FS pertenece a determinado tipo (e.g. una list es una ne_list): (e.g. un sign es un word): unify(T-ne_list(H, R), T-ne_list(H2, R2):- unify(H, H2), unify(R, R2). add_to(ne_list, Tag-TVs):- add_to_ne_list(TVs, Tag). add_to_ne_list(list, _-ne_list(T1-bot, T2-bot):- add_to_atom(bot,T1), add_to_atom(bot,T2). add_to_word(sign(T1-Phon, Synsem, QSt), _-word(T1-Phon, Synsem, QSt)):- add_to_singleton_phon_list(Phon,T).
Amalia 1 Abstract MAchine for LInguistic Applications Wintner, 1997 Wintner,Francez, 1996, 1999 Abstract Feature Structures unifying two TFS: a program and a query => new TFS Grammar rules and lexicon entries follow ALE format The main difference between AMALIA and abstract machines devised for variants of Prolog (e.g. ALE) is that AMALIA is not based on resolution but on parsing with respect to an input grammar.
myth f: bool adj n v yes no bird wings: yes beast sign syn: cat sem: anim bool cat anim prd: bool Amalia 2 Ejemplo de jerarquía de tipos anim sub[bird,beast] intro[prd:bool]