LENDEX: un lenguaje para el análisis documental automático



Carmen López Rincón
Verba Logica. Dpto. de Logica y Filosofía de la Ciencia
Universidad Complutense de Madrid



Índice

  1. Resumen
  2. Introducción
  3. Documentos, áreas, lexemas
  4. Objetivos de LENDEX
  5. Elementos de una descripción LENDEX
  6. Un ejemplo de descripción LENDEX

Resumen

This paper aims to present LENDEX, a language defined for automatic document information analysis. It allows for high level, simple descriptions of document structure. These descriptions are in turn compiled to parsers for the documents. LENDEX is based on logic programming and mainly developed using logic grammars and meta-programming. The ideas underlying this language, its objectives and the main features of its syntax are presented.

LENDEX has been designed in the frame of the european project BiblioTECA: BIBLIOgraphic TExts Compositional Analysis.

Introducción

LENDEX es un lenguaje de descripción de documentos concebido para el análisis automático de los mismos. El contexto en el que se ha desarrollado es el proyecto BiblioTECA: BIBLIOgraphic TExts Compositional Analysis (1). Para información acerca de sus objetivos, desarrollo y resultados, véase : "Análisis textual automático: proyecto BiblioTECA", [Sarabia, 96].

Aunque el ámbito inicial de aplicación era documentación de carácter secundario: índices analíticos, sumarios de revistas, registros bibliográficos y catálogos impresos, LENDEX se ha mostrado útil para el análisis de textos de otro tipo, como resoluciones del BOE y anuncios de prensa, entre otros.

El marco teórico y metodológico general del trabajo es la programación lógica, con especial hincapié en técnicas de metaprogramación y gramáticas lógicas. El desarrollo de LENDEX ha sido posible gracias al uso intensivo de técnicas y procedimientos cuya utilidad estaba ya probada en proyectos anteriores del grupo Verba Logica(2), consistentes en la conversión retrospectiva de clases de documentos tales como registros bibliográficos, índices analíticos y catálogos impresos.

Documentos, áreas, lexemas

El común denominador de estos trabajos, así como la idea que subyace a LENDEX, es la expuesta en [Sarabia,94]: el conocimiento de la estructura de los documentos es condición sine qua non para su comprensión: la misma secuencia de lexemas es en un contexto determinado indicativa de la fecha de publicación de una obra y en otro su número de páginas. La pretensión, por consiguiente, de diseñar y desarrollar un sistema de análisis automático capaz de recuperar la información presente en documentos exige adiestrarlo en el reconocimiento de la estructura que caracteriza a las distintas clases de documentos.

De esta manera, un documento se concibe así como la unidad máxima de información describible en LENDEX. Está compuesto por áreas que expresan su significado, cada una de las cuales se caracteriza a su vez por unos rasgos propios que constituyen su estructura y son describibles también en el lenguaje.

Distinguimos en LENDEX dos tipos de área:

  1. áreas DD: áreas débilmente definidas
  2. áreas ED: áreas estrictamente definidas

Las primeras carecen de estructura interna y se caracterizan fundamentalmente por cómo terminan: en ocasiones por la existencia de alguna marca explícita de fin de área y más frecuentemente por el comienzo de otra área cuyo inicio determina el fin de la anterior. Las segundas, por el contrario, sí presentan una estructura describible gramaticalmente de manera precisa y unívoca, si bien entendiendo que estos conceptos no son absolutos sino relativos al interés que guía el análisis de los documentos. A saber, el área de autor en un índice de un catálogo bibliográfico con entradas del tipo:

"MACKINTOSH, Ken: 5.000, 5.346, 5.489, 5.537..."

puede ser considerada área DD si no queremos establecer la distinción entre apellidos y nombre -en cuyo caso el de autor será un área DD con fin marcado por la aparición de los registros a que la entrada hace referencia-, o área ED en caso contrario: esto es, un área que se reescribe en términos de otras dos, a saber, apellidos y nombre.

Otro ejemplo ilustrativo de esta distinción es el relacionado con el área de descripción física de un registro bibliográfico. Secuencias del tipo:

"218 p; 23 cm", "XII, 218 p; 23 cm", "218 p., 3 h.: il.; 23 cm", "218 p.: il.; 23 cm + 1 disquete",

admitirían en principio una definición débil en la medida que la descripción ISBD de fichas bibliográficas establece que cada una de las áreas del registro acaba en una marca explícita, a saber: ".--". La inevitable relajación de la norma a que conduce la práctica catalográfica hace deseable no confiar excesivamente en semejante principio y sí procurar describir lo más ajustadamente posible el área en cuestión atendiendo a su estructura interna; esto es, definir descripción física como un área ED constituida por las subáreas extensión, ilustraciones, dimensión y material anejo.

Un fenómeno interesante a caballo entre los caracterizados como área DD y área ED es el presente en determinadas familias de textos con una estructura sólo relativamente estable. Sirva de ejemplo el de los siguientes anuncios de prensa:


"CANILLEJAS, San Hilario, cuarto,
exterior, 120 metros. cuatro dormito-
rios, dos baños, agua y calefacción
central, ascensores, pisazo.
23.000.000. T. 91/4305412."


"LISTA, dos dormitorios, 8.500.000.
tercera planta, soleado.
T. 91/5753388."

En ellos observamos cómo las indicaciones de planta, número de dormitorios y precio no aparecen en el mismo orden en uno y otro anuncio. Prácticamente lo único común entre ambos anuncios es la primera palabra de reclamo -que en este caso indica la zona donde está ubicado el piso- y el teléfono de contacto al final. El área intermedia tendría aspectos de área DD, en la medida que lo mejor conocido de ella es cómo acaba -con la indicación del teléfono- y aspectos de área ED por estar formada por subsegmentos relativamente bien definidos pero imprevisibles en cuanto al orden de aparición. Más adelante en el punto 6 del apartado Elementos de una descripción LENDEX, veremos cómo está contemplado en LENDEX este fenómeno.

Desde otro punto de vista, y dada una clase de documentos, no hay un único análisis posible. En la medida que el análisis de los documentos se desarrolla con vistas a la consecución de determinados fines -su traducción a otro formato de representación, la recuperación de cierta información presente en ellos, etc-, la descripción de la clase de documentos puede variar: información cuya recuperación es interesante en un caso puede tornarse irrelevante en otro. De ahí la segunda distinción entre áreas:

El análisis de una clase de documentos exige reconocer ambos tipos de área. Sólo las segundas, sin embargo, aparecen en la representación final del documento analizado. Si la distinción entre definición débil y estricta atendía al grado de estructuración de un área determinada, la establecida entre reconocimiento y recuperación tiene que ver con el resultado del análisis del documento efectuado a partir de la descripción LENDEX. Es relevante en este punto la introducción de tres conceptos relacionados: extensión, extensión relevante y contenido informativo de un área. La extensión es la secuencia de texto reconocida por la gramática del área; la extensión relevante es la secuencia de texto recuperada por dicha gramática y el contenido informativo alude al par complejo formado por el nombre del área en cuestión y el árbol de análisis asociado a su gramática. Este árbol tiene como nodos las distintas áreas mencionadas en su descripción y como hojas la extensión relevante de cada una de ellas. Si existe algún área en el documento que no se quiere que constituya un nodo en el árbol final de análisis, LENDEX ofrece la posibilidad de excluirla mediante un predicado específico. Véase a este respecto el punto 7 de Elementos de una descripción LENDEX.

Para acabar esta somera presentación de los supuestos en los que se apoya LENDEX, una indicación acerca de los terminales de las gramáticas de área: lexemas. En buena medida el concepto de lexema se asimila al intuitivo de palabra. Una clasificación de lexemas que distingue entre lexemas fútiles y plenos, lexemas en mayúscula, minúscula, con inicio en mayúscula, numerales y romanos, pretende facilitar la descripción de los documentos en términos de sus elementos constitutivos.

Objetivos de LENDEX

Los objetivos que LENDEX debía satisfacer eran fundamentalmente dos:

Vale aquí, por consiguiente, el punto de vista de [Dahl-St.Dizier,85; p.8] al referirse a las metagramáticas lógicas: "La idea de meta-gramáticas basadas en la lógica surge de proporcionar a un usuario no especializado... un mecanismo de análisis gramatical que le permita expresarse en términos de reglas familiares de rescritura en vez de en un lenguaje de programación aunque sea éste de alto nivel".

Por nuestra parte, éste es uno de los propósitos de LENDEX, si bien insistiendo más en las ventajas de un lenguaje de descripción cómodo y simple que permita tratar clases diversas de documentos, que en el carácter no especializado del usuario que ha de utilizarlo. Semejante ventaja nos parece igualmente interesante para usuarios avezados en programación en la medida que extiende la expresividad habitual de PROLOG y permite desarrollar programas declarativamente más claros.

Elementos de una descripción LENDEX

Como ya se ha indicado anteriormente, el contexto general de LENDEX es la programación lógica. Más en concreto, LENDEX se define sobre la base del lenguaje de programación PROLOG en la medida que las descripciones o gramáticas LENDEX constituyen una base de conocimiento PROLOG consultable por cualquier intérprete de dicho lenguaje. Asimismo, el compilador de las descripciones LENDEX que interpreta éstas y genera un analizador para la clase de documentos descrita con el lenguaje se ha desarrollado en Arity Prolog v.6. En lo que sigue nos centraremos en la presentación de LENDEX, sin entrar en los detalles relativos al programa (3).

Los elementos característicos de una descripción LENDEX se expresan en los siguientes hechos PROLOG:

1. ==>/2: producción principal de una descripción LENDEX. Tiene la forma:

documento ==> D.

donde D es la descripción de la clase de documentos en forma de lista PROLOG.

2. area_dd/3: hechos relativos a las áreas DD del documento:

area_dd(A, R).

donde A es el nombre del área y R el rasgo asociado: característica compartida por todos y cada uno sus lexemas no fútiles: mayúsuculas, minúsculas, comenzar por mayúscula, numeral o romano. Así, se cumple:

R es miembro de {en_may, en_min, con_may, numeral, romano}U {true}.

3. fin/3: hechos relativos a los fines de área DD:

fin(A, F, T).,

donde A es el área cuyo fin se está estableciendo, F es el literal PROLOG que lo define y T es el tipo de fin: interno, externo homogéneo y externo heterogéneo. El primero determina el fin del área y pertenece a su extensión, cosa que no ocurre en los otros dos. La diferencia entre los fines externos homogéneos y heterogéneos alude a la posibilidad de iteración del área cuyo fin determinan: los homogéneos la permiten, los heterogéneos no.


Un área DD puede tener varios hechos fin/3 asociados.

4. =>/2: producciones correspondientes a las áreas ED:

A => D.

donde A es el nombre del área y D el literal PROLOG que la define.

5. condicion/3: hechos relativos a condiciones adicionales opcionalmente impuestas sobre las áreas del documento:

condicion(A,L,T).,

donde A es el área cuya condición se establece, L es la expresión lambda del tipo X^C, donde X es la extensión del área A y C es el literal PROLOG que expresa la condición sobre X y T es el tipo de condición: fuerte o débil. Una condición es fuerte si necesaria y débil si sólo actúa como indicativo de la incorrección del análisis gramatical del área en la representación final del documento, mediante el literal inc(Ci), donde Ci es el contenido informativo del área A.

6. ->/2: hechos relativos al análisis flexible asociado a áreas DD:

A -> D.

donde A es el nombre del área DD cuyo análisis flexible se está definiendo y D es la lista PROLOG que contiene las subáreas constitutivas de A. En el ejemplo anteriormente comentado de los anuncios de prensa, la secuencia de texto intermedia entre el reclamo inicial y el teléfono de contacto final sería definida como un área DD -llamémosla descripción- a la que se asocia un análisis flexible, de manera que el orden de aparición de los elementos constitutivos del área: número de dormitorios, planta y precio, no resultara un obstáculo para su definición. Algo así:

area_dd(descripcion, true).
fin(descripcion, tfno, externo_hetero).
descripcion -> [dorms, planta, precio].

7. sin_nodo/1: hecho relativo a la necesidad de que ciertas áreas LENDEX no constituyan un nodo en el árbol de análisis final.

En la medida que de manera predeterminada todas las áreas LENDEX aparecen como nodos en la representación final del documento, es preciso indicar explícitamente cuándo esto no se desea. Así tiene lugar la reducción de un nivel en el árbol final.

Además, en una descripción LENDEX aparecen ciertas expresiones típicas del lenguaje que aquí sólo vamos a indicar:

  1. lexemas descritos: por ejemplo
    lex_en_may^ciudad(lex_en_may), lexema, numeral^entre(numeral, 2,5), ...
  2. términos cuantificados: por ejemplo,
    & espacio (uno o más espacios), +/ futil (cero o un futil), *\ area_x (cero o más apariciones de area_x), ...
  3. secuencias como:
    $Secuencia de texto directamente citada...$, $En Madrid, a$, ...
  4. áreas R: ? futil, (futil no recuperable), ? area_z (area_z de sólo reconocimiento)

Por último, un conjunto de primitivos tales como espacio/0, futil/0, spfl/0, punto/0, member/2, son/2, transforma/3(4)completa el conjunto de elementos que caracterizan una descripción LENDEX.

Un ejemplo de descripción LENDEX

Un ejemplo ilustrará lo expuesto hasta ahora; la clase de documentos descrita es la constituida por las entradas del Diccionario de la Real Academia de la Lengua, [DRAE,70]. Así, por ejemplo:

florales. (Del lat. florales ludi, juegos florales.) adj. pl. Aplícase a las fiestas o juegos que celebraban los gentiles en honor de la diosa Flora. A su imitación se han instituido después en Provenza y en otras partes. || 2. V. juegos florales.

florar. intr. Dar flor. Dícese de los árboles y las plantas, singularmente de los que se cultivan para cosechar sus frutos.

flordelisado, da. adj. Blas. V. cruz flordelisada.

flordelisar. tr. Blas. Adornar con flores de lis una cosa.

...

Una descripción LENDEX para esta clase de documentos es la que sigue:

documento ==> [palabra, +/ origen, ? (* spfl), 	&/ acepcion].

area_dd(palabra, true).
area_dd(origen, true).
area_dd(sigdo,true).

fin(palabra, $.$, interno).
fin(origen, $)$, interno).

fin(sigdo, num, externo_hetero).
fin(sigdo, usase, externo_hetero).

condicion(origen, X^member($($,X), fuerte).

acepcion => +/num, ?(* spfl),
            +/aux, ?(* spfl),
            (vease ; sigdo),
            +/usase.

num      => $||$, *spfl,
            numeral, *sp,
            +/$.$.

aux      => &/(lexema^abr(lexema,_),+/ $.$,* spfl,
           +/ ( ($y $ ; $o $ ; $de $), lexema, +/$.$)).

vease    => ? ($V.$), sigdo.
usase    => $ú.$, +/spfl,
            &/(lexema^abr(lexema,_),
               +/punto_sp
               ).

En ella encontramos en primera instancia la producción principal que describe cada una de las entradas del DRAE. De acuerdo con esta descripción, una entrada del diccionario consiste en una palabra, seguida opcionalemente (+/) del área origen, a continuación aparecen una secuencia posiblemente vacía (*) de espacios y fines de línea (spfl) que no queremos recuperar (?), y finalmente una o más apariciones (&/) del área acepcion.

Las áreas débilmente definidas del documento son tres: palabra, origen y significado. Por carecer de rasgo determinado (esto es, no estar escritas en mayúsculas, minúsculas, etc), el segundo argumento de los hechos area_dd/2 es true. Los fines de dichas áreas se encuentran expresados a continuación. Así se dice, por ejemplo, que palabra termina con un punto y éste es un fin interno al área, mientras que sigdo acaba con la aparición de las áreas num y usase, que son fines externos heterogéneos a dicho área, es decir, cada una de ellas determina el fin del área palabra sin pertenecer a su extensión -de ahí su carácter externo-, impidiendo además la iteración de palabra -por ser cada una de ellas respecto del área un fin heterogéneo.

Seguidamente aparece en la descripción el hecho relativo a la condición que debe cumplir el área origen: un paréntesis izquierdo debe pertenecer a su extensión. Esta condición es fuerte, esto es, su satisfacción es condición necesaria del área.

El grupo de producciones relativas a las áreas ED completa la descripción LENDEX. Así, por ejemplo, el área acepcion se define como la secuencia formada quizás (+/) por num, seguida de espacios y fines de línea (*spfl) irrelevantes (?), opcionalmente (+/) el área aux y otros tantos espacios y fines de línea no recuperables ( ?(*spfl) ), a continuación aparece el área de vease o la de sigdo, y por último, quizás una mención del uso de la palabra, área usase.

El resultado de aplicar esta descripción a las entradas del DRAE es el que sigue:

palabra($florales$),
origen( $(Del lat. florales ludi, juegos florales.)$),
acepcion( [aux($adj. pl.$),
sigdo($Aplícase a las fiestas o juegos que celebraban los gentiles en honor de la diosa Flora. A su imitación se han instituido después en Provenza y en otras partes$)]),
acepcion( [num($2$),
vease([sigdo($juegos florales$)])])
]).
palabra($florar$) acepcion( [aux($intr.$),
sigdo($Dar flor. Dícese de los árboles y las plantas, singularmente de los que se cultivan para cosechar sus frutos$) ])
palabra($flordelisado, da$), acepcion([ aux($adj. Blas.$),
vease([sigdo($cruz flordelisada$)])
])
])
palabra($flordelisar$), acepcion([ aux($tr. Blas.$)
sigdo($Adornar con flores de lis una cosa$)])
])

Si añadiéramos a la descripción LENDEX el hecho:

sin_nodo(sigdo),

el árbol de análisis para la primera entrada sería este otro:

palabra($florales$),
origen( $(Del lat. florales ludi, juegos florales.)$),
acepcion( [aux($adj. pl.$),
$Aplícase a las fiestas o juegos que celebraban los gentiles en honor de la diosa Flora. A su imitación se han instituido después en Provenza y en otras partes$]),
acepcion( [num($2$),
vease([sigdo($juegos florales$)])])
]).

La heterogeneidad del contenido informativo del área acepcion -obsérvese que la primera lista está formada por el literal aux/1 y la secuencia de texto $Aplícase a las fiestas...$- podría evitarse declarando sólo reconocible y no recuperable el área aux y por mor de la coherencia, tratando de igual modo a num y vease. La modificacion sería la siguiente:

sin_nodo(vease).
acepcion => ?(+/num, *spfl, +/ aux, * spfl), +/ usase.