5. Redes Semanticas y Lenguaje Natural - Redes Sem´nticas...

Info iconThis preview shows pages 1–5. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Redes Sem´nticas a Las redes sem´nticas son estructuras utilizadas para la representaci´n a o de conocimiento en Inteligencia Artificial. Son especialmente utiles para representar conocimiento de ´ taxonom´ ıas. Una red sem´ntica es un grafo dirigido en el cual los nodos a corresponden a: Constantes de Relaci´n tales como clases (como en los lenguaje o orientado a objetos) y propiedades. Instancias: objetos de alguna clase. Jorge Baier (DCC-PUC) Intro a Prolog 1 / 53 Redes Sem´nticas I a Un arco en una red sem´ntica puede tener diversas etiquetas: a Instancia de o id, definidas entre objetos y clases. Si NO es un nodo que representa a un objeto O (instancia) y NC es un nodo para una clase C , entonces un arco de instancia une a NO y NC en el grafo para indicar que O pertenece a la clase C . Subclase de o sd, definidas entre subclases y clases. Si NSC es un nodo que representa a una clase SC y NC es un nodo para una clase C , entonces un arco de subclase une a NSC y NC en el grafo para indicar que SC es subclase de C . Otras etiquetas que representan atributos de clases. Por ejemplo, podemos considerar las etiquetas “tiene” o t y “come”o c. En la figura, se muestra un ejemplo de una red sem´ntica la cual a tenemos dos objetos Piolin y Pedro y diversas clases de objetos. De esta red, se puede inferir que Piolin es un canario y que, dado que tambi´n es un Ave que tiene Alas. e Jorge Baier (DCC-PUC) Intro a Prolog 2 / 53 Redes Sem´nticas II a Alas t t Plumas Ave t Deseos Semillas c sd Halcon id Canario Pedro id Piolin Instancia Subclase Jorge Baier (DCC-PUC) Intro a Prolog 3 / 53 Representaci´n de Redes Sem´nticas en Prolog I o a Se pueden usar los siguientes predicados para modelar el grafo que se representa: instancia de(Objeto,Clase): es utilizado para decir que un Objeto pertenece a una Clase determinada. instancia_de(piolin,canario). instancia_de(pedro,halcon). subclase de(Clase1,Clase2): indica que la Clase1 est´ contenida en a o forma parte de la Clase2. Para la red de la figura, tendremos: subclase_de(canario,ave). subclase_de(halcon,ave). tiene propiedad(Clase1,Propiedad,Clase2): Esto involucra una relaci´n entre dos clases e indica que Clase1) o est´ relacionada con Clase2 mediante la propiedad a Propiedad. Para la red de la figura: Jorge Baier (DCC-PUC) Intro a Prolog 4 / 53 Representaci´n de Redes Sem´nticas en Prolog II o a tiene_propiedad(canario,come,semillas). tiene_propiedad(ave,tiene,alas). tiene_propiedad(ave,tiene,plumas). tiene_propiedad(halcon,tiene,deseos). Para que nuestra red sem´ntica sea m´s interesante, consideremos el a a siguiente conjunto de cl´usulas: a instancia_de(tweety,canario). instancia_de(pedro,halcon). instancia_de(juan,halcon). instancia_de(juancho,cocodrilo). instancia_de(marcela,pinguino). subclase_de(ave,oviparo). subclase_de(reptil,oviparo). subclase_de(canario,ave). subclase_de(halcon,ave). Jorge Baier (DCC-PUC) Intro a Prolog 5 / 53 Representaci´n de Redes Sem´nticas en Prolog III o a subclase_de(ave,animal). subclase_de(reptil,animal). subclase_de(cocodrilo,reptil). subclase_de(pinguino,ave). tiene_propiedad(canario,come,semillas). tiene_propiedad(ave,tiene,alas). tiene_propiedad(ave,tiene,plumas). tiene_propiedad(halcon,tiene,deseos). tiene_propiedad(ave,puede,volar). tiene_propiedad(reptil,tiene,escamas). Dada una red sem´ntica, uno desea ser capaz de realizar consultas a relativas a la red. Por ejemplo, ¿es hector un ave? O bien, en forma m´s a general, querremos responder la pregunta ¿a qu´ clase pertenece un e objeto? Para esto, podemos escribir: Jorge Baier (DCC-PUC) Intro a Prolog 6 / 53 Representaci´n de Redes Sem´nticas en Prolog IV o a es(Clase,Obj):- instancia_de(Obj,Clase). es(Clase,Obj):- instancia_de(Obj,Clasep), subc(Clasep,Clase). subc(C1,C2):- subclase_de(C1,C2). subc(C1,C2):- subclase_de(C1,C3), subc(C3,C2). El predicado es(Clase,X) se satisface cuando X pertenece a la clase Clase. ?- es(X,juan). X = halcon ; X = ave ; X = oviparo ; X = animal ; No ?- es(animal,X). X = piolin ; Jorge Baier (DCC-PUC) Intro a Prolog 7 / 53 Representaci´n de Redes Sem´nticas en Prolog V o a X= X= X= X= No pedro ; juan ; juancho ; marcela ; Supongamos que queremos preguntar qu´ propiedades tienen los objetos: e propiedad(Obj,Prop):- es(Clase,Obj), tiene_propiedad(Clase,Fun,Arg), Prop =.. [Fun,Arg]. As´ observamos lo siguiente: ı, Jorge Baier (DCC-PUC) Intro a Prolog 8 / 53 Representaci´n de Redes Sem´nticas en Prolog VI o a ?- propiedad(piolin,X). X = come(semillas) ; X = tiene(alas) ; X = tiene(plumas) ; X = puede(volar) ; No Ahora, supongamos que queremos establecer que los ping¨inos no pueden u volar. Suponga entonces que agregamos: tiene_propiedad(pinguino,no_puede,volar). Con lo cual observamos: Jorge Baier (DCC-PUC) Intro a Prolog 9 / 53 Representaci´n de Redes Sem´nticas en Prolog VII o a ?- propiedad(marcela,X). X = no_puede(volar) ; X = tiene(alas) ; X = tiene(plumas) ; X = puede(volar) ; No Obviamente, obtenemos que Marcela puede y no puede volar. Esto ocurre pues no hemos incorporado la informaci´n de incompatibilidad entre o puede y no puede. Para realizar esto, podemos inventar un nuevo predicado incompatible(Prop1,Prop2). En el ejemplo, escribiremos: incompatible(puede(X),no_puede(X)). Jorge Baier (DCC-PUC) Intro a Prolog 10 / 53 Representaci´n de Redes Sem´nticas en Prolog VIII o a De modo que volar y no volar son propiedades incompatibles. Ahora, ¿c´mo manejamos esta informaci´n de incompatibilidad al responder o o consultas? Un primer intento se observa en la siguiente redefinici´n del predicado o propiedad. es(Clase,Obj,0):- instancia_de(Obj,Clase). es(Clase,Obj,Prio):- instancia_de(Obj,Clasep), subcn(Clasep,Clase,Prio). subcn(C1,C2,1):- subclase_de(C1,C2). subcn(C1,C2,N):- subclase_de(C1,C3), subcn(C3,C2,M), N is M+1. propiedad(Obj,Prop,Prio):es(Clase,Obj,Prio), tiene_propiedad(Clase,Fun,Arg), Jorge Baier (DCC-PUC) Intro a Prolog 11 / 53 Representaci´n de Redes Sem´nticas en Prolog IX o a Prop =.. [Fun,Arg]. propiedad(Obj,Prop):- propiedad(Obj,Prop,Prio), \+ incomp(Obj,Prop,Prio). incomp(Obj,Prop,Prio):- incompatible(Prop,Propp), propiedad(Obj,Propp,Priop), Priop =< Prio. Obs´rvese que se redefinen algunos conceptos incorporando una medida de e distancia. De modo que las incompatibilidad se resuelven apelando a la especificidad. Esto es, si un objeto hereda dos propiedades incompatibles, entonces se acepta aquella que es m´s espec´ a ıfica. As´ en el caso de ı, marcela, observaremos: Jorge Baier (DCC-PUC) Intro a Prolog 12 / 53 Representaci´n de Redes Sem´nticas en Prolog X o a | ?- propiedad(marcela,X). X = no_puede(volar) ; X = tiene(alas) ; X = tiene(plumas) ; No N´tese que el manejo de incompatibilidades no funciona cuando se o heredan propiedades de clases a igual distancia. ¿Qu´ ocurre en nuestra e implementaci´n? o Jorge Baier (DCC-PUC) Intro a Prolog 13 / 53 Extensiones de Redes Sem´nticas I a Las redes sem´nticas son f´ciles de extender para modelar casi a a cualquier propiedad en representaci´n de conocimiento taxon´mico. o o Sin embargo, como la sem´ntica es poco claro, ser´ complejo pensar a ıa en intercambiar conocimiento entre distintas aplicaciones que funcionan con este sistema. Pensando en el intercambio de conocimiento (especialmente orientado al Web Sem´ntico) hoy en d´ se est´n desarrollando lenguajes que se a ıa a fundan en las redes sem´nticas. a RDF (Resource Description Language) es uno de estos lenguajes, La descripci´n de distintas “areas de conocimiento” usando este o lenguaje se conocen como ontolog´ . ıas El siguiente es un ejemplo de descipci´n de una clase: o Jorge Baier (DCC-PUC) Intro a Prolog 14 / 53 Extensiones de Redes Sem´nticas II a <!-- Definicion de clases subclases --> <daml:Class rdf:ID="Product"> <rdfs:label>Product</rdfs:label> <rdfs:comment>An item sold by Super Sports Inc.</rdfs:comment> </daml:Class> <daml:Class rdf:ID="BackPack"> <rdfs:label>Back Pack</rdfs:label> <rdfs:subClassOf rdf:resource="#Product"/> </daml:Class> <!-- Definici´n de Propiedades --> o <daml:ObjectProperty rdf:ID="usedFor"> <rdfs:label>usedFor</rdfs:label> <rdfs:comment>The activity for which a product is used</rdfs:comment> <daml:domain rdf:resource="#Product"/> <daml:range rdf:resource="#Activity"/> </daml:ObjectProperty> <!-- Definici´n de una instancia --> o <ss:BackPack rdf:ID="ReadyRuck"> <rdfs:label>Ready Ruck back pack</rdfs:label> <rdfs:comment>The ideal pack for your most rugged adventures</rdfs:comment> <ss:productNumber>23456</ss:productNumber> <ss:packCapacity>45</ss:packCapacity> <ss:usedFor rdf:resource="#Hiking"/> Jorge Baier (DCC-PUC) Intro a Prolog 15 / 53 Extensiones de Redes Sem´nticas III a </ss:BackPack> Actualmente, hay proyectos en los que se pretende modelar todo el conocimiento de sentido com´n. u El proyecto OpenCyc, contiene una ontolog´ con unos 47.000 ıa conceptos y m´s de 306.000 afirmaciones sobre ellos. a Jorge Baier (DCC-PUC) Intro a Prolog 16 / 53 Procesamiento de Lenguaje Natural en Prolog Antes discutimos por qu´ queremos hacer esto. e Pero nuestra soluci´n ten´ un gran defecto: poca flexibilidad. o ıa Veremos ahora c´mo es posible extender nuestro ejemplo a un caso o bastante m´s general. a Jorge Baier (DCC-PUC) Intro a Prolog 17 / 53 Elementos del lenguaje natural I Varios aspectos esenciales que es necesario manejar al momento de construir un sistema de lenguaje natural. Algunos de ellos son: Morfolog´ Se preocupa de la composici´n de las palabras. A partir de la ıa o morfolog´ es posible obtener informaci´n sobre la funci´n de ıa o o las palabras. Ejemplo: in-determinada-mente. Sintaxis La sintaxis describe la forma del lenguaje. Est´ especificada a usualmente por una gram´tica. Los lenguajes naturales son a complicados de definir con herramientas formales, como gram´ticas libres de contexto. a Sem´ntica La sem´ntica define el significado de oraciones, frases y a a expresiones del lenguaje. Pragm´tica La pragm´tica explica c´mo una frase se relaciona con el a a o contexto en el cual se est´ hablando. a Jorge Baier (DCC-PUC) Intro a Prolog 18 / 53 Elementos del lenguaje natural II Para entender completamente el significado de los tres ultimos aspectos, ´ consideremos las siguientes oraciones que se podr´ haber dicho en la ıan introducci´n de este curso: o ´ Este es un curso de Inteligencia Artificial Las ranas hacen ruido mientras duermen Las furiosas iguanas verdes y sin color, duermen placenteramente. Cuatro elefantes en desde siempre ocho. Dentro de esta clase, la primera frase tiene sentido en los tres aspectos. La segunda s´lo en los dos primeros, la tercera, s´lo en la sintaxis. La ultima o o ´ frase no tiene sentido ni sint´ctico ni sem´ntico ni pragm´tico. a a a Jorge Baier (DCC-PUC) Intro a Prolog 19 / 53 An´lisis Sint´ctico de Lenguajes Naturales a a En esta secci´n veremos algunos elementos computacionales para el o an´lisis frases del lenguaje natural. a A nivel sint´ctico, los lenguajes est´n definidos por las oraciones a a legales que pertenecen a ellos. Las oraciones son secuencias de s´ ımbolos. Las oraciones legales de un lenguaje natural son analizadas a trav´s e de la gram´tica del lenguaje. a Jorge Baier (DCC-PUC) Intro a Prolog 20 / 53 Gram´tica Castellana I a El la gram´tica castellana, por ejemplo, se distingue los siguientes a elementos esenciales para expresar ideas o afirmaciones: Frases: expresan una idea, sin juicio ni aserci´n asociada. o Ejemplo “de vez en cuando”. Oraciones: Es una unidad intencional de la gram´tica. Contiene a afirmaciones o juicios. Una oraci´n siempre contiene al o menos un verbo. Bimembres: Similares a las oraciones, pero no tienen verbo. Ejemplo: “Buenos d´ a todos”. ıas Per´ ıodo: Serie de oraciones, frecuentemente separadas por un ;. T´ ıpicamente, una oraci´n est´ compuesta por un sujeto y un o a predicado. El sujeto es de quien se habla en la oraci´n. o El predicado es lo que se dice del sujeto. Jorge Baier (DCC-PUC) Intro a Prolog 21 / 53 Gram´tica Castellana II a Tanto el sujeto como el predicado pueden tener complementos. Estos complementos se clasifican en tipos. Las siguientes frases muestran ejemplos de frases legales del castellano: ￿ El ￿￿￿￿ art. comp. explicativo Las oraciones del castellano no tienen todas esta estructura. Por ejemplo, las siguientes oraciones tambi´n son legales: e Nos encontramos al lado del food garden. Llov´ a c´ntaros. ıa a Felipe y Andr´s han salido. e ￿￿ joven ￿ ￿￿ ￿ sujeto ￿￿ ￿￿ ￿ dinosaurio come ´rboles￿￿ a maduros ￿ ￿￿ ￿ ￿ ￿￿ ￿ ￿ ￿ n´cleo u n´cleo u comp. directo predicado Jorge Baier (DCC-PUC) Intro a Prolog 22 / 53 Gram´ticas Libres de Contexto y LNs I a Para poder analizar en lenguaje natural de manera computacional, necesitamos elementos para analizar computacionalmente las oraciones del lenguaje. Para realizar an´lisis sint´ctico de lenguajes formales se utilizan con a a frecuencia las gram´ticas libres de contexto. a En el procesamiento de lenguaje natural, tambi´n se utilizan estos e formalismos. Una gram´tica libre de contexto G es una tupla G = (V , T , P , S ), a donde V T P S es un conjunto de variables, un conjunto de terminales, son las producciones y es el s´ ımbolo inicial de la gram´tica. a Jorge Baier (DCC-PUC) Intro a Prolog 23 / 53 Gram´ticas Libres de Contexto y LNs II a Si T = {a, b , c } y P est´ compuesto por las siguientes producciones: a S →c S → aSb Entonces decimos que la gram´tica genera la palabra aaacbbb a porque, desde el s´ ımbolo inicial S es posible producir dicha palabra: S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaacbbb El lenguaje formal generado por esta gram´tica est´ descrito por a a L = {ai cb i |i ≥ 0}. Jorge Baier (DCC-PUC) Intro a Prolog 24 / 53 GLCs y castellano I Por ejemplo, para el castellano podr´ ıamos definir la siguiente producci´n para oraciones: o [oracion] → [sujeto] [predicado] Aqu´ la variable oraci´n describe todas las oraciones que son v´lidas ı o a en el lenguaje castellano y que est´n compuestas por un sujeto a seguido de un predicado. Antes de continuar, veremos c´mo es posible manejar directamente o las GLCs en Prolog. Jorge Baier (DCC-PUC) Intro a Prolog 25 / 53 Manejos de GLCs en Prolog I En Prolog es posible manejar GLC directamente. El siguiente es el c´digo Prolog para nuestros ejemplos: o s --> [c]. s --> [a],s,[b]. oracion --> sujeto,predicado. donde los terminales est´n entre par´ntesis cuadrados y las variables a e se escriben directamente. A partir de esta especificaci´n, Prolog genera las siguientes reglas: o Jorge Baier (DCC-PUC) Intro a Prolog 26 / 53 Manejos de GLCs en Prolog II s([c|A], A). s(A, B) :A = [a|C], s(C, D), D = [b|B]. oracion(A, B) :sujeto(A, C), predicado(C, B). El predicado s(L,R) se satisface si L es una lista de ´tomos generada a por la variable s de la gram´tica m´s un resto R. As´ a a ı: ?- s([a,a,a,c,b,b,b,j],L). L = [j] ; No Es posible generar todas las palabras generadas por la gram´tica con a la siguiente consulta: Jorge Baier (DCC-PUC) Intro a Prolog 27 / 53 Manejos de GLCs en Prolog III ?- s(L,). L = [c] ; L = [a, c, b] L = [a, a, c, L = [a, a, a, L = [a, a, a, Yes ; b, b] ; c, b, b, b] ; a, c, b, b, b, b] Es necesario tener cuidado con ciertas gram´ticas, que por su orden a ´ de escritura, pueden conducir comportamientos indeseables. Este es el caso de: s --> s,[c]. s --> [c]. que no responde frente a la consulta s(L,). Jorge Baier (DCC-PUC) Intro a Prolog 28 / 53 Procesamiento de Lenguaje Natural en Prolog I Supongamos que proponemos la siguiente GLC para un castellano simplificado: oracion --> sujeto,predicado. sujeto sujeto sujeto sujeto --> --> --> --> pronombre_personal. articulo,sustantivo. articulo,sustantivo,adjetivo. sujeto,conjuncion,sujeto. Una oracion es un sujeto seguido de un predicado. N´tese que o tenemos dos definiciones para un sujeto. A continuaci´n definimos el resto de las producciones, las que o incluyen los terminales de la gram´tica. a Jorge Baier (DCC-PUC) Intro a Prolog 29 / 53 Procesamiento de Lenguaje Natural en Prolog II articulo --> [el];[la];[los];[las]. sustantivo --> [casa];[arbol];[gato];[gata]; [perro];[avion];[mesa]. adjetivo --> [bello];[grande];[chico]. pronombre_personal --> [cecilia];[soledad];[hernan]. conjuncion --> [y];[o]. predicado --> verbo,complemento. complemento --> complemento_directo. complemento --> complemento_directo, complemento_indirecto. Jorge Baier (DCC-PUC) Intro a Prolog 30 / 53 Procesamiento de Lenguaje Natural en Prolog III complemento_directo --> sujeto. verbo --> [tiene];[tienen];[juega];[canta];[salta]. Con esta definici´n, podemos hacer la siguiente consulta: o ?- oracion([cecilia,y,hernan,tienen,el,avion,grande],). Yes Adem´s: a ?- oracion(L,). L = [cecilia, tiene, L = [cecilia, tiene, L = [cecilia, tiene, L = [cecilia, tiene, Yes cecilia] ; soledad] ; hernan] ; el, casa] Evidentemente los resultados no son completamente satisfactorios. Debido a problemas en el n´mero y g´nero. u e Jorge Baier (DCC-PUC) Intro a Prolog 31 / 53 Procesamiento de Lenguaje Natural en Prolog IV Aparte de los problemas de n´mero y g´nero, ¿se pueden producir u e otros? La respuesta es s´. Dado que la definici´n de sujeto es recursiva por ı o la izquierda, Prolog falla frente a algunas consultas, por ejemplo: ?- oracion([cecilia,y,hernan],). ERROR: Out of local stack Para solucionar este problema, se puede reescribir la gram´tica de a manera que deje de ser recursiva por la izquierda. Jorge Baier (DCC-PUC) Intro a Prolog 32 / 53 Agregando N´mero y G´nero I u e Es posible agregar argumentos a las variables de las gram´ticas. As´ a ı, la siguiente gram´tica soluciona nuestro problema. a oracion --> sujeto(G,N),predicado(G,N). sujeto(G,s) --> pronombre_personal(G). sujeto(G,N) --> articulo(G,N),sustantivo(G,N). sujeto(m,p) --> pronombre_personal(G), conjuncion, sujeto(_,_). sujeto(m,p) --> articulo(G,N),sustantivo(G,N), conjuncion, sujeto(_,_). Jorge Baier (DCC-PUC) Intro a Prolog 33 / 53 Agregando N´mero y G´nero II u e articulo(f,s) articulo(f,p) articulo(m,s) articulo(m,p) --> --> --> --> [la];[una]. [las];[unas]. [el];[un]. [los];[unos]. sustantivo(m,s) sustantivo(m,f) sustantivo(f,s) sustantivo(f,p) --> --> --> --> [gato];[arbol]. [gatos];[arboles]. [gata];[mesa]. [luces];[gatas]. pronombre_personal(f) --> [cecilia];[soledad]. pronombre_personal(m) --> [hernan]. conjuncion --> [y];[o]. predicado(G,N) --> verbo(G,N),complemento. Jorge Baier (DCC-PUC) Intro a Prolog 34 / 53 Agregando N´mero y G´nero III u e complemento --> complemento_directo. complemento --> complemento_directo, complemento_indirecto. complemento_indirecto --> preposicion,sujeto(_,_). preposicion --> [a];[sobre];[bajo];[de];[desde];[hacia]. complemento_directo --> sujeto(_,_). verbo(_,s) --> [tiene];[come];[duerme];[salta];[es]. verbo(_,p) --> [tienen];[comen];[duermen];[saltan];[son]. As´ ı, Jorge Baier (DCC-PUC) Intro a Prolog 35 / 53 Agregando N´mero y G´nero IV u e ?- oracion([soledad,y,hernan,tienen,una,gata,bajo,la,mesa],). Yes ?- oracion([soledad,y,hernan,tiene,una,gata,bajo,la,mesa],). No Jorge Baier (DCC-PUC) Intro a Prolog 36 / 53 Introducci´n al An´lisis Sem´ntico I o a a Hasta el momento s´lo hemos dado una idea de c´mo reconocer o o sint´cticamente las frases, pero no nos hemos preocupado de su a significado, ni menos c´mo utilizar este significado. o Es posible hacer que Prolog construya una representaci´n de las o oraciones. Esto se hace agregando un argumento extra a las variables de la gram´tica. a En el siguiente ejemplo, nos aprovecharemos del hecho que es posible insertar c´digo Prolog directamente en la especificaci´n de una o o gram´tica libre de contexto. a As´ ı: sustantivo --> [X],{member(X,[gato,casa,auto])}. Es equivalente a escribir: sustantivo --> [gato];[casa];[auto]. Jorge Baier (DCC-PUC) Intro a Prolog 37 / 53 Introducci´n al An´lisis Sem´ntico II o a a oracion(oracion(Sujeto,Predicado)) --> sujeto(Sujeto,G,N), predicado(Predicado,G,N). sujeto(sujeto(Pron),G,s) --> pronombre_personal(Pron,G). sujeto(sujeto(Art,Sust),G,N) --> articulo(Art,G,N),sustantivo(Sust,G,N). sujeto(sujeto(Pron,Conj,Suj),m,p) --> pronombre_personal(Pron,G), conjuncion(Conj), sujeto(Suj,_,_). sujeto(sujeto(sujeto(Art,Sust),Conj,Suj),m,p) --> articulo(Art,G,N),sustantivo(Sust,G,N), conjuncion(Conj), sujeto(Suj,_,_). Jorge Baier (DCC-PUC) Intro a Prolog 38 / 53 Introducci´n al An´lisis Sem´ntico III o a a articulo(art(fs,la),f,s) --> [la]. articulo(art(fs,una),f,s) --> [una]. articulo(art(fp,las),f,p) --> [las]. articulo(art(fp,unas),f,p) --> [unas]. articulo(art(ms,el),m,s) --> [el]. articulo(art(ms,un),m,s) --> [un]. articulo(art(mp,los),m,p) --> [los]. articulo(art(mp,unos),m,p) --> [unos]. sustantivo(sust(ms),m,s) sustantivo(sust(mf),m,f) sustantivo(sust(fs),f,s) sustantivo(sust(fp),f,p) --> --> --> --> [gato];[arbol]. [gatos];[arboles]. [gata];[mesa]. [luces];[gatas]. pronombre_personal(pron(f,X),f) --> {X=cecilia;X=soledad},[X]. Jorge Baier (DCC-PUC) Intro a Prolog 39 / 53 Introducci´n al An´lisis Sem´ntico IV o a a pronombre_personal(pron(m,X),m) --> {X=miguelito;X=donald},[X]. conjuncion(conj(X)) --> {X=y;X=o},[X]. predicado(predicado(Verbo,Comp),G,N) --> verbo(Verbo,G,N),complemento(Comp). complemento(complmento(Comp)) --> complemento_directo(Comp). complemento(complmento(Comp1,Comp2)) --> complemento_directo(Comp1), complemento_circunstancial(Comp2). complemento_circunstancial(compcirc(Prep,Suj)) --> preposicion(Prep),sujeto(Suj,_,_). preposicion(prep(X)) --> {X=a;X=sobre;X=bajo;X=de},[X]. Jorge Baier (DCC-PUC) Intro a Prolog 40 / 53 Introducci´n al An´lisis Sem´ntico V o a a complemento_directo(compdir(Suj)) --> sujeto(Suj,_,_). verbo(verb(X,s),_,s) --> {member(X,[tiene,come,duerme,salta,es])},[X]. verbo(verb(X,p),_,p) --> {member(X,[tienen,comen,duermen,saltan,son])},[X]. Jorge Baier (DCC-PUC) Intro a Prolog 41 / 53 Introducci´n al An´lisis Sem´ntico VII o a a As´ se puede construir un ´rbol de parse a partir de nuestra ı, a especificaci´n: o ?- oracion(X,[cecilia,y,soledad,duermen,el,arbol,sobre,la,mesa],). X = oracion(sujeto(pron(f, cecilia), conj(y), sujeto(pron(f, soledad))), predicado(verb(duermen, p), complmento(compdir(sujeto(art(ms, el), sust(ms))), compind(prep(sobre), sujeto(art(fs, la), sust(fs)))))) Jorge Baier (DCC-PUC) Intro a Prolog 43 / 53 Otro ejemplo I Esta es una versi´n mucho m´s completa del ejemplo que vimos al o a principio de esta secci´n. o El ejemplo que se muestra a continuaci´n muestra un programa que o es capaz de construir reglas a partir de informaci´n que se le entrega o en lenguaje natural. oracion --> sujeto_generico(Clase,Cond,Var), predicado(Pred,Var), {write(’Agrego a la base de datos:’), nl, (Cond=true -> write((Pred:-Clase)); write((Pred:-Cond,Clase)) )}. oracion --> sustantivo_propio(Nombre), predicado(Pred,Nombre), {write(’Agrego a la base de datos:’),nl,write((Pred))}. predicado(Pred,Var) --> verbo_intransitivo(Verb), {Pred=..[Verb,Var]}. Jorge Baier (DCC-PUC) Intro a Prolog 44 / 53 Otro ejemplo II predicado(Pred,Var) --> verbo_transitivo(V), sustantivo(S), {Pred=..[V,S,Var]}. predicado(Pred,Var) --> verbo_transitivo(V), adverbio(A), {Pred=..[V,A,Var]}. predicado(Pred,Var) --> [es],[un],nombre_clase(C),{Pred=..[C,Var]}. verbo_intransitivo(V) --> [V], {member(V,[ladra,vuela,corre,juega])}. verbo_transitivo(V) --> [V], {member(V,[come,tiene,sabe,conoce,cuida])}. sujeto_generico(Clase,Cond,Var) --> [todo],nombre_clase(X), { Clase=..[X,Var], Cond=true }. sujeto_generico(Clase,Cond,Var) --> [todo],nombre_clase(X), [que],condiciones(Cond,Var), Jorge Baier (DCC-PUC) Intro a Prolog 45 / 53 Otro ejemplo III { Clase=..[X,Var] }. condicion(V) --> verbo_intransitivo(V). condiciones((Cond),Var) --> condicion(F), { Cond=..[F,Var] }. condiciones((Cond,Conds),Var) --> condicion(F), ([y];[y],[que]), condiciones(Conds,Var), { Cond=..[F,Var] }. sustantivo_propio(X) --> [X], {member(X,[ana,luisa,juan])}. sustantivo(S) --> [S], {member(S,[alas,papas,canas,plumas,vida,auto])}. Jorge Baier (DCC-PUC) Intro a Prolog 46 / 53 Otro ejemplo IV adverbio(A) --> [A], {member(A,[bien,mal,rapidamente,lentamente])}. nombre_clase(X) --> [X], {member(X,[animal,perro,canario,avestruz,ave, libro,mueble,mesa,jugador,empedernido, hombre,mujer])}. El siguiente es un ejemplo de ejecuci´n: o ?- oracion([juan,come,papas],). Agrego a la base de datos: come(papas, juan) ?- oracion([todo,animal,que,vuela,es,un,ave],). Agrego a la base de datos: ave(_G288):-vuela(_G288), animal(_G288) Jorge Baier (DCC-PUC) Intro a Prolog 47 / 53 Otro ejemplo V ?- oracion([todo,avestruz,come,rapidamente],). Agrego a la base de datos: come(rapidamente, _G258):-avestruz(_G258) Yes ?- oracion([todo,animal,que,ladra,y,que,corre,es,un,perro],). Agrego a la base de datos: perro(_G318):- (ladra(_G318), corre(_G318)), animal(_G318) Jorge Baier (DCC-PUC) Intro a Prolog 48 / 53 Otras Herramientas I Uno de los formalismos que se han utilizado para procesar lenguaje natural en dominios m´s complejos es el c´lculo lambda (lambda a a calculus). Es posible usar este formalismo cuando la estructura de las oraciones se puede hacer muy compleja. Una expresi´n lambda λx . φ representa a una funci´n, por ejemplo: o o λx . come (x , Semillas ) λx . λy . x + y Son λ-expresiones. Debido a que las expresiones lambda son funciones, es posible evaluar su valor en una expresi´n. o Jorge Baier (DCC-PUC) Intro a Prolog 49 / 53 Otras Herramientas III La expresi´n (λx φ)(a) corresponde a la expresi´n φ, pero donde toda o o ocurrencia de x se reemplaza por a. Por ejemplo: (λx . come (x , Semillas ))(Piolin) = come (Piolin, Semillas ) (λx . λy . x + y )(1) = λy . 1 + y ((λx . λy . x + y )(1))(2) = 1 + 2 La idea del uso de expresiones lambda es descomponer las subpartes de una oraci´n en t´rminos de estas expresiones. o e Pensemos, por ejemplo, en la frase “Kafka escribi´ Metamorfosis” o Jorge Baier (DCC-PUC) Intro a Prolog 51 / 53 Otras Herramientas IV Para el fragmento de frase “escribi´ Metamorfosis”, es posible escribir o la siguiente λ-expresi´n: o λx . escribio (x , Metamorfosis ) Usando esta idea, es posible escribir una regla de gram´tica muy a sencilla para las oraciones: Oracion(rel (obj )) → Sujeto (obj )Predicado (rel ) Donde rel corresponde a una relaci´n y obj a un objeto. o Observemos que si rel = λx . escribio (x , Metamorfosis ) y obj = Kafka entonces rel (obj ) = escribio (Kafka, Metamorfosis ). Jorge Baier (DCC-PUC) Intro a Prolog 52 / 53 Una Gram´tica Simple I a La siguiente gram´tica: a O (rel (obj )) → Suj (obj )Pred (rel ) Suj (obj ) → Nombre (obj ) Pred (rel (obj )) → Verb (rel )Suj (obj ) Nombre (Kafka) → Kafka Nombre (Metamorfosis ) → Metamorfosis Verb (λy .λx . escribio (x , y )) → escribi´ o Genera la oraci´n “Kafka escribi´ Metamorfosis”. o o Su ´rbol de derivaci´n se puede ver en la siguiente figura: a o Jorge Baier (DCC-PUC) Intro a Prolog 53 / 53 Una Gram´tica Simple II a O (escribio (Kafka, Metamorfosis ) Pred (λx . escribio (x , Metamorfosis )) Suj (Kafka) Suj (Metamorfosis ) Nombre (Kafka) Kafka Verb (λy .λx . escribio (x , y )) escribi´ o Nombre (Metamorfosis ) Metamorfosis Jorge Baier (DCC-PUC) Intro a Prolog 54 / 53 ...
View Full Document

This note was uploaded on 03/09/2011 for the course INGENIERIA 111 taught by Professor Jorgevera during the Spring '10 term at Pontificia Universidad Católica de Chile.

Page1 / 52

5. Redes Semanticas y Lenguaje Natural - Redes Sem´nticas...

This preview shows document pages 1 - 5. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online