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
|