Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Sistema de busqueda de reportes médicos con software libre

Pregunta

Buenas tardes a toda la comunidad.

Preguntaba si hay alguien con experiencia en herramientas como Lemur o Indri para el desarrollo de motores de búsqueda. Muchas gracias.
No se que tan similar sea el sistema de lucene pero explico mi duda de todas formas.
Es para un sistema de búsqueda de reportes médicos. Tengo indexados un poco
mas de 100 mil reportes. Estoy trabajando provisionalmente con la función de busqueda Okapi.
Tengo también un archivo de queries de prueba. Pero no logro entender como
debo usar todas estas queries para generar resultados de busqueda.


Respuesta

Un motor de búsqueda tiene dos operaciones importantes: indexación y búsqueda. Y por lo menos tiene un API para realizar estas operaciones. Generalmente tiene también un conjunto de programas para línea de comandos, cuyos fuentes ilustran el uso del API. Pero evidentemente hay más ciencia en todo esto. Antes de indexar ciegamente, y dependiendo de la aplicación, generalmente necesitas extraer texto, eliminar superfluos, suavisar, normalizar, hacer stemming, etc. etc.. 

Por eso cuando me dices "reportes médicos" y lo primero que pienso no es lucene (el motor de búsqueda), sino algo basado en UIMA (el administrador de información no estructurada), como por ejemplo

http://adf.ly/1f21tV


( http://adf.ly/1f21uq ).


Aclaración a la pregunta

Me voy por detalles. Efectivamente, todo el preprocesamiento de texto ha
sido realizado. He obviado el stemming y la eliminación de palabras sin
significado porque estoy usando una base de datos similar a la que
mencionas. Todos los términos médicos los he pasado a códigos CUI, que son
parte del sistema unificado de lenguaje médico ( UMLS ). Es decir, ahora no
tengo documentos en palabras, los tengo en códigos. La indexación se ha
facilitado bastante gracias a esto.

Ahora el problema.
Para saber que lo que estoy haciendo está BIEN, necesito un baseline,
"algo" con qué comparar. Y para eso estoy usando las API de Indri (lo que
antes era Lemur). Tengo cerca de 200 queries para el motor de búsqueda (que
eventualmente serán codificadas a CUI) cuyo resultados conozco.
No se cómo utilizar estás queries con Indri para generar un resultado.

Respuesta a la aclaración

Siento mucho no poder ayudarte con eso, no conozco lemur. Pero en mi
humilde experiencia, el API de consulta al motor de búsqueda me ha
parecido más sencillo que la indexación. ¿Me pasas el link para que
vea el API?.Tal vez tenga un poco de tiempo este finde para mirarlo.

Tienes casi todo lo que necesitas para evaluar. Sólo te faltan algunas cosas.

La evaluación de un sistema de Obtención de información siempre está
dado por la relevancia de un resultado de búsqueda frente a una
necesidad de información. Ese "algo" contra lo que tienes que comparar
es la opinión de un experto sobre la relevancia de un conjunto de
documentos sobre los que trabajas. La relevancia es binaria (relevante
o no).

Ahora, hay otras formas de evaluar tu obtención de información, como
la latencia de la búsqueda, la capacidad de manejar caudal, los
límites del tamaño del corpus, etc. etc. Pero la medida de relevancia
domina casi absolutamente.

Cada documento del subconjuto debe ser marcado su relevancia. Y la
consulta debe estar libre de problemas de mala formación con respecto
a la necesidad de información con la que el experto marcó cada
documento.

Con estos datos puedes calcular la "medida-f'. Que es la medida
estándar para medir relevancia. Para información de cómo calcular F1
puedes ver en  wikipedia [1] y [2]. Puedes hacer esto, digamos,
para los primeros diez resultados que te devuelve el motor, de una
muestra aleatoria, digamos de 500 documentos.

De una forma más general, puedes hacer una curva precision-recall
tomando sub-conjuntos de los resultados: El primer resultado, los
primeros dos resultados, los primeros tres, etc.

[1] http://en.wikipedia.org/wiki/Precision_and_recall
[2] http://en.wikipedia.org/wiki/F1_Score


Otra respuesta


Como ya te comentaron puedes usar Lucene, existe una api php en Zend 
Framework
Documentacion: 
http://adf.ly/1f21wr

Y otra respuesta

Otra opción es usar Xapian, que está escrito en C++ y tiene bindings
para Perl, Python, PHP, Java, Tcl, C#, Ruby y Lua.

http://adf.ly/1f21xr

Ads by CJ - Linux Foundation

Share This