Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoria AnalizadorSintactico PDF
Memoria AnalizadorSintactico PDF
CLÁUSULAS DEFINIDAS EN
PROLOG
Analizador Sintáctico
analizar:-repeat,
write(' /_\\ | \\| | /_\\ | | |_ _|_ / /_\\ | \\ / _ \\| _ \\ / __|_
_| \\| |_ _/_\\ / __|_ _|_ _/ __/ _ \\ / __| | / __|'),nl,
2.2- Diccionario
%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).
%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
preposicion(p(X)) --> [X], {p(X)}.
p(a).
p(cabe).
p(con).
p(de).
p(desde).
p(en).
p(hasta).
p(para).
%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. 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.
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:
20º Oración: El procesador de textos es una herramienta muy potente que sirve para
escribir documentos pero es bastante lento.
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:
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 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].