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) Roberto_correa@eresmas.com Rodrigo Madrigal Gómez Universidad Europea de Madrid - CEES Villaviciosa de Odón (Madrid) rrmmgg@hotmail.com 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) mmddgg@wanadoo.es 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