Memoria Analizador Sintactico PDF

Title Memoria Analizador Sintactico
Author Vi To
Course Conocimiento y Razonamiento Automatizado
Institution Universidad de Alcalá
Pages 22
File Size 1.1 MB
File Type PDF
Total Downloads 28
Total Views 147

Summary

El objetivo de la práctica es poder analizar sintácticamente oraciones en español, de manera que se tenga en cuenta sus reglas más importantes de concordancia, y se muestre el árbol de análisis de manera clara....


Description

MEMORIA GRAMÁTICA DE CLÁUSULAS DEFINIDAS EN PROLOG Analizador Sintáctico

1.Planteamiento Inicial El objetivo de la práctica es poder analizar sintácticamente oraciones en español, de manera que se tenga en cuenta sus reglas más importantes de concordancia, y se muestre el árbol de análisis de manera clara. Al ser la gramática española muy compleja, seguiremos unas reglas gramaticales y de concordancia simplificada: • Concordancia de género entre el sustantivo y los posibles adjetivos o artículos que lo acompañen. • Concordancia verbal de número y persona con el sujeto realizado (si el sujeto es múltiple, se detecta y forzamos verbo plural). • El pronombre con su antecedente o consecuente. • El sujeto con el atributo, con el predicativo o con el participio del verbo de la pasiva perifrástica. • Concordancia verbal centrada en la comprobación de número y persona. Los grupos sintácticos contemplados son: • Grupo nominal • Grupo adjetival • Grupo adverbial • Grupo preposicional • Grupo verbal Los términos contemplados son: • Determinantes • Nombres comunes • Nombres propios • Pronombres • Verbos • Adjetivos • Adverbios • Conjunciones • Preposiciones Y finalmente, se ha realizado una programación que atiende a los siguientes requisitos: • Realizamos un estudio inicial de la oración para establecer ciertas estrategias según se detecte una frase con varios verbos o no. De manera que podremos actuar de manera más sencilla en caso de ser una oración simple o compuesta. • Se ha realizado un sistema que detecte los requisitos de concordancia que en caso de fallar muestran el mensaje con el requisito que no se cumple.

2.Aspectos de la programación 2.1-Menú El menú consiste en el inicio del programa, así como en un bucle que permitirá al usuario introducir oraciones continuamente hasta que decida salir de la partida (1 para continuar, 0 para salir. La orden inicial es: analizar.). analizar:-repeat,

write(' /_\\ | \\| | /_\\ | | |_ _|_ / /_\\ | \\ / _ \\| _ \\ / __|_ _| \\| |_ _/_\\ / __|_ _|_ _/ __/ _ \\ / __| | / __|'),nl,

write(' / _ \\| .` |/ _ \\| |__ | | / / / _ \\| |) | (_) | / \\__ \\| || .` | | |/ _ | (__ | | | | (_| (_) | | (_ | |_| (__'),nl, write('/_/ \\_|_|\\_/_/ \\_|____|___/___/_/ \\_|___/ \\___/|_|_\\ |___|___| _|\\_| |_/_/ \\_\\___| |_| |___\\___\\___/ \\___|____\\___|'),nl, write('Introduzca la opción:'), nl, write(' '), nl, write('Pulsa 1 para empezar'), nl, write('Pulsa 0 para salir'), nl, read(X), comprobar_respuesta(X), X==0,!,nl,nl,writeln('¡Adios!'),nl. %Si el usuario elige 1... %...Debera introducir la oracion en formato lista comprobar_respuesta(1):writeln('Introduce la oración:'),read(L),pre_proc(L),!. %...Si el usuario elige 0: Fin del programa comprobar_respuesta(0):-!.

2.2- Diccionario El diccionario contiene todos los términos que el analizador es capaz de interpretar. Cada uno de los términos básicos como nombres propios, adjetivos, verbos, pronombres, preposiciones,conjunciones, artículos y adverbios presentan sus propias características de género, número y persona, según proceda. Además, se ha añadido algún término más específico para facilitar el análisis sintáctico, como puede ser el caso del verbo sustantivado o el cuantificador. %Verbos(persona y numero) verbo(vrb(X), Num, Per) --> [X],{v(X,Num, Per)}. v(ama,sing,3). v(come,sing,3). v(comen,plural,3). v(hace,sing,3). v(habla,sing,3). v(canta,sing,3). v(alzó,sing,3). v(beben,plural,3). v(vimos,plural,1).

v(sirve,sing,3). v(es,sing,3). v(era,sing,3). v(son,plural,3). v(está,sing,3). v(depende,sing,3). v(salta,sing,3). v(sonríe,sing,3). v(compré,sing,1). v(toma,sing,3). v(estudia,sing,3). v(recoge,sing,3). v(cazó,sing,3). %Verbo sustantivado: para las oraciones subordinadas adverbiales %Ejemplo: para escribir documentos verbo_sustantivado(vs(X)) --> [X],{vs(X)}. vs(escribir). %Nombre: puede ser o nombre comun(Genero,Numero,Persona)... nombre(n(X), Gen, Num,Per) --> nombreComun(n(X), Gen, Num,Per). %...o nombre propio(Genero y Persona), pues el numero es singular. nombre(np(X), Gen, sing,Per) --> nombrePropio(np(X), Gen,Per). %nombre comun(Genero,Numero,Persona) nombreComun(n(X), Gen, Num,Per) --> [X], {n(X,Gen,Num,Per)}. n(hombre,masc,sing,3). n(mujer,fem,sing,3). n(gato,masc,sing,3). n(tenedor,masc,sing,3). n(cuchillo,masc,sing,3). n(práctica,fem,sing,3). n(profesor,masc,sing,3). n(profesores,masc,plural,3). n(canario,masc,sing,3). n(vuelo,masc,sing,3). n(esperanza,fem,sing,3). n(universidad,fem,sing,3). n(paloma,fem,sing,3). n(patatas,fem,plural,3). n(cerveza,fem,sing,3). n(reflejos,masc,plural,3). n(pantalón,masc,sing,3). n(vida,fem,sing,3). n(corbata,fem,sing,3). n(lugar,masc,sing,3). n(mesa,fem,sing,3). n(manzana,fem,sing,3). n(manzanas,fem,plural,3). n(niño,masc,sing,3). n(procesador,masc,sing,3). n(café,masc,sing,3). n(textos,masc,plural,3). n(nacimiento,masc,sing,3). n(herramienta,fem,sing,3). n(documentos,masc,plural,3). n(ratón,masc,sing,3). n(ratones,masc,plural,3). n(alumno,masc,sing,3). %nombre propio(Genero,Persona) %Los nombres propios, por si solos, pertenecen a la 3º persona del sing. nombrePropio(np(X), Gen,Per) --> [X], {np(X,Gen,Per)}. np('Héctor',masc,3). np('Irene',fem,3). np('Juan',masc,3). np('María',fem,3). np('Madrid',masc,3). %determinante(Genero,Numero) determinante(d(X), Gen, Num) --> [X], {d(X,Gen, Num)}. d(el, masc, sing). d(la, fem, sing). d(los, masc, plural). d(las, fem, plural). d(un, masc, sing). d(una, fem, sing). d(mi,_,sing). d(mis,_,plural). d(unos, masc, plural).

d(unas, fem, plural). d(su, masc, sing). %pronombre(Genero,Numero,Persona) pronombre(pr(X), Gen, Num,Per) --> [X], {pr(X,Gen,Num,Per)}. pr(ella, fem, sing,3). pr(él,masc,sing,3). pr(yo, masc, sing,1). pr(tú,masc,sing,2). pr(ellos, masc, plural,3). pr(ello, masc, sing,3). pr(ellas, fem, plural,3). pr(nosotros,masc,plura,1). pr(nosotras,fem,plural,1). pr(usted, _, sing,2). pr(ustedes, _, plural,2). pr(vosotros,masc,plural,2). pr(vosotras,fem,plural,2). pr(que,_,_,_). %adjetivo(Genero,Numero) adjetivo(a(X),Gen, Num) --> [X], {a(X,Gen, Num)}. a(guapo,masc,sing). a(guapa,fem,sing). a(grande,_,sing). a(blanca,fem,sing). a(lejos,masc,sing). a(lento,masc,sing). a(lenta,fem,sing). a(delicado,masc,sing). a(fritas,fem,plural). a(roja,fem,sing). a(alegre,_,sing). a(potente,_,sing). a(moreno,masc,sing). a(rojas,fem,plural). a(negros,masc,plural). a(negras,fem,plural). a(negro,masc,sing). a(negra,fem,sing). a(alta,fem,sing). a(gris,_,sing). %adverbio adverbio(adv(X)) --> [X], {adv(X)}. adv(bastante). adv(lejos). adv(cerca). adv(claramente). adv(mientras). adv(solamente). %preposicion para complementos del Adjetivo preposicionAdj(pAdj(X)) --> [X], {pAdj(X)}. pAdj(de). pAdj(en). %preposicion preposicion(p(X)) --> [X], {p(X)}. p(a). p(cabe). p(con). p(de). p(desde). p(en). p(hasta). p(para). conjuncion(c(X)) --> [X], {c(X)}. c(y). c(e). c(ni). c(u). c(pero). c(aunque).

c(mas). c(sino). %cuantificador cuantificador(cuant(X)) --> [X], {cuant(X)}. cuant(muy).

2.3- Gramática La gramática comprende todas las reglas que permiten analizar una estructura sintáctica. La codificación de este apartado es ciertamente compleja, pero podríamos distinguir 3 partes claras:

2.3.1- Primera parte distinguida - Comprobaciones y estudios iniciales La primera parte pretende iniciar las comprobaciones iniciales sobre la oración introducida de manera que se consiga: • Detectar si todos los términos de la oración son reconocibles por nuestro diccionario, de manera que no se analice la frase en dicho caso. • Detectar las características de la oración que nos permitan seguir una determinada estrategia de análisis: ◦ La identificación de características se centra en encontrar varios verbos en la oración, así como posibles estructuras que empiecen por “que”, de manera que se siga el protocolo asociado a oraciones complejas en vez de simples.

2.3.2- Segunda parte distinguida - Análisis sintáctico En la segunda parte nos encontramos con todas las reglas que realizan el análisis sintáctico de la oración. De manera general, el proceso es el siguiente: 1. Oraciones SIMPLES: 1. Discriminamos entre dos tipos de oraciones simples: aquella con gnominal + gverbal, y aquellas que únicamente presentan un gverbal. No permitimos oraciones con únicamente un gnominal puesto que no se consideran oraciones sino frases. %Oracion simple %Compuesta por: Grupo_nominal + Grupo Verbal... oracion(o(GN,GV)) --> g_nominal(GN,G,Num,Per), g_verbal(GV,G,Num,Per). %... O por un unico Grupo Verbal (sujeto omitido) oracion(o(GV)) --> g_verbal(GV,_,_,_).

2. Se realizan las reglas que detectan las diferentes estructuras posibles, por ejemplo, para el análisis de los grupos nominales, tenemos unas 13 reglas que recogen todas las estructuras especificadas en el enunciado de la práctica, así como con las necesidades encontradas a lo largo de la realización del programa. Vamos a comentar una de estas reglas, pero la lógica y el patrón aplicado es el mismo en prácticamente cualquier regla definida para cualquier otro grupo: %5º Regla de gnominal: det + nombre + adj g_nominal(gnom(D,N,GAdj),G,Num,Per) --> determinante(D, G, Num),nombre(N, G1, Num1,Per),concGen(G1,G),concNum(Num1,Num),g_adjetival(GAdj, G, Num).

Como vemos, la regla define una serie de elementos que se tienen que cumplir, como el determinante + nombre + grupo adjetival, pero, además, se tiene que comprobar en el proceso la concordancia entre diferentes características como el género o el número. Lo mismo sucede con otros grupos como el gverbal, veamos otro ejemplo: %6º Regla de gverbal: verbo + adv g_verbal(gvrb(V,GAdv),_,Num,Per) --> verbo(V,Num1,Per1), concP(Per,Per1),concNum(Num,Num1),g_adverbial(GAdv).

En este caso comprobamos que la estructura contenga un verbo+ un grupo adverbial, y además, comprobamos que haya concordancia de persona y de número. 2. Oraciones COMPUESTAS: 1. Discriminamos entre 3 grandes tipos de estructuras complejas( aunque luego en el tratamiento de las mismas surgen muchas variantes). Veamos el código %Oracion compuesta %¿Que tipos de oraciones compuestas hay? %1. Una conjuncion de varias oraciones: oracion coordinada %Este predicado se emplea para crear oraciones coordinadas que contienen, %a su vez, otros tipos de oraciones (coordinadas,subordinadas) oracion_comp(ocm(Conj,O)) --> conjuncion(Conj),oracion_comp(O). oracion_comp(ocm(O1,Conj,O2)) --> oracion_coord(O1,_,_),conjuncion(Conj),oracion_coord(O2,_,_). %2. Oraciones subordinadas. oracion_comp(ocm(GN,GV)) --> g_nominal(GN,_,Num,Per),g_verbal_sub(GV,Num,Per). %3. Oraciones relativas. oracion_comp(ocm(GN,GV)) --> g_nominal_rel(GN,G,Num,Per),g_verbal(GV,G,Num,Per). oracion_comp(ocm(GN,GV)) --> g_nominal_rel(GN,_,Num,Per),g_verbal_sub(GV,Num,Per).

2. Se realizan las reglas que detectan las diferentes estructuras posibles, aplicando prácticamente la mismas reglas que en las oraciones simples.

2.3.3- Tercera parte distinguida – Definición de las reglas de concordancia En la última parte distinguida del código que analiza las oraciones podemos destacar aquellas reglas encargadas de comprobar la concordancia de género, número y persona. Dichas reglas tienen en cuanta incluso aquellos casos más complejos como los que presentan sujeto múltiple, veamos este último caso: %Concordancia: ¿que ocurre si el sujeto tiene mas de un nucleo? %Ej: Maria y Juan. El y sus amigas. %Para establecer la concordancia en cuanto al genero: %1. Si uno de los dos nucleos es masculino, automaticamente el genero comun %pasara a ser masculino concGenN('masc',_,'masc',L,L):-true. concGenN(_,'masc','masc',L,L):-true. %2. Si uno de los dos nucleos es masculino PERO resulta que el adjetivo esta en %femenino (tercer parametro de entrada), dara entonces un error. concGenN('masc',_,'fem',L,L):-false. concGenN(_,'masc','fem',L,L):false.

Finalmente, las 3 partes distinguidas cooperan entre sí para conseguir el objetivo del programa, que no es nada más ni nada menos que realizar el árbol sintáctico de diversas oraciones (con ayuda de draw.pl).

El programa realizado contiene comentarios en prácticamente todo lo que se realiza para ayudar a entenderlo.

3. Resultados obtenidos Finalmente, a la vista de los resultados de analizar las 20 frases obligatorias podemos concluir que se realizan muy satisfactoriamente, incluso hemos comprobado con otros analizadores sintácticos online para tener cierta garantía de que estamos realizando correctamente el proceso, y ello nos permite confirmar que la programación funciona como debería. Veamos los 20 ejemplos de estudio: 1º Oración:El hombre grande come la manzana roja

4º Oración: Ella hace la práctica de Juan.

5º Oración:El canario de Juan y María canta

6º Oración: La blanca paloma alzó el vuelo

7º Oración: Esta

muy lejos de Madrid 8º Oración: Él es lento

de reflejos.

9º Oración: Juan habla muy claramente.

10º Oración:La esperanza de vida de un niño depende de su lugar de nacimiento.

11º Oración: El hombre que vimos en la Universidad era mi profesor.

12º Oración:Juan, que es muy delicado, come solamente manzanas rojas.

13º Oración: El procesador de textos, que es una herramienta muy potente, sirve para escribir documentos.

14º Oración: Juan es moreno y María es alta.

15º Oración: Juan recoge la mesa mientras María toma un cafe.

16º Oración: Compré un pantalon y una corbata negros.

17º Oración: Juan y Héctor comen patatas fritas y beben cerveza.

18º Oración: Irene canta y salta mientras Juan estudia.

19º Oración: Irene canta y salta y sonríe alegre.

20º Oración: El procesador de textos es una herramienta muy potente que sirve para escribir documentos pero es bastante lento.

Por último, quedaría comprobar el tema de gestión de errores de concordancias o de términos no definidos en el diccionario, y podemos decir que cumple el objetivo, pero no nos dimos cuenta de la problemática de nuestro sistema de concordancia hasta que ya era un poco tarde para solucionar el “inconveniente estético” de imprimir los errores de concordancia varias veces sin necesidad. Ello se debe a la forma de Prolog de trazar las reglas, y al tener las comprobaciones de concordancia en prácticamente todas las reglas sintácticas o por lo menos en las que sabemos que son “finales”, se puede producir la impresión del mismo mensaje varias veces, probablemente hubiera sido más conveniente propagar el error por todas las reglas al estilo de una lista de manera que en la raíz se gestionara dicho error. No obstante, veamos algunos ejemplos: 1º Error producido por palabra no definida en el diccionario:

2º Error producido por falta de concordancia de número:

Como vemos la impresión del error de concordancia número aparece varias veces debido a la manera de trabajar de prolog, así como de nuestro sistema de gestión de errores. 3º Error producido por falta de concordancia de género:

4º Error de concordancia verbal (número y persona) con sujeto múltiple:

5º Error de concordancia verbal con detección cuando hay varios verbos:

6º Error de concordancia entre sujeto y adjetivo, pero en oraciones complejas coordinadas:

Podríamos pensar que estas comprobaciones son más complejas y por tanto difíciles de gestionar, pero aunque nuestro sistema tenga el inconveniente de la impresión múltiple, es muy sencillo de extender e implementar, ya que, como se aprecia en el código, solo tengo que propagar en este caso el género y número del sujeto Juan por las sucesivas reglas, hasta que llegue, como en este caso, a un grupo adjetival el cual recibirá que el género de Juan es masculino, pero el de roja es femenino, generando el correspondiente error de concordancia. 7º Error de concordancia de número entre sujeto y verbo, pero en oraciones complejas coordinadas:

En este caso comen no concuerda con el sujeto que es singular.

En este otro caso el error se produce en otro verbo fuera del apartado del “que”. En definitiva, se gestionan prácticamente todos los errores propuestos más comunes y sencillos, así como alguno más “complejo” como el mostrado en el sétimo caso anterior. No obstante, recordemos que la lengua castellana es bastante compleja gramaticalmente, y es posible que muchas otras concordancias no se gestionen, pero se trataría de concordancias más complicadas y al trabajar con una gramática sencilla no nos extendemos en exceso. Aun así, el sistema está perfecto para programar las características de concordancia, por eso muchas otras reglas en las que no se ha detectado concordancias sencillas tiene el placeholder “_ ” sobre el cual se podrían implementar parámetros de género, número y/o persona para complicar aún más la concordancia de las oraciones.

ANEXO Ofrecemos las listas de entrada para probar las oraciones, para que simplemente sea copiar y pegar: 1.Consula: [el,hombre,grande,come,la,manzana,roja]. 2.Consulta: [el,hombre,con,un,tenedor,grande,come,la,manzana,roja]. 3.Consulta: ['Juan',y,'María',comen,la,manzana,roja,con,un,tenedor,y,un,cuchillo]. 4.Consulta: [ella,hace,la,práctica,de,'Juan']. 5.Consulta: [el,canario,de,'Juan',y,'María',canta]. 6.Consulta: [la,blanca,paloma,alzó,el,vuelo]. 7.Consulta: [está,muy,lejos,de,'Madrid']. 8.Consulta: [él,es,lento,de,reflejos]. 9.Consulta: ['Juan',habla,muy,claramente]. 10.Consulta: [la,esperanza,de,vida,de,un,niño,depende,de,su,lugar,de,nacimiento]. 11.Consulta: [el,hombre,que,vimos,en,la,universidad,era,mi,profesor]. 12.Consulta:

['Juan',que,es,muy,delicado,come,solamente,manzanas,rojas]. 13.Consulta: [el,procesador,de,textos,que,es,una,herramienta,muy,potente,sirve,para,escribir,documentos]. 14.Consulta: ['Juan',es,moreno,y,'María',es,alta]. 15.Consulta: ['Juan',recoge,la,mesa,mientras,'María',toma,un,café]. 16.Consulta: [compré,un,pantalón,y,una,corbata,negros]. 17.Consulta: ['Juan',y,'Héctor',comen,patatas,fritas,y,beben,cerveza]. 18.Consulta: ['Irene',canta,y,salta,mientras,'Juan',estudia]. 19.Consulta: ['Irene',canta,y,salta,y,sonríe,alegre]. 20.Consulta: [el,procesador,de,textos,es,una,herramienta,muy,potente,que,sirve,para,escribir,documentos,pero,es,bastante,lento]. Frases sencillas 1.Consulta: [el,hombre,come,una,manzana]. 2.Consulta: [la,mujer,come,manzanas]. 3.Consulta: ['María',come,una,manzana,roja]. 4.Consulta: ['Juan',ama,a,'María']. 5.Consulta: [el,gato,grande,come,un,ratón,gris]. 6.Consulta: ['Juan',estudia,en,la,universidad]. 7.Consulta: [el,alumno,ama,la,universidad]. 8.Consulta: [el,gato,come,ratones]. 9.Consulta: [el,ratón,que,cazó,el,gato,era,gris]. 10.Consulta: [la,universidad,es,grande]....


Similar Free PDFs