Está en la página 1de 10

IA2 (2010-11) Trabajo NL (Procesamiento de Lenguaje Natural) Implementaci on de un algoritmo de unicaci on

Jos e F. Quesada

Introducci on

Una de las estrategias b asicas para llevar a cabo la representaci on y manipulaci on de informaci on sem antica en la Ingener a del Lenguaje Natural se basa en la utilizaci on de los algoritmos de unicaci on sobre estructuras complejas de rasgos. El objetivo de este trabajo es implementar un sistema que permita representar estas estructuras de datos y as mismo permita realizar operaciones de unicaci on sobre las mismas.

Denici on de estructuras complejas de rasgos

Con el objetivo de simplicar el alcance de este trabajo, se ofrece una denici on restringida y parcial de estas estructuras. En concreto, deniremos formalmente una estructura de rasgos como una funci on parcial desde un conjunto de atributos en un conjunto de valores. As por ejemplo, datos los conjuntos = {agr, gen, head, num, pers, tense} = {masc, f em, sing, pl, 1, 2, 3, pres, past, estudiar, estudio, estudiaba} el siguente conjunto 1 = {< head, comer >, < num, sing >, < pers, 3 >, < tense, pres >} dene una funci on parcial de en , es decir, una funci on que asigna por ejemplo al atributo head de el valor comer de , y as sucesivamente. Podemos indicar esto mediante la siguiente notaci on: 1

1 : Para incluir estructuras complejas en esta denici on (es decir, estructuras cuyos valores sean as mismo otras estructuras de rasgos), basta con permitir que el dominio del conjunto de la funci on parcial sea + . De esta forma podr amos denir un nueva funci on parcial: 2 = {< [head], estudiaba >, < [agr, num], sing >, < [agr, pers], 3 >, < [tense], past >} que podemos representar formalmente mediante: 2 : + Las estructuras de rasgos se pueden representar tambi en mediante arrays: head comer num sing agr 2 = pers 3 tense past

Subsunci on

La relaci on de subsunci on dene un orden parcial sobre las estructuras de rasgos. B asicamente podemos considerar que una estructura de rasgos P subsume a una estructura Q, si Q es una extensi on de P. Es decir, P subsume a Q, si cada elemento de informaci on de P est a incluido en Q. Consideremos por ejemplo, las siguientes estructuras de rasgos: 1 = genero masculino numero singular

genero masculino 2 2 = persona numero singular En este caso, 1 subsume a 2 (1 2 ) ya que todos los valores informativos de 1 se encuentran tambi en en 2 . Es interesante notar que la relaci on de subsuci on es reexiva (toda estructura est a subsumida por ella misma), y no es sim etrica (si una estructura A subsume a una B, no necesariamente B tiene que subsumir a A - como se puede ver en el ejemplo anterior).

Adem as, es un orden parcial, ya que podemos encontrar dos estructuras A y B tales que ni A subsume a B, ni B subsume a A. Por ejemplo, dada: genero masculino persona 2 no existe relaci on de subsunci on alguna entre 1 y 3 3 =

Unicaci on

Dadas dos estructuras, P y Q, la unicaci on de ambas estructuras ser a una nueva estructura (U = P Q), tal que U es la menor estructura que es subsumida por P y por Q. Si no existe dicha estructura, diremos que P y Q no son unicables. Por ejemplo, dadas las estructuras previas: 1 = 3 = genero masculino numero singular

genero masculino persona 2 podemos identicar la siguiente estructura como unicaci on de las dos anteriores: genero masculino 2 2 = persona numero singular Es decir, alpha2 = alpha1 sqcapalpha3 , ya que alpha1 2 y alpha3 2 y adem as alpha2 es la menor estructura que cumple esta condici on, ya que cualquier otra estructura que cumpliese las condiciones de unicaci on tendr a m as informaci on. Por otro lado, si denimos la siguiente estructura: genero f emenino numero singular Podemos observar que alpha4 no es unicable ni con alpha1 , ni con alpha3 , ya que al tener un valor distinto para el atributo genero, es imposible encontrar ninguna estructura que sea subsumida por ambas. Evidentemente la relaci on de subsunci on tambi en se puede denir para estructuras complejas (aquellas en las que el valor de un atributo es una estructura de rasgos as mismo). 4 =

Implementaci on del trabajo

De forma resumida, el objetivo del trabajo es la implementaci on de un algoritmo de unicaci on para estructuras complejas de rasgos. Como tal, el trabajo se organizar a funcionalmente en tres bloques, aunque se deja libertad para la estructuraci on e implementaci on del mismo. El trabajo se puede implementar en C, Java, C++ o Lisp. En caso de que se desee utilizar alg un otro lenguaje ser a necesario contactar con el profesor responsable de este trabajo. De cara a la realizaci on del mismo se deber a enviar en los plazos establecidos tanto el c odigo fuente del mismo, as como las restricciones relativas a uso de librer as, componente, etc., que sean necesarias para su ejecuci on. Por otro lado, de cara a la defensa del mismo, se recomienda que los alumnos lleven en un port atil una instalaci on de la aplicaci on (que necesariamente deber a corresponderse con la misma enviada) con el objetivo de agilizar la presentaci on y defensa. Como parte de la informaci on enviada se incluir a as mismo la documentaci on relevante, entre la que se encontrar a una descripci on general del an alisis, dise no e implementaci on del mismo, as como los tiempos de ejecuci on para los tests suministrados como referencia, junto con las caracter sticas del entorno utilizado para su realizaci on.

5.1

Especicaci on

El sistema debe permitir la especicaci on de un conjunto de informaci on de entrada, algo as como un diccionario de estructuras complejas de rasgos. Cada estructura estar a identicada mediante una etiqueta, y llevar a asociada un valor. En concreto, se utilizar a la siguiente sintaxis: [ etiqueta = (ECR) ] donde ECR es la Estructura Compleja de Rasgos. Los rasgos de esta estructura ser an siempre cadenas que comenzar an por una letra (min uscula o may uscula) y podr an contener n umeros y signos de subrayado. Se separar a mediante dos puntos (:) la etiqueta y el valor. El valor podr a ser terminal (siendo en este caso un valor num erico, un string que puede ir entrecomillado, o bien una estructura compleja adicional. Por ejemplo: [ ecr1 = (genero : femenino, numero: singular) ] En este caso, estar amos deniendo la entrada etiquetada ecr cuyo contenido es:

ecr 1 =

genero f emenino numero singular

Es posible que una etiqueta lleve asociada m as de una denici on. Por ejemplo: [ ecr1 = (genero : femenino, numero: singular) ] [ ecr1 = (genero : femenino, numero: plural) ]

Por otro lado, la estructura [ ecr2 = (head: comer, agr: (num:sing, pers:3), tense:past) ] estar a representando la siguiente estructura: head comer num sing agr ecr 2 = pers 3 tense past

5.2

Unicaci on

A partir de un conjunto de estructuras de rasgos denidas seg un el formato anterior, el sistema deber a ser capaz de recibir instrucciones de unicaci on. La unicaci on se invocar a mediante una llamada del tipo: Unif ica(a&b). donde a y b ser an etiquetas de estructuras de rasgos. El resultado debe ser FALLO en caso de que las estructuras no sean unicables, o la estructura obtenida como resultado de la unicaci on. Por ejemplo, Unif ica(ecr 1&ecr 2). En el caso de que una estructura tenga m as de una denici on, la unicaci on es el producto cartesiano de todas las deniciones de cada una de las estructuras. Es decir, si ecr1 tiene 2 deniciones (A y B), y ecr2 tiene tres deniciones (P, Q y R), entonces la unicaci on de ambas se obtendr a aplicando la unicaci on todos los pares posibles. A - P, A - Q, A - R, B - P, B Q, B - R.

5.3

Representaci on y optimizaci on

Es importante a la hora de analizar, dise nar e implementar el trabajo tener en cuenta distintas estrategias para la optimizaci on del problema, tanto en lo relativa a la representaci on (teniendo en cuenta que se podr an tener que manipular miles o incluso millones de estructuras), as como los tiempos que consume el sistema en la resoluci on de la unicaci on.

5.4

Documentaci on y Entorno

El trabajo presentado debe incluir el an alisis y dise no correspondiente, as como el c odigo fuente debidamente comentado y estructurado. As mismo se debe incluir informaci on relativa a la realizaci on de pruebas de estr es. Se deja libertad de desarrollo para el modelo de ejecuci on (carga y unicaci on). Es decir, se podr a denir uno o varios ejecutables que realicen la tarea, o bien el dise no de un entorno gr aco desde el que invocar dichas tareas. La documentaci on que se entregue debe incluir as mismo las instrucciones para la utilizaci on del sistema.

Ejemplos

Tal y como se ha indicado, la especicaci on de un sistema estar a formada por dos bloques, el bloque de especicaci on de estructuras y el bloque de llamadas de unicaci on. Supondremos que cada uno de los bloques se dene en un chero diferente. Es decir, habr a un chero que contendr a todas las estructuras (que se especicar a con la extensi on .scr), y otro chero que contendr a las llamadas de unicaci on (que se especicar a con la extensi on .unf). Fichero ejemplo01.scr: [ [ [ [ [ [ [ [ el = (agr: (genero : masculino, numero: singular) ) ] la = (agr: (genero : femenino, numero: singular) ) ] los = (agr: (genero : masculino, numero: plural) ) ] las = (agr: (genero : femenino, numero: plural) ) ] mesa = ( head: mesa, agr: (genero : femenino, numero: singular) ) ] mesas = ( head: mesa, agr: (genero : femenino, numero: plural) ) ] armario = ( head: armario, agr: (genero : femenino, numero: singular) ) ] armarios = ( head: armario, agr: (genero : femenino, numero: plural) ) ] Fichero ejemplo01.unf: $Unifica(el & la). $Unifica(el & mesa). $Unifica(el & armario). Al ejecutar el sistema, tras cargar el diccionario (chero ejemplo01.scr), y al aplicar el chero de unicaci on (chero ejemplo01.unf), el resultado debe ser:

$Unifica(el & la). => FALLO $Unifica(el & mesa). => FALLO $Unifica(el & armario). => ( head: armario, agr: (genero : femenino, numero: singular) )

Tests

Con el objetivo de poder comprobar el funcionamiento del sistema, se incluyen tres entornos de prueba del sistema, que se pueden descargar en un chero adjunto. A modo de ejemplo, se explica a continuaci on el modelo del primer test. El chero TEST01.ecr contiene las siguientes estructuras denidas: [ [ [ [ [ [ [ WCMDHT = (FAI0001uOPVk:1) ] WCMObEGNOod = (FAP0003AXVHL:RASOyiFBG) ] WCMfqTFfP = (FAI0001uOPVk:1, FAP0003AXVHL:RASOzlQps) ] WCMTJxy = (FAI0001uOPVk:1, FAP0003AXVHL:RASOxOJxg) ] WCMkSgpj = (FAI0001uOPVk:1) ] WCMJjcXOf = (FCM0008QVdXB:()) ] WCMIyRUL = (FCM0009IUsdb:(FAP0004FamhP:RASOnHCVJ), FCM0008QVdXB:(FCM0005ugfZl:(FAI0001uOPVk:1, FAP0003AXVHL:RASOpIQgc))) ] WCMxmHlsAw = (FCM0009IUsdb:(FAP0004FamhP:RASOiARJV), FCM0008QVdXB:(FCM0005ugfZl:(FAI0001uOPVk:1))) ] WCMOuhwfFY = (FCM0009IUsdb:(), FCM0008QVdXB:()) ] WCMuxB = (FCM0009IUsdb:()) ] WCMb = (FAP0003AXVHL:RASOfJOLk) ] WCMlO = (FAP0003AXVHL:RASOmRdfW) ] WCMRDkPId = () ] WCMtsWVf = () ] WCMjVWeQYAa = (FAP0003AXVHL:RASOrQIbn) ] WCML = (FCM0005ugfZl:(FAP0003AXVHL:RASOrQIbn)) ] WCMwaZsWf = (FCM0005ugfZl:(FAP0003AXVHL:RASOGRqlk)) ] WCMUaUjHhW = (FCM0005ugfZl:(FAP0003AXVHL:RASOxOJxg)) ] WCMxS = (FCM0005ugfZl:(FAI0001uOPVk:1, FAP0003AXVHL:RASOxOJxg)) ] WCMVGtG = (FCM0005ugfZl:(FAI0001uOPVk:1, FAP0003AXVHL:RASOrQIbn)) ]

[ [ [ [ [ [ [ [ [ [ [ [ [

[ [ [ [ [

WCMmJLyOjqrH = (FAP0004FamhP:RASOCattp) ] WCMuO = (FAP0004FamhP:RASOnHCVJ) ] WCMmlCUR = (FAP0004FamhP:RASOITHqU) ] WCMWTHnl = (FAP0004FamhP:RASOPJhbd) ] WCMAYHHZPuA = (FAP0004FamhP:RASOITHqU) ]

Por otro lado, el chero TEST01.unf tiene las llamadas a las instrucciones de unicaci on: $Unifica(WCMfqTFfP & WCMDHT) $Unifica(WCMkSgpj & WCMObEGNOod) $Unifica(WCMxmHlsAw & WCMJjcXOf) $Unifica(WCMOuhwfFY & WCMxmHlsAw) $Unifica(WCMjVWeQYAa & WCMRDkPId) $Unifica(WCMtsWVf & WCMb) $Unifica(WCMxS & WCMwaZsWf) $Unifica(WCMUaUjHhW & WCML) $Unifica(WCMAYHHZPuA & WCMmlCUR) $Unifica(WCMmlCUR & WCMWTHnl) Finalmente, el chero TEST01.trace contiene la salida de la ejecuci on del sistema, donde se puede ver el comportamiento del mismo. Para este ejemplo, podemos observar como en una de las llamadas de unicaci on para el par de etiquetas WCMxS y WCMwaZsWf se provoca un fallo de unicaci on ya que el valor del atributo FAP0003AXVHL es diferente: ##################################################### ###### UNIFICA ########################## ## Entrada 1: WCMxS ########################## ## ## -> (FCM0005ugfZl:(FAI0001uOPVk:1, ## FAP0003AXVHL:RASOxOJxg)) ########################## ## Entrada 2: WCMwaZsWf ########################## ## ## -> (FCM0005ugfZl:(FAP0003AXVHL:RASOGRqlk)) ########################## ## RESULTADO:

########################## ## ## UNIFICACION FALLO ## Por otro lado, otro de los ejemplos muestra c omo la unicaci on puede construir nuevas estructuras: ##################################################### ###### UNIFICA ########################## ## Entrada 1: WCMkSgpj ########################## ## ## -> (FAI0001uOPVk:1) ########################## ## Entrada 2: WCMObEGNOod ########################## ## ## -> (FAP0003AXVHL:RASOyiFBG) ########################## ## RESULTADO: ########################## ## ## UNIFICACION OK ## ## -> (FAI0001uOPVk:1, ## FAP0003AXVHL:RASOyiFBG)

7.1

Deniciones m ultiples

El Test02 contiene un ejemplo de denici on m ultiple. En este caso, podemos observar como la etiqueta WCMS025 lleva asociada tres entradas diferentes (marcadas mediante echas). El sistema intenta unicar cada una de estas deniciones con la especicaci on asociada a la primera entrada de la instrucci on de unicaci on, obteniendo solo una unicaci on correcta que se muestra como resultado.
##################################################### ###### UNIFICA ########################## ## Entrada 1: WCMkP025

########################## ## ## -> (FAI0007YpOBO:1, ## FAP0019oOpxl:RASONNUOv, ## FAP0020oCviV:RASOExnym) ########################## ## Entrada 2: WCMS025 ########################## ## ## -> (FAI0003AXVHL:1, ## FAI0008UosQV:1, ## FAP0019oOpxl:RASOpSvWZ, ## FAP0020oCviV:RASOExnym) ## -> (FAI0007YpOBO:1, ## FAP0020oCviV:RASObymCI) ## -> (FAI0007YpOBO:1, ## FAI0008UosQV:1) ########################## ## RESULTADO: ########################## ## ## UNIFICACION OK ## ## -> (FAI0007YpOBO:1, ## FAI0008UosQV:1, ## FAP0019oOpxl:RASONNUOv, ## FAP0020oCviV:RASOExnym) ##