2. LEMUR TOOKIT

2.1. Introducción

Lemur es un software para la recuperación de información que posibilita la recuperación de texto utilizando métodos de modelado de lenguaje, así como métodos tradicionales tales como aquellos basados en el modelo vectorial y Okapi.

El programa forma parte de un proyecto de colaboración entre dos departamentos de la Universidad de Massachussets y la Universidad Carnegie Mellon. Está escrito en C++ y C y está diseñado para ser usado en sistemas UNIX y Windows NT (debido a que nuestros equipos no cuentan con este sistema operativo, nos fue imposible ejecutar el programa, por lo que el análisis está basado en el estudio de la documentación disponible). El código fuente es proporcionado junto con el programa, con el fin de animar a los usuarios a modificarlo dependiendo de sus necesidades específicas. Del mismo modo, los usuarios pueden enviar sus propias modificaciones, que serán consideradas para su inclusión en sucesivas versiones del programa.

2.2. Descripción de componentes

Lemur se consta de los siguientes componentes:


- Document / DocumentStream: Un Document es una representación abstracta de texto sin formato. Un Document Stream es el flujo de entrada que recibe el Indexer. La conversión de texto en un Document permite realizar stemming, proceso morfológico, etc., que serán utilizados por los métodos de recuperación posteriormente.
- Query: representación abstracta de una consulta, que puede ser simple o estructurada (p.e.: booleana).
- Push Index: Es una API para elaborar índices introduciendo (por eso es push) términos y documentos en el indizador, y no tomando documentos de un Document Stream.
- Index: Contendrá una lista "término-a-documento" y otra "documento-a-texto". Se pueden obtener índices más detallados con información de la posición de los términos.
- Counter: Elemento básico para el modelado de lenguaje y otras representaciones de documentos en un sistema de recuperación. Puede contener la frecuencia de términos para todas las palabras de un documento.
- UnigramLM: Es un modelo de lenguaje que asigna una determinada posibilidad a cada término de un léxico. Se puede elaborar a partir de un Counter.
- DocumentRep: Esta clase se utiliza para codificar la manera en que un documento es representado en un determinado sistema de recuperación.
- QueryRep: De manera similar al DocumentRep, es la forma en que una consulta es representada en un sistema.
- TextQueryRep: Hereda la información de la QueryRep y representa una consulta a partir de una serie de términos ponderados.
- RetrievalMethod: Se construye a partir de un índice, y consta estas cuatro funciones:
1) Genera representaciones de consultas (QueryRep) a partir de una determinada consulta.
2) Asigna un valor que relaciona una determinada QueryRep con un ID de documento.
3) Computa los valores de todos los documentos de una colección para una QueryRep.
4) Actualiza la lista los documentos relevantes para una determinada consulta.
- TextQueryRetMethod: hereda la información del RetrievalMethod y proporciona una implementación genérica de asignación de valores, basada en un índice invertido. Las cuatro funciones de este módulos serán explicadas en el siguiente apartado.

2.3. Funcionamiento de Lemur

Lemur es capaz de utilizar varios algoritmos de recuperación diferentes. El modelo primario de recuperación está basado en la divergencia Kullback-Leibler (que utiliza el UnigramLM). También está incluido el algoritmo de recuperación OKAPI.

2.3.1. Indización y construcción de modelos de lenguaje

Los índices se pueden crear a partir del flujo de documentos (se crean vocabularios de términos, ids. de documentos y un índice invertido), o bien a partir del PushIndex (aquí el indizador no maneja el texto directamente, sino que espera la indicación de la aplicación, que previamente habrá realizado el stemming, etc.).
Cuando ya se ha creado un índice, se pueden construir los modelos de lenguaje (principalmente a partir de un contador de palabras); el resultado es el Unigram Language Model. También se pueden crear modelos a partir de otros modelos, sin pasar por el contador.

Finalmente, para implementar un sistema de recuperación eficiente es necesario crear una representación de documento y de consulta (DocumentRep y TextQueryRep). La DocumentRep se crea (como se puede ver en el esquema) a partir del índice y del UnigramLM, ya que aunque se construye a partir del índice de la colección, también depende de un modelo de lenguaje de fondo para el smoothing. Por otro lado, la TextQueryRep se genera a partir del texto sin formato y del índice, para asegurar la consistencia del léxico.

2.3.2. Construcción de un método de recuperación

Un TextQueryRetMethod debe poseer tres funciones básicas:
1) Dado un determinado id. de documento debe devolver su correspondiente representación de documento (DocumentRep).
Dada una consulta, tendrá que obtener su representación (TextQueryRep).
Además, deberá tener una ScoreFunction, que calcule un valor numérico basado en la comparación entre la representación del documento y de la consulta.

 

Volver arriba

PÁGINA DE INICIO