Download Recuperación de Información Multilingüe para reutilización de

Document related concepts
no text concepts found
Transcript
Recuperación de Información Multilingüe
para reutilización de componentes Software
Roberto Correa Salgado
Universidad Europea de Madrid - CEES
Villaviciosa de Odón (Madrid)
[email protected]
Rodrigo Madrigal Gómez
Universidad Europea de Madrid - CEES
Villaviciosa de Odón (Madrid)
[email protected]
Resumen
Los lenguajes de POO como Java, de amplia presencia en
Internet, tienen una gran cantidad de documentación y de
recursos que se pueden reutilizar y así poder maximizar la
metodología de trabajo de la amplia comunidad de
programadores e ingenieros de software. Pero el hecho de
que exista una gran documentación no implica que el modo
de acceso a la misma sea potente y eficaz, ya que debido a
la diversidad de lenguas esta información está en diversos
idiomas, destacando por encima de todos, como
predominante el inglés. El sistema que se propone ayuda a
la recuperación de información relevante sobre Java para el
usuario, expresando éste la consulta en su lengua nativa, ya
que obtendrá una mayor precisión en la definición de la
misma, y devolviendo el sistema documentación en los dos
idiomas (inglés y/o español).
1. Introducción
El paradigma de la programación orientada a
objetos (POO), ofrece muchas ventajas, entre las
que se puede destacar la mejora de la calidad de
los programas, la reutilización extensiva de los
objetos software y la facilidad de mantenimiento
gracias al robusto encapsulamiento de código
[Boo 86, Kru 92, Mil 95].
Los
programadores
desean
reutilizar
componentes software, de manera que no tengan
que repetir un método ya existente y así poder
maximizar su tiempo de trabajo sin perder
tiempo en hacer una tarea que ya está
implementada.
En el dominio del software existe gran cantidad
de información funcional almacenada en
términos de documentación textual en formato
electrónico[Maa 91].
Miguel Domínguez Gelonch
Universidad Europea de Madrid - CEES
Villaviciosa de Odón (Madrid)
[email protected]
Aunque se hablan 6,700 lenguas en 228 países y
el inglés es la lengua nativa de sólo el 6 % de la
población en el mundo, el inglés es el lenguaje
dominante en colecciones, recursos y servicios
en Internet. Aproximadamente el 60 % de la
comunidad internauta está representada por el
inglés y el 30% por otras lenguas europeas
[NUA98].
El objetivo de este artículo es la recuperación de
componentes
software
basada
en
la
documentación
multilingüe
existente,
destacando los tutoriales y las API’s de Java
(documentos en html que describen el
funcionamiento de una serie de paquetes de
clases que se pueden reutilizar).
Debido a la popularidad de este lenguaje y de su
clara orientación al mundo de la programación
en
Internet,
así
como
su enfoque
multiplataforma, consideramos que existe una
amplia base documental en torno a Java que
incrementa notablemente el potencial en la
construcción de software para la comunidad de
programadores e ingenieros de software.
El panorama con el que nos encontramos es un
espectro de usuarios, que entienden la
documentación, pero que no son capaces de
realizar consultas en otro idioma que no sea el
nativo, con la suficiente precisión como para
poder localizar información relevante acerca de
componentes software que puedan reutilizar.
Ante esta situación surge la posibilidad de
implementar un sistema de recuperación de
1
información multilingüe (inglés/español) en
formato electrónico (sobre API’s y tutoriales del
lenguaje Java). La búsqueda se realizará
introduciendo la consulta en el idioma nativo del
usuario (ya que así podrá refinar más la
búsqueda)
y
el
sistema
recuperará
documentación en los dos idiomas (inglés y
español).
aceptables, ya que en el campo de la
traducción automática, para obtener unos
resultados medianamente aceptables hay
que restringir la traducción a un ámbito
pequeño y concreto. Ejemplos de este tipo
de enfoque, puede ser cualquier traductor
automático que traduce páginas web en un
buscador. Por ejemplo: Google. [4]
•
Traducción de consultas.
Este es el enfoque más utilizado. En este
caso lo que se hace es introducir la
consulta en el idioma nativo del usuario y
se traduce a diversos idiomas, para
posteriormente realizar la búsqueda con las
distintas consultas en los distintos idiomas.
Aquí el principal problema radica en la
ambigüedad, ya que suele ser difícil poder
averiguar con exactitud el verdadero
significado de la consulta a la hora de la
traducción. Un ejemplo de este tipo de
proyectos es MULINEX, [1] [Cap] el cual
busca colecciones de documentos en
inglés, alemán y francés en WWW, a partir
de una consulta en la lengua nativa del
usuario.
Este sistema utiliza un
mecanismo
de
desambiguación
interactiva. Para ello lo que hace es
mostrar los posibles significados de las
traducciones de las consultas para cada
uno de los idiomas y que sea el propio
usuario el que elija la traducción adecuada
dentro del contexto en el que esté
buscando, ya que al fin y al cabo el sentido
de lo que se busca siempre es decisión del
usuario.
•
Indexación por conceptos.
Este enfoque, lo que persigue es la
indexación de documentos agrupándolos
en conceptos, donde un concepto agrupa a
un número de términos con un significado
similar. De esta manera se recuperan
documentos con los términos del concepto
al que pertenecen. El problema con el que
nos
enfrentamos
aquí
es
la
desambiguación del significado. También
este método es bastante impreciso.
2. Reutilización de componentes
A continuación exponemos un ejemplo de
sistemas que reutilizan componentes como por
ejemplo : SmallHelp, un sistema de ayuda
interactivo para SmallTalk, en el cual el
programador puede describir la función que
desee de un método en SmallTalk empleando el
LN. El sistema analiza la solicitud y le presenta
aquellos métodos que realizan la función
deseada u otra semejante [Gom 96]. El sistema
ha sido construido con técnicas basadas en
conocimiento propias de la inteligencia artificial.
Con este sistema se ayuda a que el programador
de SmallTalk reutilice trabajo previo (una de las
ventajas de la programación orientada a objetos)
y suavizando en gran medida la ardua tarea de la
búsqueda del método o clase que el programador
desea aprovechar.
Este sistema está en la línea de trabajo que se
persigue en nuestro sistema, ya que está
enmarcado dentro del mismo ámbito de la
programación y desarrollo de software.
3. R.I Multilingüe
Cuando nos enfrentamos al tratamiento de la
recuperación de información (R.I) multilingüe
tenemos tres claros enfoques:
•
Traducción de documentos.
En este enfoque lo que se persigue es la
traducción de los documentos y la
presentación de éstos en diferentes
idiomas. El gran problema que se deriva de
este enfoque es la gran imprecisión de las
traducciones, ya que normalmente los
traductores son de carácter general y
abarcan un espectro muy heterogéneo y
diverso de documentación, con lo cual es
muy difícil obtener unos resultados
2
4. Nuestro Sistema
4.1 Organización general del Sistema
Consulta en LN
TABLA DE RESULTADOS
Conulta en español
Consulta en LN
SYSTRAN
MODULO
CONEXIÓN
SYSTRAN
Consulta en inglés
MODULO
BUSCADOR
LUCENE
Consulta Traducida
API’s
inglés
API’s
español
Tutoriales
inglés
Tutoriales
inglés
MODULO
INDEXACIÓN
BILINGÜE
LUCENE
4.2 Arquitectura
El sistema trabaja sobre una base documental de
API’s y tutoriales de Java tanto en español como
en inglés.
Para la realización del sistema se ha decidido
emplear el lenguaje Java, trabajando con código
Open Source.
Sobre esta base, se utiliza como indexador y
buscador el Lucene, el cual funciona para
documentación en inglés y alemán [1]. En
nuestro caso particular hay que realizar la
implementación de un módulo de indexación en
español, incluyendo una lista de parada y un
extractor de raíces de Porter en español.
Una vez introducido esté módulo en el Lucene,
ya tenemos el motor de indexación bilingüe para
poder llevar a cabo la generación de los archivos
de índice de nuestros documentos.
El primer paso es realizar la indexación de la
base documental. El administrador del sistema
realizará primero la indexación de los
documentos, generando tantos archivos de
indices como documentación se quiera revisar.
En nuestro caso la documentación son APIs y
3
tutoriales, por tanto, habra un archivo de indice
por cada uno de ellos. Estos archivos estarán
alojados en el servidor. Estas operaciones, son
totalmente transparentes al usuario.
A continuación se le presenta al usuario un
browser desde el cual introducirá la consulta, y
seleccionará los documentos sobre los que se
realizará la búsqueda. También se indica el
idioma en el que está la consulta ya que el
traductor no es automático y no detecta
automáticamente el idioma en el que está la
consulta.
Una vez que el usuario da la orden de búsqueda
de documentos, previamente, para obtener la
traducción de la consulta se pasa por el traductor
online de Systran [2]. Para ello el módulo de
conexión con la página web de Systran,
establece la comunicación pasándole la consulta
que se desea traducir y éste devuelve la consulta
traducida. En este caso la ambigüedad la
resuelve Systran ya que sólo nos devuelve una
posible traducción.
Una vez que tenemos la consulta en los dos
idiomas, el módulo buscador de Lucene se pone
a buscar entre la base documental que se haya
seleccionado por el usuario (API’s y/o
tutoriales) en los dos idiomas.
Se muestran por pantalla los datos de la
búsqueda mezclando por orden de relevancia los
resultados obtenidos en la base documental de
un idioma con los del otro. El número de
documentos que se muestran por página, lo
configura el usuario , que elegirá entre un rango
de 1 a 50 documentos , a la hora de realizar la
búsqueda.
Si existen más documentos encontrados de los
que están definidos en el máximo de
documentos por página, el usuario puede seguir
visualizándolo pulsando el botón Next.
Para trabajar utilizamos JSP, ya que es la manera
con la que trabaja Lucene. En nuestro sistema
utilizamos tres JSP en el servidor, el primero de
todos lo llamamos Configuration.jsp, en este se
guardan las rutas de los índices en los que vamos
a hacer indexaciones, que serán exportadas tanto
a index.jsp que es el formulario que rellena el
usuario los datos de la Consulta y la
configuración de la Búsqueda, y también se
exporta al results.jsp, que es el mas complejo de
todos, aquí se declaran todas las variables
necesarias para hacer los parser, las
indexaciones y muestra la información sobre las
Api y los Tutoriales.
4.3 Contribuciones técnico/científicas
Las contribuciones que realiza nuestro trabajo,
viene a llenar un vacío que existía en el campo
de la programación en el lenguaje Java y más en
concreto a la ayuda en la búsqueda de recursos,
a la gran comunidad de programadores que
utilizan Java como lenguaje de programación
para el desarrollo de sus aplicaciones.
De entrada, nuestro sistema elimina uno de los
grandes problemas a los que se enfrenta un
usuario que no sea anglo-parlante, la barrera
idiomática, que no debe de ser obstáculo a la
hora de reutilizar componentes.
Las aplicaciones actuales de recuperación de
información multilingüe, se centran en dominios
más generales, sin profundizar en temas más
específicos, mientras que nuestro sistema trabaja
en un entorno concreto, obteniendo una mayor
precisió n en la búsqueda sobre este tipo de
documentación.
Otra de las claras ventajas es que el proyecto ha
sido realizado bajo la filosofía Open Source, con
lo cual, cualquier programador que lo desee
puede incrementar la potencia del sistema
incluyendo mejoras que en esta primera versión
no se hayan podido incluir por falta de tiempo.
El crecimiento de nuestro sistema tiene una clara
tendencia exponencial.
Para llevar a cabo esta tarea se han utilizado
técnicas Inteligencia Artificial y más
concretamente de procesamiento del lenguaje
natural. Para realizar el proceso de indexación
utilizando una representación basada en el
espacio vectorial se han utilizado:
•
Pesos de términos
•
Listas de parada
•
Extracción de raíces
4
5. Funcionamiento y ejemplo de uso
El sistema se comunica con los usuarios, por medio de un browser, el cual contiene los siguientes
elementos:
• Una caja de texto, en la cual se introduce la consulta en lenguaje natural.
• Un caja desplegable donde el usuario especifica el idioma en el que está expresada la consulta
(inglés o español).
• Dos casillas de verificación, donde se marcan los documentos sobre los cuales se realizará la
búsqueda (API’s y/o tutoriales).
• Una caja de texto donde el usuario configura el número de documentos por página que se
mostrarán a la hora de mostrar los resultados.
• Un botón de Borrar /Delete, que borrará la consulta de la caja de texto.
• Un botón de Búsqueda / Search, que inicia la búsqueda en la base documental.
Los resultados de la consulta se muestran con el formato que se muestra a continuación:
5
Ala derecha de aparecen subrayados, los enlaces a la documentación encontrada. Si queremos ir al
documento en cuestión con un click de ratón sobre el texto subrayado iremos al documento deseado.
Al final del documento, si existen más y se desean visualizar, lo que se hace es pulsar el botón Next.
En caso de que no apareciera ningún resultado en la búsqueda, igualmente se informaría al usuario de
este hecho.
6
6. Conclusiones y futuro trabajo
En este trabajo hemos presentado un sistema que
ayuda a la recuperación de componentes
software, pero basándose en la recuperación
multilingüe. El sistema ha sido desarrollado
reutilizando software libre. Este sistema puede
ser especialmente útil para toda la gran
comunidad de programadores de Java que existe
actualmente.
Se ha dado un paso, en la especificación de un
dominio concreto, en contra de la tendencia
general de este tipo de sistemas de recuperación
de información, para que de este modo el
usuario pueda obtener información más precisa
que si trabajara sobre un entorno general. Se
sacrifica el trabajar con una mayor amplitud de
diversidad de contenidos a costa de obtener una
mayor precisión en el ámbito del lenguaje Java
con el que trabajamos.
[Gom 96] Gómez Hidalgo. J.M .Gómez Albarrán M.
Fernández-Pampillón .A.M. 1996. “SmallHelp: un
sistema de ayuda para el entorno SmallTalk”.
ADIE. Número 6.
[Kru 92] Krueger. C. 1992 “Software Reuse”. ACM
Computing Surveys. Vol 24. No 2.
[Maa 91] Maarek Y.S. Berry. D.M. Kaiser. G.E 1991
“An
informationRetrieval
Approach
for
Automatically Constructing Software Libraries”
IEEE Transactions on Software Engineering. Vol
17.8.
[Mil 95] Mili. H., Mili.F., Mili.A. 1995 “Reusing
Software Issues and Research Directions” IEEE
Software. Vol 21.6.
[NUA98] NUA, Internet Consultancy and
Developer, October 1998 (http://www.nua.net)
[1]
http://jakarta.apache.org
Las futuras mejoras que se pueden incluir, sería
ir enriqueciendo el sistema con los lenguajes de
mayor aceptación y presencia en la web, como
pueden ser: el alemán, el francés, italiano, etc.
Todos estos posibles módulos se irían acoplando
al indexador Lucene.
Otra posibilidad de mejora sería mejorar el
motor de traducción, incluyendo algún
mecanismo de desambiguación del significado,
bien por parte del propio usuario, o bien por
parte del propio sistema.
[2]
http://www.systransoft.com
[3]
http://mulinex.dfki.de
[4]
http://www.google.com
Otra posible mejora estaría enfocada a depurar
más la búsqueda y centrarla en métodos y clases,
donde a la hora de buscar documentación se baje
un escalón más en el refinamiento.
Referencias
[Boo 86] Booch. G. 1986 “Object-oriented
development” IEEE Transactions on Software
Engineering. Vol SE-12. pp. 211-221.
[Cap] Capstick. J. Diagner. A.K. Erbacth. G.
Leisenberg. A. Leisenberg. M. “A System for
Supporting Cross-Lingual Information Retrieval”
7