Programa para analizar documentos y detectar secciones coincidentes en Internet AGRADECIMIENTOS

Programa para analizar documentos y detectar secciones coincidentes en Internet AGRADECIMIENTOS Agradezco a mis padres que me han ayudado durante toda mi vida y que sé que siempre buscan lo mejor para mí. A mis hermanos que han sabido guiarme, siempre dándome ejemplo y ayudándome en lo que han podido. A mis amigos de la universidad que si no hubiera sido por ellos siento que no hubiese podido terminar la carrera. Y a todos mis otros amigos que me han ayudado en otros muchos aspectos de mi vida. A Rafael Palacios y Eduardo Alcalde que me han ayudado en el desarrollo del proyecto y que en gran medida han ayudado a que llegue a buen término. I Programa para analizar documentos y detectar secciones coincidentes en Internet RESUMEN DEL PROYECTO 1. Introducción Durante los últimos años se ha comprobado mediante diversos estudios que al menos el 30% de los trabajos tanto escolares como universitarios son parcial o totalmente copiados de fuentes accedidas a través de Internet. Este hecho hace, para el profesorado y las editoriales, muy complicado detectar si un trabajo es una copia o no, con lo que se pierde el valor con el que fue encargado el trabajo. La herramienta que se ha desarrollado en este proyecto tiene como principal objetivo ayudar de la manera más sencilla a los profesores (cliente final de la aplicación), indicando si hay secciones coincidentes con documentos de Internet, aunque se deja en manos del usuario decidir si se puede considerar una copia o no, por ello el formato en que se presentan los resultados debe ser el más claro posible. II Programa para analizar documentos y detectar secciones coincidentes en Internet 2. Metodología La metodología utilizada para desarrollar este proyecto ha sido una metodología evolutiva donde las tareas de diseño, programación y pruebas se han llevado en paralelo. Uno de los principales requisitos de la aplicación, ha sido el hecho de utilizar los servicios de los que proveen los buscadores más importantes para elaborar este tipo de proyectos, ya que aunque requiere un estudio elaborado de su funcionamiento, es la solución que reporta mayor calidad en los resultados de las búsquedas. Se estudiaron a fondo estas soluciones y en un principio se llegó a implementar una aplicación basada en los servicios cedidos por Google. Pero debido a limitaciones de uso de Google finalmente se han tenido que usar los servicios provistos por el otro principal buscador del mercado, Yahoo. 3. Descripción de la aplicación La aplicación desarrollada tiene como entrada de datos el documento para el cual se desea comprobar si tiene alguna sección coincidente en Internet. Este documento debe presentarse en formato de texto (.txt), y el documento de salida donde se presentan los resultados es un documento HTML donde se muestra párrafo a párrafo el contenido del documento original y, después de cada párrafo, los enlaces para acceder a los documentos con sección coincidente que se han encontrado. Dentro de un párrafo se realizan varias búsquedas de tamaño pequeño y se pueden distinguir los resultados de un fragmento del párrafo u otro. En el documento de resultados se ha utilizado un código de colores: el texto copiado y los enlaces III Programa para analizar documentos y detectar secciones coincidentes en Internet correspondientes presentan el mismo color de fondo, mientras que el texto original (o no analizado) se muestra con fondo blanco. Documento inicial Documento de salida (.txt) (.html) Un ejemplo de la salida del programa se muestra a continuación: IV Programa para analizar documentos y detectar secciones coincidentes en Internet 4. Tecnología de la aplicación Los puntos clave que se han conseguido con el desarrollo de la aplicación son:  Que sólo se buscan frases completas, normalmente de hasta un tamaño de 150 caracteres.  Dos búsquedas seguidas (dentro de un mismo párrafo), que tienen resultados de búsqueda coincidentes se iluminan del mismo color.  Se muestran los resultados agrupados cuando hay secciones coincidentes largas y no los resultados de las búsquedas individuales.  Un texto corto (como un título, una enumeración, …) no se intenta buscar.  La aplicación se ha diseñado de tal forma que también funciona con caracteres internacionales como ñ, acentos, (,), etc.  Se permite a los usuarios definir la profundidad del escaneo indicando cada cuántos párrafos se realizará una búsqueda, lo que además reduce considerablemente el tiempo de ejecución de la aplicación. V Programa para analizar documentos y detectar secciones coincidentes en Internet ABSTRACT 1. Introduction During the last years many studies have proved that at least 30% of the assignments are partially or totally copied from Internet fonts. This fact makes a harder work for professors and editors to detect if an assignment has been copied or not, so the assignment loses the value it has been asked for. The tool developed within this project’s main objective is to help professors (the final client of the application), in the easiest way, indicating if there are any coincident sections with other documents on the Internet. But it’s the user who finally estimates if the document is a copy or not, so the results document must be presented the simplest way as possible. 2. Methodology The methodology used to develop this project has been an evolutionary methodology where the design, programming and testing stages have followed parallel lines. One of the main requirements has been to use the services that the companies provide to use their search engines, which needs a deep study of it’s functioning, but it’s the solution that provides the best quality in the search results. It has been studied both solutions offered by Google and Yahoo, but finally the chosen one has been Yahoo. VI Programa para analizar documentos y detectar secciones coincidentes en Internet 3. Description of the application The application developed has as data entry the document that is going to be evaluated, which can only be presented in text format. And the output document where the results appear is a HTML document where the original document is presented paragraph by paragraph, and after each paragraph appear the links to the documents with a coincident section. Inside each paragraph the application does many small size searches, and in the output document it can be distinguished the results from each piece of the paragraph using a colour code. Input document Output document (.txt) (.html) VII Programa para analizar documentos y detectar secciones coincidentes en Internet 4. Application’s technology The key points that have been carried out with the development of the application have been:  Only complete phrases are searched. Normally until a size of 150 characters.  Two consecutive searches (within the same paragraph), which have coincident search results are illuminated with the same background colour.  The application shows grouped results when there are large coincident sections.  The application doesn’t try to search short texts (such as indexes, titles…).  The application works with international characters.  The users can define the deep of the scan, defining an interval of paragraphs to search. This possibility also reduces the execution time of the application. VIII Programa para analizar documentos y detectar secciones coincidentes en Internet ÍNDICE AGRADECIMIENTOS ..................................................................................................I RESUMEN DEL PROYECTO .....................................................................................II 1. Introducción......................................................................................................II 2. Metodología ....................................................................................................III 3. Descripción de la aplicación............................................................................III 4. Tecnología de la aplicación............................................................................. V ABSTRACT............................................................................................................... VI 1. Introduction .................................................................................................... VI 2. Methodology................................................................................................... VI 3. Description of the application ........................................................................ VII 4. Application’s technology............................................................................... VIII ÍNDICE ...................................................................................................................... IX 1. INTRODUCCIÓN ....................................................................................................1 2. ESTADO DEL ARTE ..............................................................................................3 2.1 SOLUCIONES OFRECIDAS POR GOOGLE ..................................................................4 2.1.1 Google Data (GData): .................................................................................4 2.1.2 Google Desktop Search Query API.............................................................9 2.1.3 Google Web Toolkit.....................................................................................9 2.1.4 Google Ajax Search API............................................................................10 2.1.5 Google Search Appliance APIs: Google Enterprise Developer Community ...........................................................................................................................11 2.1.6 Google XML Reference.............................................................................12 2.2 SOLUCIONES OFRECIDAS POR YAHOO ..................................................................13 2.2.1 Audio Search.............................................................................................15 2.2.2 Content Analisis ........................................................................................15 2.2.3 Image Search............................................................................................15 2.2.4 Local Search .............................................................................................15 2.2.5 My Web .....................................................................................................15 2.2.6 News Search.............................................................................................16 2.2.7 Site Explorer..............................................................................................16 2.2.8 Video Search.............................................................................................16 2.2.9 Web Search ..............................................................................................17 2.2.10 Acceso a los servicios .............................................................................17 3. INTRODUCCIÓN A LA METODOLOGÍA DE DESARROLLO .............................19 4. IDENTIFICACIÓN DE NECESIDADES.................................................................22 4.1 OBJETIVOS DEL SISTEMA .....................................................................................22 4.2 ALCANCE DE LA APLICACIÓN ................................................................................23 Extracción y carga de datos ...............................................................................23 Adaptación y búsqueda de coincidencias ..........................................................23 Presentación de los resultados ..........................................................................23 IX Programa para analizar documentos y detectar secciones coincidentes en Internet 4.3 TIPOLOGÍA DE USUARIOS .....................................................................................24 4.4 RESTRICCIONES .................................................................................................24 4.5 ORGANIZACIÓN ..................................................................................................25 4.6 ANTECEDENTES .................................................................................................26 Plagiarism Finder ...............................................................................................27 5. ANÁLISIS DE REQUISITOS.................................................................................29 5.1 LISTADO DE REQUISITOS .....................................................................................29 6. ESTUDIO DE ARQUITECTURA...........................................................................36 6.1 HARDWARE ........................................................................................................36 6.2 SOFTWARE ........................................................................................................38 7. DISEÑO.................................................................................................................40 7.1 INTERFAZ DE LA APLICACIÓN ................................................................................41 7.2 DOCUMENTO DE SALIDA DE LA APLICACIÓN ...........................................................43 7.3 TRATAMIENTO DEL TEXTO ORIGINAL .....................................................................45 7.4 LÓGICA DE LA APLICACIÓN ...................................................................................48 7.4.1 Versión 1 ...................................................................................................50 7.4.2 Versión 2 ...................................................................................................51 7.4.3 Versión 3 ...................................................................................................51 8. PROGRAMACIÓN Y PRUEBAS ..........................................................................53 8.1 PLANIFICACIÓN ...................................................................................................53 8.2 PROTOTIPO 1 GOOGLE .......................................................................................56 8.2.1 Descripción del prototipo desarrollado ......................................................56 8.2.2 Pruebas realizadas....................................................................................57 8.2.3 Conclusiones de las pruebas ....................................................................58 8.3 PROTOTIPO 2 YAHOO .........................................................................................59 8.3.1 Descripción del prototipo desarrollado ......................................................59 8.3.2 Pruebas realizadas....................................................................................62 8.3.3 Conclusiones de la pruebas ......................................................................62 8.4 VERSIÓN FINAL ..................................................................................................63 8.4.1 Descripción de la versión desarrollada......................................................63 8.4.2 Pruebas realizadas....................................................................................67 8.4.3 Conclusiones de las pruebas ....................................................................68 9. DESARROLLOS FUTUROS.................................................................................69 9.1 PREPROCESO AUTOMÁTICO DE DOCUMENTOS .......................................................70 9.2 SOPORTE DE OTROS FORMATOS PARA EL ORIGEN DE DATOS ..................................71 9.3 REPOSITORIO LOCAL DE DOCUMENTOS ANTIGUOS .................................................72 9.4 MEJORA DE LA BÚSQUEDA POR SOLAPAMIENTO .....................................................73 10. MANUAL DE USUARIO .....................................................................................74 10.1 REQUERIMIENTOS DEL SISTEMA .........................................................................74 Instalación de la Máquina Virtual Java (JVM) ....................................................74 10.2 UTILIZACIÓN DE LA APLICACIÓN ..........................................................................77 10.2.1 Instalación ...............................................................................................77 10.2.2 Arranque de la aplicación........................................................................78 X Programa para analizar documentos y detectar secciones coincidentes en Internet 10.2.3 Correcta ejecución de la aplicación.........................................................78 10.2.4 Opciones avanzadas...............................................................................82 11. CONCLUSIONES ...............................................................................................85 12. PLANIFICACIÓN DEL PROYECTO ...................................................................87 13. VALORACIÓN ECONÓMICA .............................................................................89 14. BIBLIOGRAFÍA ..................................................................................................90 14.1 LIBROS ............................................................................................................90 14.2 RECURSOS W EB ..............................................................................................90 14.3 OTRAS REFERENCIAS ........................................................................................92 XI Programa para analizar documentos y detectar secciones coincidentes en Internet 1. INTRODUCCIÓN Este proyecto se basa en la necesidad existente en el mundo académico de una herramienta que ayude de una manera sencilla e intuitiva a descubrir si se encuentran ante un trabajo original o que incluye secciones previamente publicadas. Desde hace ya un tiempo Internet es una herramienta de uso generalizado, y mucho más en la situación que se corresponde con la ingeniería en informática. Actualmente se sabe que existen multitud de lugares desde donde se puede obtener información y, además, gracias a la potencia de los buscadores de Internet actuales, esta información se puede obtener rápida y sencillamente. El propósito de este proyecto no es el de invalidar los documentos, que se puedan encontrar en Internet, como fuente de información a la hora de elaborar trabajos, sobretodo, porque quizás se trate de la mejor fuente de información ya que normalmente se obtiene información actualizada y de gran calidad. Lo que se pretende es lo mismo que se busca a la hora de pedir un trabajo, adquirir conocimientos a partir de esta búsqueda de información y obtener uno mismo sus propias conclusiones y plasmarlas con sus propias palabras. Esto evidentemente, no invalida el hecho de que en ciertas ocasiones, si lo que se busca es realmente dar una definición exacta de un concepto, suele ser mucho mejor utilizar una descripción técnica que ya esté realizada, si bien sería necesario citar la fuente original como referencia. 1 Programa para analizar documentos y detectar secciones coincidentes en Internet En conclusión, lo que se ha buscado, sobre todo, es eliminar esa posibilidad, que cada vez existe más, de entregar documentos realizados por otros autores como si los hubiera hecho uno mismo, y que incluso en ocasiones ni siquiera se han leído de forma completa. Proporcionando al profesorado o a los editores una herramienta que les ayude a la hora de tomar las decisiones correspondientes y poder tener pruebas de la falta cometida. 2 Programa para analizar documentos y detectar secciones coincidentes en Internet 2. ESTADO DEL ARTE Actualmente los diversos motores de búsqueda para Internet, están adquiriendo mucha más importancia y cada vez desarrollando nuevas y mejores aplicaciones para los distintos usuarios. De un tiempo a esta parte estos buscadores han empezado a ofrecer muchos más servicios aparte de la búsqueda por Internet, como pueden ser servicios de correo, de mensajería instantánea, de calendario, etc. que han sido desarrollados por ellos mismos. Pero últimamente lo que más se está dando es que, visto que la comunidad de Internet tiene muchas ideas nuevas, se tiende a facilitar a éstos todas las herramientas posibles para que desarrollen sus propias aplicaciones, basadas en un determinado buscador. En muchas ocasiones estas aplicaciones han sido adquiridas por la empresa del buscador y se han convertido en un nuevo servicio. Por todo esto, se ha considerado importante el hecho de hacer un estudio sobre las principales herramientas que ofrecen. Como cada empresa ofrece distintas ayudas se ha decidido centrarse en los dos principales buscadores y eso es lo que se va a mostrar a continuación. A lo largo de los últimos años surgieron muchos buscadores pero era cuestión de tiempo que acabaran desapareciendo. Actualmente los clientes se encuentran frente a dos competidores, el buscador principal, Google y su competidor directo, Yahoo. En las herramientas que ofrecen ambas empresas va a ser en lo que se centre este estudio. 3 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.1 Soluciones ofrecidas por Google En la siguiente dirección: http://code.google.com/apis.html, se pueden encontrar todas las soluciones que ofrece Google para implantar su sistema de búsquedas, además de otras aplicaciones, muy útiles en distintos ámbitos. Antes de empezar a explicar las diferentes APIs que ofrece Google, se ha considerado importante explicar el concepto de Google Data (GData) en el que se basan muchas aplicaciones que proporciona Google. 2.1.1 Google Data (GData): Las APIs de GData (ver Referencia [1]) proporcionan un protocolo estándar sencillo que se utiliza para leer y transmitir datos en la red. Usa dos estándares de distribución basados en el formato XML: Atom o RSS. El XML (eXtensible Markup Language) es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificación y adaptación del SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para distintas necesidades. XML es una tecnología sencilla, que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la 4 Programa para analizar documentos y detectar secciones coincidentes en Internet compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil. Como se decía anteriormente, GData usa Atom o RSS. RSS lleva más tiempo en varias versiones; Atom es más reciente, pero tiene más prestaciones. Además Atom provee el APP (Atom Publishing Protocol), un protocolo basado en HTTP para la publicación y edición de recursos web. A continuación se va a mostrar una relación de servicios de Google que tienen una API de GData:  Google Apps Provisioning Google Apps (ver Referencia [2]) permite a los administradores web ofrecer a sus usuarios versiones probadas de una gran variedad de aplicaciones Google personalizadas, como por ejemplo Gmail. La API de Google Apps Provisioning ayuda a los partners (compañeros) de Google a permitir, programándolo, acceder a estas aplicaciones. Específicamente, la API provee de funciones para crear, buscar, actualizar y borrar cuentas de usuario, apodos (nicknames) y listas de e-mails.  Google Base Data La API de Google Base Data (ver Referencia [3]) está diseñada para permitir hacer, principalmente, dos cosas a los desarrolladores: o Lanzar consultas (búsquedas) a los datos de Google Base para crear aplicaciones y “mashups”. 5 Programa para analizar documentos y detectar secciones coincidentes en Internet o Insertar y gestionar objetos de Google Base desde la programación.  Blogger Data La API de Blogger Data (ver Referencia [4]) permite a las aplicaciones cliente ver y actualizar contenidos en forma de feeds de GData. La aplicación cliente puede usar GData para hacer nuevos posts (anuncios, comentarios) en el blog, editar o borrar posts existentes, y buscar posts que concuerden con un determinado criterio de búsqueda. Aquí se muestran unos ejemplos de lo que se puede conseguir con la API de Blogger Data: o Añadir una lista activa de posts y comentarios de un blog a un sitio Web. o Crear una aplicación de escritorio o plugin (funcionalidad añadida) que permita a los usuarios crear y subir posts desde el escritorio. o Crear una aplicación agregadora de blogs.  Google Calendar Data Google Calendar permite a las aplicaciones cliente ver y actualizar eventos del calendario en forma de GData feeds. La aplicación cliente puede usar la API (ver Referencia [5]) para crear nuevos eventos, editar o borrar eventos existentes, y buscar eventos que concuerden con un determinado criterio de búsqueda. 6 Programa para analizar documentos y detectar secciones coincidentes en Internet A continuación se muestran algunos ejemplos de lo que se puede hacer con la API Google Calendar Data: o Crear un espacio que permita a la gente ver la información de su Google Calendar desde otra página Web. o Publicitar eventos futuros para añadirlos desde la programación a Google Calendar. o Mezclar y hacer coincidir APIs de Google, como por ejemplo mostrar eventos futuros en Google Maps combinando la API de Google Calendar Data y la API de Google Maps.  Google Code Search Esta API (ver Referencia [6]) permite a las aplicaciones cliente y Web buscar código fuente público para definición de funciones y códigos de ejemplo. Aquí se muestran algunos usos de esta API: o Crear un plugin (funcionalidad añadida) para el IDE que se prefiera que busque código de ejemplo relevante por el índice de Code Search. o Crear aplicaciones cliente que usen Google Code Search para encontrar definiciones de funciones y código de ejemplo.  Google Notebook Data La API (ver Referencia [7]) permite a las aplicaciones cliente ver contenido público del bloc de notas en forma de GData feeds. La 7 Programa para analizar documentos y detectar secciones coincidentes en Internet aplicación cliente puede pedir una lista de los bloc de notas públicos de un usuario, o preguntar el contenido de un bloc de notas público existente. Aquí se muestran algunos ejemplos de su posible uso: o Obtener una lista de los bloc de notas públicos publicados por un usuario en particular. o Mantener un seguimiento sobre el nuevo contenido añadido a un bloc de notas sobre el que se esté interesado.  Google Spreadsheets Data Esta API (ver Referencia [8]) permite a las aplicaciones cliente ver y actualizar hojas de cálculo (spreadsheets) en forma de GData feeds. La aplicación cliente puede pedir una lista de las hojas de cálculo de un usuario, editar o borrar contenido en una hoja de trabajo de una hoja de cálculo existente, y pedir el contenido de la hoja de trabajo de una hoja de cálculo. Ahora se verán unos cuantos ejemplos de lo que se puede conseguir con esta API: o Usar una hoja de cálculo como base de datos para otra aplicación mediante esta API. o Usar una librería externa que dibuje gráficos con la API para añadir gráficos a un sitio Web. o Implementar funciones de auto-filtrado u otras de las funciones habituales de las hojas de cálculo en una aplicación. 8 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.1.2 Google Desktop Search Query API Google Desktop indexa y busca contenido dentro de la propia máquina, se puede utilizar tanto en modo de sólo lectura, como lectura escritura (para borrar archivos del índice de Google Desktop). Esto permite gestionar diversos tipos de documentos fácilmente. A través de las APIs del Desktop Software Development Kit’s Query (ver Referencia [9]), las aplicaciones pueden enviar búsquedas directamente a Google Desktop y procesar los resultados. Para este proyecto en cuestión, esta solución que ofrece Google sólo sería útil si se quisiera tener un repositorio de documentos para comparar un documento no sólo con ficheros que se puedan acceder por Internet, sino con otros documentos a los que no se pueda acceder desde un buscador. Esto es útil cuando se sabe que los documentos están relacionados entre si, por ejemplo Proyectos Fin de Carrera, trabajos de años precedentes, prácticas, … 2.1.3 Google Web Toolkit Google Web Toolkit (GWT ver Referencia [10]) es un entorno de desarrollo en Java open source, que permite desarrollar aplicaciones en AJAX como Google Maps o GMail de una manera muy sencilla. Programar aplicaciones web dinámicas hoy en día es una tarea tediosa además de difícil de depurar. Se emplea el 90% del tiempo trabajando sobre pequeñas incompatibilidades entre navegadores y plataformas, y la falta de modularidad en JavaScript hace que compartir, probar y reutilizar componentes sea algo difícil y que normalmente da muchos problemas. 9 Programa para analizar documentos y detectar secciones coincidentes en Internet Con GWT se pueden desarrollar y compilar aplicaciones AJAX en lenguaje Java usando las herramientas de desarrollo Java que se quieran. Más adelante el compilador del GWT traduce la aplicación Java a un JavaScript y HTML plenamente comprensible por los navegadores. A continuación se muestra el ciclo de desarrollo con GWT: 1. Se usa el IDE Java preferido para escribir y compilar una aplicación en Java, usando tantas librerías de GWT como estimen útiles. 2. Se usa el compilador Java-to-JavaScript de GWT para transformar la aplicación en un conjunto de ficheros JavaScript y HTML que se pueden usar con cualquier servidor web. 3. Se confirma que la aplicación funciona en cualquier navegador que se quiera, es decir, que la aplicación sea plenamente funcional en cualquiera de los navegadores soportados. 2.1.4 Google Ajax Search API La API de Google AJAX Search (ver Referencia [11]) es una librería Javascript que permite embeber la búsqueda de Google en una página web o en otras aplicaciones web. Conviene comentar que para poder usarla primero se necesita obtener una clave de la API de Google AJAX Search, que es válida para un solo directorio del servidor web, incluyendo cualquiera de sus subdirectorios. La API de Google AJAX Search trabaja con objetos web simples que realizan búsquedas internas sobre un número de servicios Google (Web Search, Local Search, Video Search, Blog Search, News Search, y Book Search). Si la página web 10 Programa para analizar documentos y detectar secciones coincidentes en Internet está diseñada para ayudar a los usuarios a crear contenidos (por ejemplo tablones de mensajes, blogs, etc.) la API está diseñada para ayudar a estas actividades permitiendo copiar directamente resultados de búsquedas en los mensajes. Google también avisa de que mejorará esta API periódicamente, y que se deberá actualizar la web a las nuevas versiones de la API según vayan estando disponibles. El equipo de la API de Google AJAX Search marcará las notificaciones de los nuevos cambios en el blog de la API de Google AJAX Search (http://googleajaxsearchapi.blogspot.com/). Si se realizara un cambio que no es compatible con versiones anteriores, avisan que se dará como mínimo un tiempo razonable para hacer la transición; y durante este periodo ambas versiones de la API estarán disponibles. Como ya se puede ver esta API que ofrece Google no sería útil para el proyecto en desarrollo, ya que sólo se puede utilizar desde páginas web. 2.1.5 Google Search Appliance APIs: Google Enterprise Developer Community El protocolo de búsqueda de Google Search Appliance (GSA ver Referencia [12]) es un protocolo simple basado en HTTP para presentar los resultados de búsquedas. El protocolo de Feed (cebado) de GSA permite a un cliente o a un desarrollador escribir un conector cliente para meter una fuente de datos en la GSA para su procesado, indexado y que esté disponible para las búsquedas. El protocolo de Autorización de GSA permite, a un servicio web del cliente, autorizar a usuarios a acceder a documentos específicos para buscar en tiempo real, elevando su entorno de seguridad existente y control de acceso. 11 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.1.6 Google XML Reference Basándose en la GSA, en este documento (ver Referencia [13]) se muestran los aspectos técnicos sobre como se piden búsquedas y como se devuelven y presentan los resultados al usuario final. Además describe como son los formatos de ambas (petición y resultados). Esto va a ser lo que, en principio, será lo más útil para este proyecto. 12 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.2 Soluciones ofrecidas por Yahoo Por otra parte todo lo que ofrece Yahoo se encuentra en el Yahoo Search Developer Kit (ver Referencia [14]) que es una recopilación de librerías y códigos de ejemplo para acceder al servicio de búsquedas web de Yahoo. Los Yahoo! Search Web Services (Servicios de búsqueda Web de Yahoo!) permiten acceder al contenido y servicios de Yahoo desde cualquier lenguaje de programación. Esto significa que ahora se pueden construir llamadas a Yahoo directamente desde cualquier aplicación (se pueden ver algunos ejemplos de lo que se puede conseguir en la Referencia [15]). Los Yahoo! Web Services (Servicios Web de Yahoo!) son una forma de que los desarrolladores de aplicaciones accedan al contenido y los servicios para crear nuevas aplicaciones. Por ejemplo, se pueden combinar los datos y servicios de Yahoo! con los que se creen en una aplicación de escritorio o aquellos ofrecidos por otros sitios Web. Los Yahoo! Web Services han sido creados para los desarrolladores, los negocios y los investigadores que estén interesados en usar productos, servicios, datos y contenido de Yahoo! como un recurso en sus aplicaciones. Ahora mismo, este programa es gratis, sin estar sujeto a ningún SLA (Service Level Agreement o Acuerdo de Nivel de Servicio) o acuerdo futurible, pero sí está sujeto a límites diarios en volumen de peticiones. Todos los Web Services están disponibles para el uso hasta el límite del ratio estándar por servicio en aplicaciones y sitios Web de acuerdo con los términos de 13 Programa para analizar documentos y detectar secciones coincidentes en Internet uso de Yahoo! (ver Referencia [16]). Muchos de los Web Services pueden permitir ciertos tipos de uso en un negocio, pero esto puede variar de un servicio a otro, se pueden revisar los Términos de Uso (ver Referencia [17]) generales para obtener más información acerca de lo que está permitido y lo que no. Para acceder a los Yahoo! Web Services, se pedirá que se registre y use un ID de la aplicación (ver Referencia [18]), que estará vinculado a la aplicación. El ID de la aplicación debe ser enviado con cada petición de los Web Services. La aplicación también deberá seguir los Términos de Uso e incluir una “attribution” (ver Referencia [19]), que es una forma de conectar la aplicación de vuelta a Yahoo!. El ID de la aplicación es una cadena de caracteres que identifica unívocamente a la aplicación. Si se tienen múltiples aplicaciones, se debe usar un identificador distinto para cada una (para poder conseguir un ID consultar Referencia [20]). Lo óptimo sería crear primero el ID de la aplicación antes de construir la aplicación para que se pueda tener el nombre de ID que se quiera. Una vez obtenido el ID de aplicación, habrá que descargarse el kit de desarrollo (ver Referencia [21]) que contiene librerías y ejemplos licenciados con la licencia BSD (pertenece al grupo de licencias de software Libre, y como punto fuerte es una licencia que permite el uso del código fuente en software no libre) para varios lenguajes: Perl, Python, PHP, Java, JavaScript y Flash. Se pueden crear aplicaciones con Yahoo! Search Web Services usando datos desde: 14 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.2.1 Audio Search El servicio Audio Search de Yahoo! (ver Referencia [22]) provee de acceso a datos musicales y archivos de audio usando consultas estructuradas y no estructuradas. 2.2.2 Content Analisis El servicio de extracción de términos web (ver Referencia [23]) provee una lista de palabras significativas o frases extraídas de un mayor contenido. 2.2.3 Image Search El servicio web Image Search de Yahoo (ver Referencia [24]) permite buscar imágenes en Internet. 2.2.4 Local Search Las APIs del servicio Local Search (ver Referencia [25]) ofrecen una forma de conectar la riqueza de datos en Yahoo! Local (ver Referencia [26]), incluyendo las valoraciones y comentarios hechos por los usuarios de Yahoo!. 2.2.5 My Web My Web (ver Referencia [27]) es un motor de búsqueda personal de Yahoo! Search que permite guardar páginas web (incluidas copias de texto), compartirlas, añadir notas a ellas, y usar la potencia de Yahoo! Search para reencontrarlas instantáneamente. 15 Programa para analizar documentos y detectar secciones coincidentes en Internet My Web existe en dos versiones. My Web 1.0 (http://myweb .search.yahoo.com/myweb/) que permite guardar URLs en carpetas y compartirlas con otros usuarios. Y My Web 2.0 (http://myweb2 .search.yahoo.com/myweb/) que permite cargar URLs y compartirlas públicamente si se desea. Cada versión es independiente y tiene sus propios datos y servicios web. 2.2.6 News Search El servicio News Search (ver Referencia [28]) permite buscar en Internet artículos de noticias. 2.2.7 Site Explorer Las APIs del servicio Site Explorer de Yahoo! (ver Referencia [29]) dan acceso a información acerca de el sitio web del que se es propietario desde el servicio Site Explorer (ver Referencia [30]) de Yahoo!. Estas APIs ayudan a comprender mejor el tráfico y utilización del sitio web (preguntando por las páginas en el índice de Yahoo! que se enlazan con el sitio). Serán útiles para comprobar quien está enlazado con la página y para crear alternativas efectivas contra los trackbacks que son fácilmente atacados por el spam. 2.2.8 Video Search Este servicio (ver Referencia [31]) permite buscar en Internet clips de video. 16 Programa para analizar documentos y detectar secciones coincidentes en Internet 2.2.9 Web Search Los servicios de Web Search de Yahoo! (ver Referencia [32]) permiten acercarse al potencial de las tecnologías de Yahoo! Search desde dentro de otros sitios web, aplicaciones o entornos. Estos servicios sirven para realizar peticiones a los sistemas de Yahoo! sin dejar el sitio web o interfaz e incorporar los resultados en las aplicaciones. 2.2.10 Acceso a los servicios Yahoo! Search Web Services opera vía peticiones HTTP como cualquier buscador web. Las peticiones se forman empezando con una URL que es el punto de entrada al servicio (como por ejemplo http://search.yahooapis.com/WebSearch Service/V1/webSearchfor para peticiones de búsqueda web), y añadiendo argumentos a la petición que especifiquen los resultados deseados (como por ejemplo ?query=U2). Los resultados devueltos por el servicio vienen en formato XML que varía según el servicio. Los programas pueden usar estos servicios enviando una petición, obteniendo la respuesta y analizando el XML devuelto para extraer la información que se necesite. Alternativamente, se pueden usar las APIs del SDK para tratar las especificaciones del protocolo. Cada servicio acepta un grupo distinto de argumentos de búsqueda y genera respuestas estructuradas en XML de distintas formas. Para ver las especificaciones de cada servicio hay que consultar su documentación. 17 Programa para analizar documentos y detectar secciones coincidentes en Internet Yahoo! impone dos requisitos técnicos a la hora de usar estos servicios. Primero, se requiere que cada aplicación que use estas APIs utilice un ID que debe solicitarse formalmente para cada aplicación. Este identificador deberá ser enviado con cada petición en el parámetro “appid”. Segundo, se limita la frecuencia por la que cada aplicación puede acceder a estos servicios. Estos límites vienen impuestos independientemente para cada servicio y el rango es habitualmente de alrededor de los cientos de accesos por día y por aplicación. Para consultar los límites individuales de cada servicio hay que ver la documentación de cada uno. 18 Programa para analizar documentos y detectar secciones coincidentes en Internet 3. INTRODUCCIÓN A LA METODOLOGÍA DE DESARROLLO Basándose en la naturaleza de este proyecto, se piensa que la metodología o paradigma del desarrollo de sistemas más acorde con este proyecto es aquella que se basa en un Modelo incremental o evolutivo. Este tipo de metodología se constituye sobre el hecho de que se comienza el desarrollo satisfaciendo un conjunto de requisitos, partiendo de una base estable. Las siguientes versiones proveen progresivamente los requisitos que faltan, evolucionando el sistema fase a fase. Esta metodología suele utilizarse en sistemas complejos, donde se admiten versiones del producto y en desarrollos con alta componente de investigación. En este caso se piensa que es la metodología más interesante porque permite experimentar con prototipos ejecutables intermedios, que en este caso al estar pensado usar las soluciones ofertadas por los buscadores, es importante poder experimentar lo antes posible sobre prototipos. Además de facilitar el hecho de implantar nuevas funcionalidades en etapas más avanzadas del proyecto. Las etapas que componen la metodología que se va a seguir para realizar el proyecto son las siguientes:  Identificación de Necesidades: Se elaborará el Documento de Conceptos del Sistema tras realizar las entrevistas necesarias con el cliente, en este caso el director del proyecto que es el que hará las veces de representante del cliente. 19 Programa para analizar documentos y detectar secciones coincidentes en Internet  Análisis de Requisitos: Una vez identificadas las características del problema, se definirán las necesidades y problemas que presente proyecto. Viendo los tipos de documentos que se pretenden tratar y los resultados que se espera obtener, se debe realizar una lista con los requisitos específicos que debe cumplir el proyecto.  Estudio de Arquitectura: En este caso se tratará de realizar un estudio de las soluciones que se plantean para los diversos requisitos. Además de todo esto, durante la etapa de desarrollo se deberá decidir qué arquitectura y qué lenguaje de programación es el más conveniente para la aplicación que se va a desarrollar.  Diseño, programación y pruebas del sistema: Se trata de la etapa más importante del proyecto y consecuentemente la que más duración tendrá, en ella se realizarán tres tareas en paralelo y de manera evolutiva sobre sus propios resultados. Estas tres tareas son el Diseño de la aplicación, la Programación y las Pruebas. La labor que se va a realizar seguirá el siguiente orden: o Se diseña un prototipo o nueva versión. o Se programa este diseño. 20 Programa para analizar documentos y detectar secciones coincidentes en Internet o Se realizan pruebas sobre el mismo hasta que sea válido y estable.  Implantación: Se procederá a la implantación de la aplicación (elaboración del manual de la aplicación, de instalación, …). También se ha pensado que el tipo de prototipo más acorde con este proyecto es el prototipo funcional, puesto que lo que interesa, en un principio, es si se realizan bien las funciones para las que está destinada la aplicación, si utilizando lo que dan se es capaz de encontrar lo que se debería. Se ha considerado como secundario el hecho de cómo va a ser el interfaz de usuario o si cumple unas determinadas limitaciones técnicas. Sin embargo, se ha realizado un importante esfuerzo en definir un formato de salida adecuado para presentar los resultados de manera clara y concisa. 21 Programa para analizar documentos y detectar secciones coincidentes en Internet 4. IDENTIFICACIÓN DE NECESIDADES 4.1 Objetivos del sistema Se pretende desarrollar una aplicación para el profesorado, que a partir de un documento deberá indicar qué partes del mismo han sido copiadas directamente de un documento de Internet ya existente. La aplicación deja al usuario la elección de lo que se considerará una copia, simplemente se muestran las coincidencias que se han encontrado. También se dejará a elección del usuario el nivel de profundidad con el que desea que se busquen coincidencias. Los objetivos con los que se pensó realizar esta aplicación son:  Permitir al usuario, verificar si un documento que posee en formato electrónico es una copia parcial o total del otro documento disponible en Internet.  Permitir al usuario realizar un estudio sencillo de las secciones coincidentes con documentos de Internet, indicando en cuales se ha detectado mayor o menor índice de coincidencia.  Permitir que los usuarios puedan acceder al documento donde se ha encontrado la coincidencia de una manera sencilla. 22 Programa para analizar documentos y detectar secciones coincidentes en Internet 4.2 Alcance de la aplicación El desarrollo de la aplicación implica las funciones que se determinan a continuación: Extracción y carga de datos Tiene como objetivo la extracción de los datos de un documento de tipo fijo. Adaptación y búsqueda de coincidencias Se adapta el contenido del documento y se buscan las posibles coincidencias. Presentación de los resultados Se presentan los resultados de modo que se puedan interpretar de forma rápida y sencilla. 23 Programa para analizar documentos y detectar secciones coincidentes en Internet 4.3 Tipología de usuarios Los usuarios del sistema serán inicialmente los miembros del profesorado de la Universidad Pontificia Comillas. Estos usuarios no presentan en principio unas necesidades distintas entre sí, por lo que se pueden agrupar en un único conjunto. En principio el número de usuarios del sistema no tiene porqué afectar al rendimiento del mismo tal y como está concebida la aplicación. Los usuarios potenciales del sistema son fundamentalmente profesores de cualquier ciclo académico y editores de libros o revistas. 4.4 Restricciones Para la realización de la aplicación la única restricción que se ha considerado importante, es la restricción de tiempo que conlleva la finalización del proyecto antes del mes de junio de 2007. Debido a esta restricción se han concentrado los esfuerzos en los algoritmos de búsqueda y en depurar la salida de resultados. El formato del archivo de entrada se ha restringido a un único tipo (.txt). 24 Programa para analizar documentos y detectar secciones coincidentes en Internet 4.5 Organización La organización del proyecto queda claramente reflejada en el siguiente diagrama: Rafael Palacios Eduardo Alcalde Ricardo Mora-Figueroa Diagrama de organización del proyecto 25 Programa para analizar documentos y detectar secciones coincidentes en Internet 4.6 Antecedentes Recientemente el profesorado se ha encontrado con que, gracias a la gran cantidad de información disponible en Internet, se ve totalmente incapaz de distinguir un trabajo correcto de una mera copia. Pero realmente han sido tres hechos principales los que realmente han influido en este sentido: el hecho de que actualmente está generalizado disponer de una conexión a Internet; la gran potencia que tienen los buscadores en estos momentos; y la aparición de sitios Web explícitamente creados como repositorio de trabajos ya realizados (véase Referencia [33]). Los trabajos escritos tienen como objetivo el de aplicar los conocimientos que se tienen o se pueden adquirir y elaborar un razonamiento adecuado al problema planteado. Con lo explicado anteriormente se ha conseguido que estos trabajos pierdan toda su validez ya que no se sabe si de verdad es el razonamiento propio o el que se ha copiado, y que en muchos casos ni se ha entendido. De hecho existe un estudio realizado por una agrupación de universidades donde se indica que al menos un 30 por ciento de los trabajos tanto universitarios como escolares son parcial o completamente copiados de Internet. Además especifican que el estudio se realizó sobre todo tipo de trabajos, desde trabajos cortos hasta proyectos fin de carrera, y que en todos aparecían copias en mayor o menor medida. Ante esto el profesorado se encuentra en total desventaja ya que, aunque se sabe que otras universidades disponen de aplicaciones similares a la que se 26 Programa para analizar documentos y detectar secciones coincidentes en Internet pretende desarrollar, no hay ninguna que esté plenamente desarrollada o a la que se pueda acceder fácilmente. Y el hecho de intentar aplicar una búsqueda masiva sobre un documento, para una persona es totalmente inviable. Plagiarism Finder La única aplicación conocida que se encuentra actualmente de venta al público es Plagiarism Finder (ver Referencia [34]). Esta aplicación creada por Mediaphor Software Entertainment AG, promete una aplicación Windows, que funciona sobre cualquier PC con conexión a Internet, con la que se seleccionan y los documentos y se empieza el análisis con un solo clic de ratón, y después de un tiempo se reciben los resultados como un informe detallado en la pantalla, ofreciendo los resultados con concurrencia resaltados y con un enlace a la fuente. Ejemplo la aplicación Plagiarism Finder en ejecución. 27 Programa para analizar documentos y detectar secciones coincidentes en Internet Se ha evaluado esta herramienta y la realidad es que se trata de una aplicación que a la hora de la verdad no suele encontrar resultados fiables sino palabras sueltas que no sirven de ayuda al cliente en ningún momento. Aparentemente Plagiarism Finder sólo realiza búsquedas contra una base de datos concreta o una “lista negra” de dominios. La mayor diferencia de la aplicación desarrollada es que se apoya en buscadores de prestigio (Google y Yahoo) que tienen muy bien indexada toda la red. Paquete de venta al público de Plagiarism Finder El precio de esta aplicación asciende a 125 dólares la licencia de uso para una única persona. 28 Programa para analizar documentos y detectar secciones coincidentes en Internet 5. ANÁLISIS DE REQUISITOS 5.1 Listado de requisitos HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 1 de 7 FUENTE: Cliente PRIORIDAD: Media CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: M1 DESCRIPCIÓN REQUISITO Entrada de documentos al sistema en un formato único. TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN Formato único de entrada de datos. COMENTARIOS El sistema se encargará de modificar luego dichos datos. BENEFICIOS La elección de un único formato de entrada de los documentos al sistema facilita la lógica de la aplicación y con ello su velocidad. COMENTARIOS / SOLUCIONES SUGERIDAS Puesto que se va a escoger un único formato para la entrada de documentos en el sistema este debería ser un formato sencillo y disponible en todos los sistemas y de fácil acceso desde la aplicación. Se sugiere el formato “.txt”. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 29 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2007 VERSION: 1.0 ESTADO: Final PÁG: 2 de 7 FUENTE: Operativo PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A1 DESCRIPCIÓN REQUISITO Transformación de los datos al lenguaje del buscador. TIPO REQUISITO: OPERATIVO DESCRIPCIÓN Tratamiento de datos. COMENTARIOS Cuando se envíen los datos al buscador. BENEFICIOS Si se transforman los datos al lenguaje completo del buscador, no se pierde ningún tipo de información de la que se pueda adquirir de la lectura del documento. COMENTARIOS / SOLUCIONES SUGERIDAS Puesto que se van a introducir los datos en un único formato de texto habrá que transformarlos al lenguaje que entienden los buscadores mediante alguna función diseñada específicamente para ello, teniendo en cuenta todos los posibles cambios necesarios. DOCUMENTOS RELACIONADOS Aquellos documentos donde se especifique el tipo de transformación que haya que hacer para usar el buscador seleccionado. REQUISITOS RELACIONADOS M1 RESOLUCIÓN 30 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 3 de 7 FUENTE: Cliente PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A2 DESCRIPCIÓN REQUISITO Formato de salida con posibilidad de acceso a los datos. TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Formato de salida con posibilidad de El sistema se encargará de presentar los acceso a los datos. datos de manera que sean directamente accesibles. BENEFICIOS La elección de un formato de salida de los datos, que permita acceder a sus correspondientes copias directamente, es algo muy conveniente a lo hora de valorar la bondad de la salida mostrada. COMENTARIOS / SOLUCIONES SUGERIDAS Se va a escoger un formato de salida, adecuado para que se pueda acceder directamente a las páginas Web de donde se haya podido copiar el documento, como por ejemplo el formato HTML. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 31 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 4 de 7 FUENTE: Cliente PRIORIDAD: Media CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: M2 DESCRIPCIÓN REQUISITO Posibilidad de seleccionar la profundidad del escaneo del documento. TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Usuario escoge la profundidad del El sistema se encargará de realizar la escaneo. búsqueda un nº menor de veces acorde con lo profundo o no del escaneo. BENEFICIOS Puesto que presumiblemente la búsqueda de un documento va a tener una duración larga, eligiendo una menor profundidad de escaneo repercutirá en un menor tiempo de ejecución. COMENTARIOS / SOLUCIONES SUGERIDAS Según se indique en la profundidad del escaneo se saltarán distinto nº de párrafos para agilizar el proceso de búsqueda. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 32 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 5 de 7 FUENTE: Cliente PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A3 DESCRIPCIÓN REQUISITO Utilizar elementos provistos por la propia empresa del buscador. TIPO REQUISITO: OPERATIVO DESCRIPCIÓN Utilizar funciones y servicios que provee el propio buscador para el desarrollo de aplicaciones. COMENTARIOS El buscador suele proveer de código de ejemplo y funciones útiles para los desarrolladores que deseen usar sus servicios. BENEFICIOS El hecho de usar elementos desarrollados por el propio buscador proporciona la seguridad de que el método que se va a usar para utilizar sus servicios es el mejor. COMENTARIOS / SOLUCIONES SUGERIDAS Tener que buscar y aplicar estas soluciones suele presentar ciertas dificultades, además, el hecho de tener que usar este tipo de elementos, normalmente incluye ciertas restricciones o registros de uso pero se han considerado aceptables. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 33 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 6 de 7 FUENTE: Cliente PRIORIDAD: Baja CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: B1 DESCRIPCIÓN REQUISITO Posibilidad de seleccionar el buscador que se va a utilizar de entre una lista. TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Usuario escoge el buscador, para Hay gran número de buscadores. comparar las búsquedas, que más le guste. BENEFICIOS El hecho de haber tantos buscadores indica que existe la posibilidad de que para la misma búsqueda devuelvan resultados distintos, basándose en el índice que asignan los buscadores a las distintas páginas web. COMENTARIOS / SOLUCIONES SUGERIDAS Aunque haya muchos buscadores distintos, está estudiado que actualmente hay dos principales: Google y Yahoo. Éstas serán las opciones que se den al usuario. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 34 Programa para analizar documentos y detectar secciones coincidentes en Internet HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 7 de 7 FUENTE: Cliente PRIORIDAD: Baja CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: B2 DESCRIPCIÓN REQUISITO Tratamiento exclusivo de los resultados correspondientes al idioma de origen del cliente. TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Sólo se aceptan resultados de búsqueda del idioma español. BENEFICIOS Una forma de acotar los resultados de las búsquedas, para facilitar el hecho de que haya habido una copia, sería mediante el idioma. COMENTARIOS / SOLUCIONES SUGERIDAS Se buscarán sólo resultados correspondientes al idioma español que es el idioma que usa el cliente tipo de esta aplicación. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN 35 Programa para analizar documentos y detectar secciones coincidentes en Internet 6. ESTUDIO DE ARQUITECTURA 6.1 Hardware La arquitectura hardware que se ha pensado necesaria para este proyecto es una arquitectura básica. Las únicas necesidades son las de un ordenador que admita el software requerido (se explicará más adelante) y una conexión a Internet. La siguiente figura ilustra como se relacionan los distintos elementos: Diagrama de arquitectura necesaria para el cliente La arquitectura HW que se considera necesaria para el desarrollo de este proyecto es similar a esta representada, ya que para la realización de la pruebas necesita las mismas características del cliente. 36 Programa para analizar documentos y detectar secciones coincidentes en Internet Pero el HW en concreto que se ha usado para el desarrollo ha sido:  Procesador: AMD Athlon 64 3200+ (2200 MHz).  Memoria disponible: 630 MB.  Disco duro: 250 GB. 37 Programa para analizar documentos y detectar secciones coincidentes en Internet 6.2 Software Con respecto al software elegido primero se tuvo que escoger el lenguaje de desarrollo. Se ha escogido el lenguaje Java por diversos motivos:  Las APIs ofrecidas tanto por Google como por Yahoo soportan Java.  Para la posterior ejecución de la aplicación sólo es necesario disponer de una Máquina Virtual Java (JME). Este es el único requisito de los PCs en que se va a instalar la aplicación.  Es un lenguaje sencillo para el desarrollo de aplicaciones y de sus interfaces.  Se trata de un lenguaje con el que ya se está familiarizado y que está muy extendido. Como entorno de desarrollo integrado (IDE) se estudió si usar Eclipse o NetBeans. Dado que ambos son de distribución libre, se optó por escoger Eclipse ya que es con el que se está más familiarizado. Luego hubo que decidir qué buscador de Internet se iba a utilizar a la hora de realizar las búsquedas de textos. Se descartaron buscadores menores y sólo se analizaron en profundidad, Yahoo y Google, que son los más usados y los que probablemente proporcionen fuentes interesantes que si se ha copiado el documento. A continuación se obtuvo la información correspondiente a los servicios que facilitan ambos buscadores, que han sido explicados anteriormente (capítulo 2. Estado del arte). Habiendo encontrado los servicios que probablemente se correspondan con el objetivo de esta aplicación, y con el lenguaje de desarrollo ya 38 Programa para analizar documentos y detectar secciones coincidentes en Internet seleccionado se buscó si ambos disponían de facilidades y funciones específicas de este lenguaje. Ambas disponen de este tipo de ayudas, así que inicialmente, se escogió a Google como el buscador principal a usar en esta aplicación. Como ya se verá más adelante (consultar Capitulo 8. Programación y Pruebas), esta elección a pesar de ser acertada, se descubrió que no era viable. A pesar de que Google en principio parece que facilita estos servicios, la realidad es que la forma de llamar al buscador mediante XML la tienen prohibida a no ser que se disponga de un permiso especial, que normalmente no conceden. En este caso, se intentó obtener uno de estos permisos pero no fue concedido. Por lo tanto, al final se ha escogido como buscador principal y único el de Yahoo. 39 Programa para analizar documentos y detectar secciones coincidentes en Internet 7. DISEÑO En esta etapa se han realizado los diseños correspondientes a diversas partes de la aplicación. Este diseño agrupa tanto las partes de estructura de los datos, interfaz y resultados, como la funcionalidad del sistema. Este diseño se puede considerar definitivo aunque puede estar sujeto a cambios durante la etapa de implantación y pruebas (sobretodo el interfaz de la aplicación y el documento de resultados). A continuación se van a ir explicando las decisiones de diseño que se han tomado. 40 Programa para analizar documentos y detectar secciones coincidentes en Internet 7.1 Interfaz de la aplicación La aplicación ha sido concebida, como ya se ha dicho anteriormente, para un uso fácil y sencillo de la misma, con lo que se ha buscado un interfaz simple y directo, donde todos los elementos y opciones deben estar presentes en el primer panel, sin tener que acceder a ellos a través de otros menús. Los elementos que son indispensables y que deben aparecer en el diseño son:  Un botón que permita seleccionar el documento origen de las búsquedas, con el que se deben encontrar coincidencias. Este documento, como ya se indicó en el apartado 5.1 Listado de requisitos, debe ser un documento de texto (formato “.txt”).  Un botón que permita seleccionar el documento donde van quedar registrados estos datos de la búsqueda, es decir, el documento de salida del sistema. Este documento, como ya se indicó en el apartado 5.1 Listado de requisitos, debe tratarse de un documento HTML.  Algún tipo de selector donde se pueda escoger la profundidad del escaneo sobre el documento. Para escoger la profundidad del escaneo se han utilizado dos spinners: o Uno que indica cada cuántos párrafos se debe realizar una búsqueda. o Otro para indicar el tamaño mínimo de frase que se desea utilizar.  Un botón que indique al usuario que puede empezar la búsqueda. 41 Programa para analizar documentos y detectar secciones coincidentes en Internet  Además, se debe indicar al usuario cuándo termina el proceso de búsqueda y se está en disposición de acceder a los resultados. En la siguiente imagen se muestra la apariencia final del interfaz de la aplicación: Apariencia final del interfaz de la aplicación 42 Programa para analizar documentos y detectar secciones coincidentes en Internet 7.2 Documento de salida de la aplicación El documento de salida de la aplicación es el documento en que se muestran los distintos resultados de la búsqueda. Como ya se ha dicho anteriormente este documento se ha decidido presentarlo en formato HTML, ya que va a permitir acceder a los resultados de las coincidencias directamente. Además es un documento autocontenido en el que se muestra el documento original. La estructura que se ha pensado para este documento consiste en ir presentando párrafo a párrafo una replica del documento original. Después de cada párrafo deberán aparecer los distintos resultados, en forma de direcciones web (se mostrará su URL), que se han encontrado coincidentes con el texto del párrafo en cuestión. La utilidad viene del uso del documento HTML, donde a través de las direcciones se podrá acceder directamente a la página original. Para establecer la relación, entre un fragmento del texto original y los resultados con que se ha encontrado una coincidencia, se usará un código de colores que permite diferenciar distintas secciones con coincidencias distintas de un golpe de vista. Se contempla la posibilidad de que una frase aparezca en varios documentos publicados en Internet. En ese caso la frase aparece iluminada con un color de fondo y al final del párrafo aparece la lista de URLs, todas marcadas con el mismo color de fondo. En la siguiente imagen se muestra como ha quedado finalmente el documento de salida del sistema: 43 Programa para analizar documentos y detectar secciones coincidentes en Internet Documento de salida de la aplicación 44 Programa para analizar documentos y detectar secciones coincidentes en Internet 7.3 Tratamiento del texto original Una vez se dispone del texto a verificar éste no puede ser enviado directamente como una petición al servicio del buscador sino que debe ser tratado. El sistema de datos que acepta el buscador impone dos restricciones: longitud máxima y traducción de caracteres especiales.  Longitud: los buscadores disponen de una longitud máxima con respecto al tamaño de lo que se va a buscar. Por otro lado, aunque el buscador admitiese una búsqueda de la longitud de todo el párrafo, sólo encontraría el documento original si el párrafo entero coincide exactamente. Por esto se debe definir una forma de restringir esta longitud: o Una forma de solucionar el problema de longitud máxima sería acotando el tamaño, pero esto no es tan sencillo puesto que luego se debe modificar el contenido (traducirlo al lenguaje del buscador), y ya se pierde la noción del tamaño. o La otra solución, que es la que se ha decidido utilizar, consiste en definir lo que es una frase y dividir cada párrafo en sus correspondientes frases. El criterio para identificar una frase que se va a utilizar el de la separación por un carácter “.”, es decir desde el inicio hasta que se encuentra un punto sería la primera frase, desde ahí hasta el siguiente punto sería la segunda y así sucesivamente. Este tipo de división es mucho más inteligente. 45 Programa para analizar documentos y detectar secciones coincidentes en Internet o El tamaño máximo aceptado por el buscador de Yahoo para cada búsqueda es de alrededor de 300 caracteres, contando con la codificación necesaria para los caracteres internacionales. Para evitar problemas se ha decidido utilizar como tamaño máximo, de la trama sin codificar, 150 caracteres. o También se ha tenido muy en cuenta el hecho de que Yahoo no acepta medias palabras consideradas como frase, es decir que si busco una frase cuya última, o primera, palabra esta partida la búsqueda no devuelve ningún resultado. Por tanto, en el caso de frases muy largas, se ha tenido que buscar como carácter necesario a la hora de cortar una frase los espacios. o En un análisis posterior de los resultados se ha visto que es interesante fijar un tamaño mínimo para las frases para evitar que se busque y muestre información que no se considera relevante, es decir, que una frase demasiado corta es muy probable que encuentre copias por Internet cuando muy probablemente no sean copias reales. Ejemplos de este tipo de frases pueden ser: los índices, los títulos, las URLs, los listados, las notas a pie de imagen, etc. Para poder controlar esto se ha elegido un valor mínimo de criba de 50 caracteres, aunque se ha pensado poder presentarlo también a los usuarios como un parámetro ajustable de la aplicación.  Traducción: como ya se comentó en el apartado 5.1 Listado de requisitos, los sistemas buscadores utilizan un lenguaje similar pero no igual al idioma escrito. Esta diferencia reside en que los caracteres que 46 Programa para analizar documentos y detectar secciones coincidentes en Internet no forman parte de la tabla ASCII (7 bits) se escriben mediante una combinación de otros caracteres con “%” de por medio (por ejemplo el carácter “ñ” se sustituye por “%C3%B1”), y si no se realiza esta conversión los resultados devueltos de la búsqueda no son los deseados. 47 Programa para analizar documentos y detectar secciones coincidentes en Internet 7.4 Lógica de la aplicación Una vez que se han definido tanto el tratamiento que deben recibir los datos y la forma en que se va a mostrar el resultado final, conviene definir una lógica con la que se van a realizar los distintos tratamientos de las búsquedas realizadas. Como consideración inicial con respecto a estas búsquedas se ha pensado tratar sólo los diez primeros resultados de cada una, ya que es lo que se considera habitual mirar en una búsqueda cuando se está buscando información. Esta lógica consiste en:  Comprobar si se trata de un párrafo con varias frases o no. Si se trata de un párrafo de una sola frase se buscarán los resultados coincidentes con esa frase y ya se grabarán en el fichero de salida de datos tanto el texto original como los resultados, si no los hay no se muestra ningún resultado y el texto revisado aparecerá en fondo blanco.  En caso de que se trate de un párrafo con más de una frase, el sistema buscará los resultados coincidentes con esa frase, pero luego cogerá la siguiente frase y también buscará sus resultados coincidentes. o Si alguno de los resultados coincide en ambos grupos de respuesta se crea un grupo de combinación que es el que se guarda. Y se continúa buscando nuevas frases hasta que o no se encuentran coincidencias o se termina el párrafo momento en el que se mostrarán los resultados de ese sector de frases con resultados comunes. 48 Programa para analizar documentos y detectar secciones coincidentes en Internet Para facilitar la comprensión de la lógica explicada se va a mostrar detalladamente en el siguiente diagrama de secuencia: Nuevo Párrafo NO ¿Tiene más de una frase? SI Se escriben la frase y los resultados si los tiene Nueva Frase NO ¿Hay resultados almacenados? SI Nuevo Párrafo Se escribe la frase (si tiene resultados escribe de un nuevo color y se almacenan los resultados) Se buscan coincidencias ¿Hay coincidencias y no es frase corta? SI NO Se almacenan las coincidencias con resultados anteriores Se almacenan las coincidencias (si la frase es corta se mantienen) Se almacenan los nuevos resultados y se escribe la frase de un nuevo color (si tiene resultados) Se escribe la frase del mismo color que la anterior Nueva Frase Diagrama de secuencia de la lógica de la aplicación para el tratamiento de búsquedas 49 Programa para analizar documentos y detectar secciones coincidentes en Internet Como se puede ver en el diagrama de secuencia, en su etapa final, la aplicación ha añadido el tratamiento de frases cortas que ha sufrido cierta evolución: 7.4.1 Versión 1 Cuando no había tratamiento en los resultados mostrados cada frase encontrada en Internet producir una lista de hasta 10 URLs. El usuario podía ver que efectivamente dos frases consecutivas provenían de la misma fuente, pero era difícil de interpretar. Ejemplo de documento de salida sin tratamiento especial de frases cortas 50 Programa para analizar documentos y detectar secciones coincidentes en Internet 7.4.2 Versión 2 Luego se trataron estas frases cortas, como se ha definido anteriormente en este mismo documento, omitiendo mostrar los resultados: Ejemplo de documento de salida con tratamiento inicial de frases cortas 7.4.3 Versión 3 Finalmente se decidió hacer un tratamiento más específico de las frases cortas. Para que, si se encuentra una frase corta en mitad de un párrafo, si la frase anterior había encontrado resultados estos resultados se mantienen ignorando los de la frase corta y escribiendo esta última del mismo color que su precedente. Y en 51 Programa para analizar documentos y detectar secciones coincidentes en Internet caso de que no haya resultados de la frase anterior, se ignoran igualmente los resultados de la nueva frase corta y la frase se escribe sin color de fondo. Esta estrategia va, de nuevo, orientada a aumentar la claridad de los resultados. Lo que se consigue con esto, es además de omitir los resultados de las frases cortas, mantener coherencia con todo el texto de un párrafo y sus resultados. Por ejemplo, si una frase tiene unos resultados, luego vienen una o varias frases cortas y luego otra u otras frases largas con resultados coincidentes con la primera, se mostrarán todas estas frases, desde la primera a la última del mismo color y con los resultados coincidentes. En la siguiente imagen se observa mejor esto: Ejemplo de documento de salida con tratamiento final de frases cortas 52 Programa para analizar documentos y detectar secciones coincidentes en Internet 8. PROGRAMACIÓN Y PRUEBAS 8.1 Planificación Como ya se explicó en el capítulo 3. Introducción a la metodología de trabajo, se va a utilizar un tipo de desarrollo basado en un Modelo incremental o evolutivo. Este tipo de modelos son muy útiles en trabajos de investigación donde se desconoce la tecnología que se va a usar, y permite un realizar comienzo temprano de la programación, en paralelo con otras fases, como el estudio de la arquitectura o el diseño. Para llevar a cabo este tipo de programación se ha decidido seguir un proceso que consiste en el desarrollo de una versión de la aplicación que irá evolucionando, a cada paso se buscará que la versión cumpla una serie de requisitos, para lo cual deberá pasar una serie de pruebas. Si pasa satisfactoriamente dichas pruebas entonces se le añadirá nueva funcionalidad a la versión hasta llegar a la versión final de la aplicación. Este sistema tiene sus ventajas y sus inconvenientes. Como ventajas, presenta el hecho de que si no se cumple uno de los requisitos principales de la aplicación, se puede volver hacia atrás, más o menos rápido, o en todo caso se ha perdido poco tiempo. Pero como desventajas, se tiene un sistema que puede no llegar a ver una fecha de finalización real ya que siempre se va añadiendo nueva funcionalidad, o que en muchos casos se suele presentar como versión final una de las versiones que funcionan correctamente y que puede no tener completamente integrada toda la funcionalidad. 53 Programa para analizar documentos y detectar secciones coincidentes en Internet Por eso es muy útil para este tipo de desarrollos tener muy clara tanto la Identificación de necesidades (capítulo 1) como el Listado de requisitos (capítulo 5.1), que deberán haber sido validados y firmados por el cliente. Para el desarrollo de estas versiones se estudió que tipo de prototipo inicial sería el más acorde con el proyecto de entre los siguientes:  Prototipo Interfaz de Usuario: Atiende a la pregunta ¿se está construyendo el producto correctamente? En este tipo de prototipos se modelan básicamente las ventanas, informes y formularios de salida. Suele aparecer en las primeras fases del desarrollo: al final del análisis de requisitos o estudio de arquitectura, o en el diseño externo. Este tipo suele utilizar herramientas como generadores de código, lenguajes de cuarta generación y generadores de ventanas.  Prototipo Operativo: Atiende a la pregunta ¿se consiguen los parámetros deseados? En este tipo se modelan todos los elementos relacionados con las limitaciones técnicas: consumo de recursos, tiempo de proceso, eficiencia en las comunicaciones. Suele aparecer en el Diseño Externo o en Diseño Interno, siendo más habitual en esta última por tener en ella mayor impacto las limitaciones técnicas. Utiliza herramientas como simuladores, generadores de código y lenguajes de cuarta generación.  Prototipo Funcional: Atiende a la pregunta ¿la función simulada actúa correctamente? Este prototipo suele modelar las funciones de negocio que realiza el sistema, así como la transformación de los datos, como parte de un sistema informático. Suele aparecer en la etapa de Análisis 54 Programa para analizar documentos y detectar secciones coincidentes en Internet de Requisitos y se utiliza sobre todo en sistemas sin modelo actual (áreas de nueva creación), o con un modelo complejo, pues en ellos puede el análisis. Utiliza herramientas como lenguajes de cuarta generación, generadores de código, librerías de funciones y bases de datos, y no suele presentar interfaz con el usuario. Como se puede intuir el tipo de prototipo que más se acerca a lo que se necesita inicialmente es un prototipo funcional, puesto que como ya se ha dicho, se está ante una nueva tecnología, de la que no se dispone de un modelo anterior, y lo que se necesita es saber lo antes posible si los servicios ofrecidos son realmente lo que se busca. 55 Programa para analizar documentos y detectar secciones coincidentes en Internet 8.2 Prototipo 1 Google 8.2.1 Descripción del prototipo desarrollado Como se acaba de comentar se va a utilizar un prototipo funcional. La principal funcionalidad que tiene que representar este prototipo inicial es el acceso al servicio del buscador. Por lo que ya se explicó en el capítulo 6.2 (Estudio de arquitectura Software) se ha decidido utilizar las herramientas que cede Google para realizar llamadas a su buscador desde una aplicación desarrollada en Java. Para el uso de estas llamadas al buscador hay que incluir las librerías correspondientes a la gsajapi (API de java del GSA o Google Search Appliance), que está compuesta por: gsa-japi-1.8.jar, gsa-japi-test-1.8.jar, gsa-japi-doc-1.8.jar, gsajapi-src-1.8.jar. Estas librerías ya proveen de los objetos necesarios para realizar este tipo de aplicaciones:  El objeto GSAClient que debe incluir el nombre del host de Google ala que se pretende acceder (por ejemplo www.google.es).  El objeto GSAQueryTerm en el que se incluye la información de los términos que se pretenden encontrar al realizar la búsqueda.  El objeto GSAQuery que compone la nueva consulta que se va a realizar a partir del objeto GSAQueryTerm que se acaba de explicar. También a este objeto a través de sus diferentes métodos se le pueden modificar cierto parámetros de la búsqueda como: 56 Programa para analizar documentos y detectar secciones coincidentes en Internet o A través del método setFrontend(string) en el que se define el frontend de la consulta. Un ejemplo sería setFrontend (deafult_frontend) con el que se define el frontend por defecto. Siempre es necesario definir un frontend para que funcione correctamente. o Mediante el método setOutputFormat(OutputFormat) se puede escoger el formato de salida, por ejemplo con setOutputFormat (XML_NO_DTD) se escogería como formato de salida un tipo de XML. o Con el método setMaxResults(int) se puede definir el número máximo de resultados que se van a devolver como resultado de la búsqueda.  El último objeto que es necesario para poder realizar una consulta básica es un objeto de la clase GSAResponse que contempla la respuesta del sistema, y que se obtiene mediante el método getGSAResponse(GSAQuery) del objeto GSAClient. Una vez que se han obtenido estos resultados se muestran mediante un sistema muy simple por la ventana de comandos, ya que al ser un prototipo funcional no tiene necesidad de interfaz. 8.2.2 Pruebas realizadas Para las pruebas realizadas con este prototipo, todavía no se ha diseñado una entrada de datos, así que el término de búsqueda está introducido directamente 57 Programa para analizar documentos y detectar secciones coincidentes en Internet en el código y se ha realizado una búsqueda muy simple: la frase a buscar era “java sdk”. El resultado de estas pruebas no ha sido el esperado ya que han aparecido determinados errores de prohibición de Google, que se han podido deducir de la URL de respuesta que ha sido enviada como contestación. 8.2.3 Conclusiones de las pruebas Ha ocurrido lo peor que podía pasar la alternativa elegida a la hora de desarrollar la aplicación con respecto al buscador a utilizar ha sido errónea, aunque gracias al sistema que se ha utilizado el daño ha sido el menor posible. Por tanto hay que volver a seleccionar la alternativa de Yahoo como buscador principal, además ya se está pensando en abandonar el requisito de dar al usuario la capacidad de elegir un buscador u otro que en el fondo, dado que se trata de un requisito de baja prioridad, no debería generar un grave defecto sobre el resultado final. 58 Programa para analizar documentos y detectar secciones coincidentes en Internet 8.3 Prototipo 2 Yahoo 8.3.1 Descripción del prototipo desarrollado Tras encontrarse con el grave error anterior, se decidió empezar a desarrollar un nuevo prototipo incluyendo las funciones ofertadas por Yahoo. Como ya se dijo anteriormente, una vez que se ha decidido usar las funciones del buscador de Yahoo, hay que obtener un identificador para la aplicación que se va a desarrollar (se puede obtener desde esta dirección: http://developer.yahoo.com/ faq/#appid), que ciertamente no supone ningún problema. Una vez se dispone del identificador de la aplicación, para esta nueva implementación del prototipo se deben utilizar las funciones y objetos definidos en las librerías yahoo_search-2.0.1.jar, donde se incluyen todo lo necesario para poder hacer uso de los Yahoo Search Web Services (que ya fueron explicados en capítulo 2.2 Soluciones ofrecidas por Yahoo). Los principales objetos que se van a utilizar para este primer prototipo son:  Para empezar se debe crear un objeto de la clase SearchClient, el constructor de este objeto pide como único parámetro le identificador obtenido desde Yahoo para la aplicación. Gracias a este objeto cada vez que se utilice el servicio de búsqueda se sabrá que procede de esta aplicación, y se concederán los permisos necesarios. 59 Programa para analizar documentos y detectar secciones coincidentes en Internet  A continuación se genera un objeto de la clase WebSearchRequest, con lo que ya se indica que se quiere acceder al servicio Web Search de Yahoo, y en cuyo constructor se indica como parámetro el término que se va a enviar al sistema de búsquedas. Este es el objeto más importante de toda la búsqueda y al que además se puede añadir un mejor tratamiento mediante los siguientes métodos: o Para indicar que se desea buscar solamente los resultados correspondientes a un único lenguaje, se utiliza el método setLanguage(“identificador del lenguaje”). Este identificador del lenguaje es una cadena de caracteres específica que identifica de manera unívoca a un país. En el proyecto se valoró como requisito que las búsquedas sólo se ciñeran a páginas en el idioma español, cuyo identificador es “es”, y así se ha usado: setLanguage(“es”). o Un requisito extremadamente importante era el hecho de realizar estas búsquedas no como una búsqueda de todas las palabras en la frase, sino como una búsqueda de esa frase en cuestión. Al buscador, cuando se usa un navegador web, se le especifica poniendo la frase a buscar entre comillas (“”), pero para esta aplicación no servía. Para poder disfrutar de este servicio se debe utilizar el método, de este objeto, setType() pasando como parámetro la cadena “phrase”, es decir, setType(“phrase”).  Después se instancia un objeto de la clase WebSearchResults, que contiene todos los resultados de la búsqueda. Este objeto es una instancia de la clase que se devuelve desde el método webSearch 60 Programa para analizar documentos y detectar secciones coincidentes en Internet (WebSearchRequest) de la clase SearchClient. Para obtener más información de los resultados obtenidos se pueden utilizar diversos métodos de esta clase, como: o Como devolución del método getTotalResultsAvailable() se obtiene el número total de resultados disponibles para esa petición de búsqueda. o Con el método getTotalResultsReturned() se obtiene el número de resultados que se han enviado como respuesta a la aplicación. o Con el método listResults()[int] devuelve un objeto de la clase WebSearchResult, de entre todos los que se han recibido, que se encuentra en la posición del valor entero que se encuentra entre corchetes “[]”.  Como se acaba de explicar se necesita un objeto de la clase WebSearchResult para trabajar con cada resultado obtenido de la búsqueda realizada. Los métodos más útiles que permiten obtener la información que contiene el objeto son: o Del método getTitle() se puede obtener el título de la página Web donde se ha encontrado una coincidencia. o Del método getUrl() se puede obtener la dirección URL de la página Web donde se ha encontrado una coincidencia.  Por último hay que tener en cuenta que en los ejemplos que cede Yahoo, se avisa que estos métodos pueden producir dos excepciones principalmente, que deberán ser tratadas si corresponde. Estas excepciones son: IOException y SearchException. 61 Programa para analizar documentos y detectar secciones coincidentes en Internet 8.3.2 Pruebas realizadas Como ya se explicó con el anterior prototipo, todavía no se ha diseñado un interfaz para la entrada de datos y el término de la búsqueda debe ser insertado como una cadena directamente en el código, en el constructor de la clase WebSearchRequest. Una vez más el término que se ha utilizado para realizar la búsqueda es un termino sencillo y simple, se ha utilizado la frase “yahoo search”. 8.3.3 Conclusiones de la pruebas En esta ocasión los resultados sí que han sido los esperados y se han mostrado los mismos resultados que se muestran cuando se lanza el mismo término de búsqueda a través de un navegador Web al buscador de Yahoo. Como conclusión se puede decir que ya se tiene un modelo estable de la funcionalidad de la aplicación, que es la de buscar a través de los objetos de las librerías cedidas por la propia Yahoo. 62 Programa para analizar documentos y detectar secciones coincidentes en Internet 8.4 Versión Final Una vez desarrollado un modelo estable que cumple la funcionalidad de búsqueda a partir de este momento se deben desarrollar nuevas versiones donde se vayan implementando los diferentes requisitos en la aplicación. 8.4.1 Descripción de la versión desarrollada Como ya se ha explicado anteriormente la tarea de programación y pruebas se ha desarrollado en paralelo junto con la parte de diseño de la misma, ya que no sabía los problemas que se podían plantear. Esta versión final ha seguido un proceso evolutivo sobre el modelo estable del prototipo funcional 2.0, hasta que se ha podido implementar toda la funcionalidad exigida a la aplicación, se puede observar en el apartado 5.1 Listado de requisitos de esta memoria. Este proceso se ha desarrollado en el siguiente orden:  Se implementó la lectura de datos desde un fichero con extensión “.txt”. El proceso de lectura se realiza mediante un objeto DataInputStream, formado mediante un BufferedInputStream, que a su vez se forma a partir de un FileInputStream que lee del fichero seleccionado. Se lee de este objeto mediante lecturas de línea, que en este tipo de ficheros supone hasta que se encuentra un retorno de carro (cuyo código es “\n”). Esta lectura de un fichero arroja la posible excepción de fichero no encontrado (FileNotFoundException) correctamente. 63 que ha sido tratada Programa para analizar documentos y detectar secciones coincidentes en Internet  A continuación se definió la posibilidad de encontrar frases contiguas con un grupo de URLs coincidentes. Para ello se tuvo que utilizar los conceptos de párrafo y frase que se han explicado anteriormente, en el diseño, y que hasta su correcto funcionamiento ha tenido muchas redefiniciones, versiones y pruebas. Para llevar a cabo todo este proceso se han tenido que utilizar varios tipos de estructuras para almacenar y tratar los resultados, sobretodo se han utilizados objetos de la clase Vector para ir almacenando las URLs durante el proceso. además se ha creado el método buscaCoincidencias que permite buscar las coincidencias existentes entre los nuevos resultados encontrados (último WebSearchRequest implementado) y un objeto Vector con las URLs de anteriores coincidencias entre frases encontradas, y que devuelve un objeto Vector con las URLs que coinciden en ambos, es decir, el conjunto int

0 downloads 49 Views 1MB Size

Recommend Stories


Agradecimientos. Agradecimientos
M ANUAL DE M INIM IZACIÓN, TRATAM IENTO Y DISPOSICION CONCEPTO DE M ANEJO DE RESIDUOS PELIGROSOS E INDUSTRIALES PARA EL GIRO DE LA GALVANOPLASTIA Co

ELEMENTOS BÁSICOS PARA ANALIZAR Y CLASIFICAR CLIMOGRAMAS
Prácticas de Geografía de España ELEMENTOS BÁSICOS PARA ANALIZAR Y CLASIFICAR CLIMOGRAMAS Punto de partida: «Todos los climas peninsulares españoles

Agradecimientos
Esker onak / Agradecimientos Liburu hau egitea ezinezkoa izango zen hurrengoen laguntza ordainezinarik gabe: Este libro no hubiera sido posible sin l

Story Transcript

Programa para analizar documentos y detectar secciones coincidentes en Internet

AGRADECIMIENTOS Agradezco a mis padres que me han ayudado durante toda mi vida y que sé que siempre buscan lo mejor para mí.

A mis hermanos que han sabido guiarme, siempre dándome ejemplo y ayudándome en lo que han podido.

A mis amigos de la universidad que si no hubiera sido por ellos siento que no hubiese podido terminar la carrera. Y a todos mis otros amigos que me han ayudado en otros muchos aspectos de mi vida.

A Rafael Palacios y Eduardo Alcalde que me han ayudado en el desarrollo del proyecto y que en gran medida han ayudado a que llegue a buen término.

I

Programa para analizar documentos y detectar secciones coincidentes en Internet

RESUMEN DEL PROYECTO 1. Introducción Durante los últimos años se ha comprobado mediante diversos estudios que al menos el 30% de los trabajos tanto escolares como universitarios son parcial o totalmente copiados de fuentes accedidas a través de Internet. Este hecho hace, para el profesorado y las editoriales, muy complicado detectar si un trabajo es una copia o no, con lo que se pierde el valor con el que fue encargado el trabajo.

La herramienta que se ha desarrollado en este proyecto tiene como principal objetivo ayudar de la manera más sencilla a los profesores (cliente final de la aplicación), indicando si hay secciones coincidentes con documentos de Internet, aunque se deja en manos del usuario decidir si se puede considerar una copia o no, por ello el formato en que se presentan los resultados debe ser el más claro posible.

II

Programa para analizar documentos y detectar secciones coincidentes en Internet

2. Metodología La metodología utilizada para desarrollar este proyecto ha sido una metodología evolutiva donde las tareas de diseño, programación y pruebas se han llevado en paralelo. Uno de los principales requisitos de la aplicación, ha sido el hecho de utilizar los servicios de los que proveen los buscadores más importantes para elaborar este tipo de proyectos, ya que aunque requiere un estudio elaborado de su funcionamiento, es la solución que reporta mayor calidad en los resultados de las búsquedas. Se estudiaron a fondo estas soluciones y en un principio se llegó a implementar una aplicación basada en los servicios cedidos por Google. Pero debido a limitaciones de uso de Google finalmente se han tenido que usar los servicios provistos por el otro principal buscador del mercado, Yahoo.

3. Descripción de la aplicación La aplicación desarrollada tiene como entrada de datos el documento para el cual se desea comprobar si tiene alguna sección coincidente en Internet. Este documento debe presentarse en formato de texto (.txt), y el documento de salida donde se presentan los resultados es un documento HTML donde se muestra párrafo a párrafo el contenido del documento original y, después de cada párrafo, los enlaces para acceder a los documentos con sección coincidente que se han encontrado.

Dentro de un párrafo se realizan varias búsquedas de tamaño pequeño y se pueden distinguir los resultados de un fragmento del párrafo u otro. En el documento de resultados se ha utilizado un código de colores: el texto copiado y los enlaces

III

Programa para analizar documentos y detectar secciones coincidentes en Internet

correspondientes presentan el mismo color de fondo, mientras que el texto original (o no analizado) se muestra con fondo blanco.

Documento inicial

Documento de salida

(.txt)

(.html)

Un ejemplo de la salida del programa se muestra a continuación:

IV

Programa para analizar documentos y detectar secciones coincidentes en Internet

4. Tecnología de la aplicación Los puntos clave que se han conseguido con el desarrollo de la aplicación son:

 Que sólo se buscan frases completas, normalmente de hasta un tamaño de 150 caracteres.  Dos búsquedas seguidas (dentro de un mismo párrafo), que tienen resultados de búsqueda coincidentes se iluminan del mismo color.  Se muestran los resultados agrupados cuando hay secciones coincidentes largas y no los resultados de las búsquedas individuales.  Un texto corto (como un título, una enumeración, …) no se intenta buscar.  La aplicación se ha diseñado de tal forma que también funciona con caracteres internacionales como ñ, acentos, (,), etc.  Se permite a los usuarios definir la profundidad del escaneo indicando cada cuántos párrafos se realizará una búsqueda, lo que además reduce considerablemente el tiempo de ejecución de la aplicación.

V

Programa para analizar documentos y detectar secciones coincidentes en Internet

ABSTRACT 1. Introduction During the last years many studies have proved that at least 30% of the assignments are partially or totally copied from Internet fonts. This fact makes a harder work for professors and editors to detect if an assignment has been copied or not, so the assignment loses the value it has been asked for.

The tool developed within this project’s main objective is to help professors (the final client of the application), in the easiest way, indicating if there are any coincident sections with other documents on the Internet. But it’s the user who finally estimates if the document is a copy or not, so the results document must be presented the simplest way as possible.

2. Methodology The methodology used to develop this project has been an evolutionary methodology where the design, programming and testing stages have followed parallel lines. One of the main requirements has been to use the services that the companies provide to use their search engines, which needs a deep study of it’s functioning, but it’s the solution that provides the best quality in the search results. It has been studied both solutions offered by Google and Yahoo, but finally the chosen one has been Yahoo.

VI

Programa para analizar documentos y detectar secciones coincidentes en Internet

3. Description of the application The application developed has as data entry the document that is going to be evaluated, which can only be presented in text format. And the output document where the results appear is a HTML document where the original document is presented paragraph by paragraph, and after each paragraph appear the links to the documents with a coincident section. Inside each paragraph the application does many small size searches, and in the output document it can be distinguished the results from each piece of the paragraph using a colour code.

Input document

Output document

(.txt)

(.html)

VII

Programa para analizar documentos y detectar secciones coincidentes en Internet

4. Application’s technology The key points that have been carried out with the development of the application have been:

 Only complete phrases are searched. Normally until a size of 150 characters.  Two consecutive searches (within the same paragraph), which have coincident search results are illuminated with the same background colour.  The application shows grouped results when there are large coincident sections.  The application doesn’t try to search short texts (such as indexes, titles…).  The application works with international characters.  The users can define the deep of the scan, defining an interval of paragraphs to search. This possibility also reduces the execution time of the application.

VIII

Programa para analizar documentos y detectar secciones coincidentes en Internet

ÍNDICE AGRADECIMIENTOS ..................................................................................................I RESUMEN DEL PROYECTO .....................................................................................II 1. Introducción......................................................................................................II 2. Metodología ....................................................................................................III 3. Descripción de la aplicación............................................................................III 4. Tecnología de la aplicación............................................................................. V ABSTRACT............................................................................................................... VI 1. Introduction .................................................................................................... VI 2. Methodology................................................................................................... VI 3. Description of the application ........................................................................ VII 4. Application’s technology............................................................................... VIII ÍNDICE ...................................................................................................................... IX 1. INTRODUCCIÓN ....................................................................................................1 2. ESTADO DEL ARTE ..............................................................................................3 2.1 SOLUCIONES OFRECIDAS POR GOOGLE ..................................................................4 2.1.1 Google Data (GData): .................................................................................4 2.1.2 Google Desktop Search Query API.............................................................9 2.1.3 Google Web Toolkit.....................................................................................9 2.1.4 Google Ajax Search API............................................................................10 2.1.5 Google Search Appliance APIs: Google Enterprise Developer Community ...........................................................................................................................11 2.1.6 Google XML Reference.............................................................................12 2.2 SOLUCIONES OFRECIDAS POR YAHOO ..................................................................13 2.2.1 Audio Search.............................................................................................15 2.2.2 Content Analisis ........................................................................................15 2.2.3 Image Search............................................................................................15 2.2.4 Local Search .............................................................................................15 2.2.5 My Web .....................................................................................................15 2.2.6 News Search.............................................................................................16 2.2.7 Site Explorer..............................................................................................16 2.2.8 Video Search.............................................................................................16 2.2.9 Web Search ..............................................................................................17 2.2.10 Acceso a los servicios .............................................................................17 3. INTRODUCCIÓN A LA METODOLOGÍA DE DESARROLLO .............................19 4. IDENTIFICACIÓN DE NECESIDADES.................................................................22 4.1 OBJETIVOS DEL SISTEMA .....................................................................................22 4.2 ALCANCE DE LA APLICACIÓN ................................................................................23 Extracción y carga de datos ...............................................................................23 Adaptación y búsqueda de coincidencias ..........................................................23 Presentación de los resultados ..........................................................................23

IX

Programa para analizar documentos y detectar secciones coincidentes en Internet

4.3 TIPOLOGÍA DE USUARIOS .....................................................................................24 4.4 RESTRICCIONES .................................................................................................24 4.5 ORGANIZACIÓN ..................................................................................................25 4.6 ANTECEDENTES .................................................................................................26 Plagiarism Finder ...............................................................................................27 5. ANÁLISIS DE REQUISITOS.................................................................................29 5.1 LISTADO DE REQUISITOS .....................................................................................29 6. ESTUDIO DE ARQUITECTURA...........................................................................36 6.1 HARDWARE ........................................................................................................36 6.2 SOFTWARE ........................................................................................................38 7. DISEÑO.................................................................................................................40 7.1 INTERFAZ DE LA APLICACIÓN ................................................................................41 7.2 DOCUMENTO DE SALIDA DE LA APLICACIÓN ...........................................................43 7.3 TRATAMIENTO DEL TEXTO ORIGINAL .....................................................................45 7.4 LÓGICA DE LA APLICACIÓN ...................................................................................48 7.4.1 Versión 1 ...................................................................................................50 7.4.2 Versión 2 ...................................................................................................51 7.4.3 Versión 3 ...................................................................................................51 8. PROGRAMACIÓN Y PRUEBAS ..........................................................................53 8.1 PLANIFICACIÓN ...................................................................................................53 8.2 PROTOTIPO 1 GOOGLE .......................................................................................56 8.2.1 Descripción del prototipo desarrollado ......................................................56 8.2.2 Pruebas realizadas....................................................................................57 8.2.3 Conclusiones de las pruebas ....................................................................58 8.3 PROTOTIPO 2 YAHOO .........................................................................................59 8.3.1 Descripción del prototipo desarrollado ......................................................59 8.3.2 Pruebas realizadas....................................................................................62 8.3.3 Conclusiones de la pruebas ......................................................................62 8.4 VERSIÓN FINAL ..................................................................................................63 8.4.1 Descripción de la versión desarrollada......................................................63 8.4.2 Pruebas realizadas....................................................................................67 8.4.3 Conclusiones de las pruebas ....................................................................68 9. DESARROLLOS FUTUROS.................................................................................69 9.1 PREPROCESO AUTOMÁTICO DE DOCUMENTOS .......................................................70 9.2 SOPORTE DE OTROS FORMATOS PARA EL ORIGEN DE DATOS ..................................71 9.3 REPOSITORIO LOCAL DE DOCUMENTOS ANTIGUOS .................................................72 9.4 MEJORA DE LA BÚSQUEDA POR SOLAPAMIENTO .....................................................73 10. MANUAL DE USUARIO .....................................................................................74 10.1 REQUERIMIENTOS DEL SISTEMA .........................................................................74 Instalación de la Máquina Virtual Java (JVM) ....................................................74 10.2 UTILIZACIÓN DE LA APLICACIÓN ..........................................................................77 10.2.1 Instalación ...............................................................................................77 10.2.2 Arranque de la aplicación........................................................................78

X

Programa para analizar documentos y detectar secciones coincidentes en Internet

10.2.3 Correcta ejecución de la aplicación.........................................................78 10.2.4 Opciones avanzadas...............................................................................82 11. CONCLUSIONES ...............................................................................................85 12. PLANIFICACIÓN DEL PROYECTO ...................................................................87 13. VALORACIÓN ECONÓMICA .............................................................................89 14. BIBLIOGRAFÍA ..................................................................................................90 14.1 LIBROS ............................................................................................................90 14.2 RECURSOS W EB ..............................................................................................90 14.3 OTRAS REFERENCIAS ........................................................................................92

XI

Programa para analizar documentos y detectar secciones coincidentes en Internet

1. INTRODUCCIÓN Este proyecto se basa en la necesidad existente en el mundo académico de una herramienta que ayude de una manera sencilla e intuitiva a descubrir si se encuentran ante un trabajo original o que incluye secciones previamente publicadas.

Desde hace ya un tiempo Internet es una herramienta de uso generalizado, y mucho más en la situación que se corresponde con la ingeniería en informática. Actualmente se sabe que existen multitud de lugares desde donde se puede obtener información y, además, gracias a la potencia de los buscadores de Internet actuales, esta información se puede obtener rápida y sencillamente.

El propósito de este proyecto no es el de invalidar los documentos, que se puedan encontrar en Internet, como fuente de información a la hora de elaborar trabajos, sobretodo, porque quizás se trate de la mejor fuente de información ya que normalmente se obtiene información actualizada y de gran calidad. Lo que se pretende es lo mismo que se busca a la hora de pedir un trabajo, adquirir conocimientos a partir de esta búsqueda de información y obtener uno mismo sus propias conclusiones y plasmarlas con sus propias palabras. Esto evidentemente, no invalida el hecho de que en ciertas ocasiones, si lo que se busca es realmente dar una definición exacta de un concepto, suele ser mucho mejor utilizar una descripción técnica que ya esté realizada, si bien sería necesario citar la fuente original como referencia.

1

Programa para analizar documentos y detectar secciones coincidentes en Internet

En conclusión, lo que se ha buscado, sobre todo, es eliminar esa posibilidad, que cada vez existe más, de entregar documentos realizados por otros autores como si los hubiera hecho uno mismo, y que incluso en ocasiones ni siquiera se han leído de forma completa. Proporcionando al profesorado o a los editores una herramienta que les ayude a la hora de tomar las decisiones correspondientes y poder tener pruebas de la falta cometida.

2

Programa para analizar documentos y detectar secciones coincidentes en Internet

2. ESTADO DEL ARTE Actualmente los diversos motores de búsqueda para Internet, están adquiriendo mucha más importancia y cada vez desarrollando nuevas y mejores aplicaciones para los distintos usuarios.

De un tiempo a esta parte estos buscadores han empezado a ofrecer muchos más servicios aparte de la búsqueda por Internet, como pueden ser servicios de correo, de mensajería instantánea, de calendario, etc. que han sido desarrollados por ellos mismos. Pero últimamente lo que más se está dando es que, visto que la comunidad de Internet tiene muchas ideas nuevas, se tiende a facilitar a éstos todas las herramientas posibles para que desarrollen sus propias aplicaciones, basadas en un determinado buscador. En muchas ocasiones estas aplicaciones han sido adquiridas por la empresa del buscador y se han convertido en un nuevo servicio.

Por todo esto, se ha considerado importante el hecho de hacer un estudio sobre las principales herramientas que ofrecen. Como cada empresa ofrece distintas ayudas se ha decidido centrarse en los dos principales buscadores y eso es lo que se va a mostrar a continuación.

A lo largo de los últimos años surgieron muchos buscadores pero era cuestión de tiempo que acabaran desapareciendo. Actualmente los clientes se encuentran frente a dos competidores, el buscador principal, Google y su competidor directo, Yahoo. En las herramientas que ofrecen ambas empresas va a ser en lo que se centre este estudio.

3

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.1 Soluciones ofrecidas por Google En la siguiente dirección: http://code.google.com/apis.html, se pueden encontrar todas las soluciones que ofrece Google para implantar su sistema de búsquedas, además de otras aplicaciones, muy útiles en distintos ámbitos.

Antes de empezar a explicar las diferentes APIs que ofrece Google, se ha considerado importante explicar el concepto de Google Data (GData) en el que se basan muchas aplicaciones que proporciona Google.

2.1.1 Google Data (GData): Las APIs de GData (ver Referencia [1]) proporcionan un protocolo estándar sencillo que se utiliza para leer y transmitir datos en la red.

Usa dos estándares de distribución basados en el formato XML: Atom o RSS.

El XML (eXtensible Markup Language) es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificación y adaptación del SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para distintas necesidades.

XML es una tecnología sencilla, que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la

4

Programa para analizar documentos y detectar secciones coincidentes en Internet

compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.

Como se decía anteriormente, GData usa Atom o RSS. RSS lleva más tiempo en varias versiones; Atom es más reciente, pero tiene más prestaciones. Además Atom provee el APP (Atom Publishing Protocol), un protocolo basado en HTTP para la publicación y edición de recursos web.

A continuación se va a mostrar una relación de servicios de Google que tienen una API de GData:

 Google Apps Provisioning Google Apps (ver Referencia [2]) permite a los administradores web ofrecer a sus usuarios versiones probadas de una gran variedad de aplicaciones Google personalizadas, como por ejemplo Gmail. La API de Google Apps Provisioning ayuda a los partners (compañeros) de Google a permitir, programándolo, acceder a estas aplicaciones. Específicamente, la API provee de funciones para crear, buscar, actualizar y borrar cuentas de usuario, apodos (nicknames) y listas de e-mails.

 Google Base Data La API de Google Base Data (ver Referencia [3]) está diseñada para permitir hacer, principalmente, dos cosas a los desarrolladores:

o Lanzar consultas (búsquedas) a los datos de Google Base para crear aplicaciones y “mashups”.

5

Programa para analizar documentos y detectar secciones coincidentes en Internet

o Insertar y gestionar objetos de Google Base desde la programación.  Blogger Data La API de Blogger Data (ver Referencia [4]) permite a las aplicaciones cliente ver y actualizar contenidos en forma de feeds de GData. La aplicación cliente puede usar GData para hacer nuevos posts (anuncios, comentarios) en el blog, editar o borrar posts existentes, y buscar posts que concuerden con un determinado criterio de búsqueda.

Aquí se muestran unos ejemplos de lo que se puede conseguir con la API de Blogger Data:

o Añadir una lista activa de posts y comentarios de un blog a un sitio Web. o Crear una aplicación de escritorio o plugin (funcionalidad añadida) que permita a los usuarios crear y subir posts desde el escritorio. o Crear una aplicación agregadora de blogs.  Google Calendar Data Google Calendar permite a las aplicaciones cliente ver y actualizar eventos del calendario en forma de GData feeds. La aplicación cliente puede usar la API (ver Referencia [5]) para crear nuevos eventos, editar o borrar eventos existentes, y buscar eventos que concuerden con un determinado criterio de búsqueda.

6

Programa para analizar documentos y detectar secciones coincidentes en Internet

A continuación se muestran algunos ejemplos de lo que se puede hacer con la API Google Calendar Data:

o Crear un espacio que permita a la gente ver la información de su Google Calendar desde otra página Web. o Publicitar eventos futuros para añadirlos desde la programación a Google Calendar. o Mezclar y hacer coincidir APIs de Google, como por ejemplo mostrar eventos futuros en Google Maps combinando la API de Google Calendar Data y la API de Google Maps.  Google Code Search Esta API (ver Referencia [6]) permite a las aplicaciones cliente y Web buscar código fuente público para definición de funciones y códigos de ejemplo.

Aquí se muestran algunos usos de esta API:

o Crear un plugin (funcionalidad añadida) para el IDE que se prefiera que busque código de ejemplo relevante por el índice de Code Search. o Crear aplicaciones cliente que usen Google Code Search para encontrar definiciones de funciones y código de ejemplo.  Google Notebook Data La API (ver Referencia [7]) permite a las aplicaciones cliente ver contenido público del bloc de notas en forma de GData feeds. La

7

Programa para analizar documentos y detectar secciones coincidentes en Internet

aplicación cliente puede pedir una lista de los bloc de notas públicos de un usuario, o preguntar el contenido de un bloc de notas público existente.

Aquí se muestran algunos ejemplos de su posible uso:

o Obtener una lista de los bloc de notas públicos publicados por un usuario en particular. o Mantener un seguimiento sobre el nuevo contenido añadido a un bloc de notas sobre el que se esté interesado.  Google Spreadsheets Data Esta API (ver Referencia [8]) permite a las aplicaciones cliente ver y actualizar hojas de cálculo (spreadsheets) en forma de GData feeds. La aplicación cliente puede pedir una lista de las hojas de cálculo de un usuario, editar o borrar contenido en una hoja de trabajo de una hoja de cálculo existente, y pedir el contenido de la hoja de trabajo de una hoja de cálculo.

Ahora se verán unos cuantos ejemplos de lo que se puede conseguir con esta API:

o Usar una hoja de cálculo como base de datos para otra aplicación mediante esta API. o Usar una librería externa que dibuje gráficos con la API para añadir gráficos a un sitio Web. o Implementar funciones de auto-filtrado u otras de las funciones habituales de las hojas de cálculo en una aplicación.

8

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.1.2 Google Desktop Search Query API Google Desktop indexa y busca contenido dentro de la propia máquina, se puede utilizar tanto en modo de sólo lectura, como lectura escritura (para borrar archivos del índice de Google Desktop). Esto permite gestionar diversos tipos de documentos fácilmente.

A través de las APIs del Desktop Software Development Kit’s Query (ver Referencia [9]), las aplicaciones pueden enviar búsquedas directamente a Google Desktop y procesar los resultados.

Para este proyecto en cuestión, esta solución que ofrece Google sólo sería útil si se quisiera tener un repositorio de documentos para comparar un documento no sólo con ficheros que se puedan acceder por Internet, sino con otros documentos a los que no se pueda acceder desde un buscador. Esto es útil cuando se sabe que los documentos están relacionados entre si, por ejemplo Proyectos Fin de Carrera, trabajos de años precedentes, prácticas, …

2.1.3 Google Web Toolkit Google Web Toolkit (GWT ver Referencia [10]) es un entorno de desarrollo en Java open source, que permite desarrollar aplicaciones en AJAX como Google Maps o GMail de una manera muy sencilla. Programar aplicaciones web dinámicas hoy en día es una tarea tediosa además de difícil de depurar. Se emplea el 90% del tiempo trabajando sobre pequeñas incompatibilidades entre navegadores y plataformas, y la falta de modularidad en JavaScript hace que compartir, probar y reutilizar componentes sea algo difícil y que normalmente da muchos problemas.

9

Programa para analizar documentos y detectar secciones coincidentes en Internet

Con GWT se pueden desarrollar y compilar aplicaciones AJAX en lenguaje Java usando las herramientas de desarrollo Java que se quieran. Más adelante el compilador del GWT traduce la aplicación Java a un JavaScript y HTML plenamente comprensible por los navegadores.

A continuación se muestra el ciclo de desarrollo con GWT:

1. Se usa el IDE Java preferido para escribir y compilar una aplicación en Java, usando tantas librerías de GWT como estimen útiles. 2. Se usa el compilador Java-to-JavaScript de GWT para transformar la aplicación en un conjunto de ficheros JavaScript y HTML que se pueden usar con cualquier servidor web. 3. Se confirma que la aplicación funciona en cualquier navegador que se quiera, es decir, que la aplicación sea plenamente funcional en cualquiera de los navegadores soportados.

2.1.4 Google Ajax Search API La API de Google AJAX Search (ver Referencia [11]) es una librería Javascript que permite embeber la búsqueda de Google en una página web o en otras aplicaciones web. Conviene comentar que para poder usarla primero se necesita obtener una clave de la API de Google AJAX Search, que es válida para un solo directorio del servidor web, incluyendo cualquiera de sus subdirectorios.

La API de Google AJAX Search trabaja con objetos web simples que realizan búsquedas internas sobre un número de servicios Google (Web Search, Local Search, Video Search, Blog Search, News Search, y Book Search). Si la página web

10

Programa para analizar documentos y detectar secciones coincidentes en Internet

está diseñada para ayudar a los usuarios a crear contenidos (por ejemplo tablones de mensajes, blogs, etc.) la API está diseñada para ayudar a estas actividades permitiendo copiar directamente resultados de búsquedas en los mensajes.

Google también avisa de que mejorará esta API periódicamente, y que se deberá actualizar la web a las nuevas versiones de la API según vayan estando disponibles. El equipo de la API de Google AJAX Search marcará las notificaciones de los nuevos cambios en el blog de la API de Google AJAX Search (http://googleajaxsearchapi.blogspot.com/). Si se realizara un cambio que no es compatible con versiones anteriores, avisan que se dará como mínimo un tiempo razonable para hacer la transición; y durante este periodo ambas versiones de la API estarán disponibles.

Como ya se puede ver esta API que ofrece Google no sería útil para el proyecto en desarrollo, ya que sólo se puede utilizar desde páginas web.

2.1.5 Google Search Appliance APIs: Google Enterprise Developer Community El protocolo de búsqueda de Google Search Appliance (GSA ver Referencia [12]) es un protocolo simple basado en HTTP para presentar los resultados de búsquedas. El protocolo de Feed (cebado) de GSA permite a un cliente o a un desarrollador escribir un conector cliente para meter una fuente de datos en la GSA para su procesado, indexado y que esté disponible para las búsquedas. El protocolo de Autorización de GSA permite, a un servicio web del cliente, autorizar a usuarios a acceder a documentos específicos para buscar en tiempo real, elevando su entorno de seguridad existente y control de acceso.

11

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.1.6 Google XML Reference Basándose en la GSA, en este documento (ver Referencia [13]) se muestran los aspectos técnicos sobre como se piden búsquedas y como se devuelven y presentan los resultados al usuario final. Además describe como son los formatos de ambas (petición y resultados).

Esto va a ser lo que, en principio, será lo más útil para este proyecto.

12

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.2 Soluciones ofrecidas por Yahoo Por otra parte todo lo que ofrece Yahoo se encuentra en el Yahoo Search Developer Kit (ver Referencia [14]) que es una recopilación de librerías y códigos de ejemplo para acceder al servicio de búsquedas web de Yahoo.

Los Yahoo! Search Web Services (Servicios de búsqueda Web de Yahoo!) permiten acceder al contenido y servicios de Yahoo desde cualquier lenguaje de programación. Esto significa que ahora se pueden construir llamadas a Yahoo directamente desde cualquier aplicación (se pueden ver algunos ejemplos de lo que se puede conseguir en la Referencia [15]).

Los Yahoo! Web Services (Servicios Web de Yahoo!) son una forma de que los desarrolladores de aplicaciones accedan al contenido y los servicios para crear nuevas aplicaciones. Por ejemplo, se pueden combinar los datos y servicios de Yahoo! con los que se creen en una aplicación de escritorio o aquellos ofrecidos por otros sitios Web.

Los Yahoo! Web Services han sido creados para los desarrolladores, los negocios y los investigadores que estén interesados en usar productos, servicios, datos y contenido de Yahoo! como un recurso en sus aplicaciones. Ahora mismo, este programa es gratis, sin estar sujeto a ningún SLA (Service Level Agreement o Acuerdo de Nivel de Servicio) o acuerdo futurible, pero sí está sujeto a límites diarios en volumen de peticiones.

Todos los Web Services están disponibles para el uso hasta el límite del ratio estándar por servicio en aplicaciones y sitios Web de acuerdo con los términos de

13

Programa para analizar documentos y detectar secciones coincidentes en Internet

uso de Yahoo! (ver Referencia [16]). Muchos de los Web Services pueden permitir ciertos tipos de uso en un negocio, pero esto puede variar de un servicio a otro, se pueden revisar los Términos de Uso (ver Referencia [17]) generales para obtener más información acerca de lo que está permitido y lo que no.

Para acceder a los Yahoo! Web Services, se pedirá que se registre y use un ID de la aplicación (ver Referencia [18]), que estará vinculado a la aplicación. El ID de la aplicación debe ser enviado con cada petición de los Web Services. La aplicación también deberá seguir los Términos de Uso e incluir una “attribution” (ver Referencia [19]), que es una forma de conectar la aplicación de vuelta a Yahoo!.

El ID de la aplicación es una cadena de caracteres que identifica unívocamente a la aplicación. Si se tienen múltiples aplicaciones, se debe usar un identificador distinto para cada una (para poder conseguir un ID consultar Referencia [20]). Lo óptimo sería crear primero el ID de la aplicación antes de construir la aplicación para que se pueda tener el nombre de ID que se quiera.

Una vez obtenido el ID de aplicación, habrá que descargarse el kit de desarrollo (ver Referencia [21]) que contiene librerías y ejemplos licenciados con la licencia BSD (pertenece al grupo de licencias de software Libre, y como punto fuerte es una licencia que permite el uso del código fuente en software no libre) para varios lenguajes: Perl, Python, PHP, Java, JavaScript y Flash.

Se pueden crear aplicaciones con Yahoo! Search Web Services usando datos desde:

14

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.2.1 Audio Search El servicio Audio Search de Yahoo! (ver Referencia [22]) provee de acceso a datos musicales y archivos de audio usando consultas estructuradas y no estructuradas.

2.2.2 Content Analisis El servicio de extracción de términos web (ver Referencia [23]) provee una lista de palabras significativas o frases extraídas de un mayor contenido.

2.2.3 Image Search El servicio web Image Search de Yahoo (ver Referencia [24]) permite buscar imágenes en Internet.

2.2.4 Local Search Las APIs del servicio Local Search (ver Referencia [25]) ofrecen una forma de conectar la riqueza de datos en Yahoo! Local (ver Referencia [26]), incluyendo las valoraciones y comentarios hechos por los usuarios de Yahoo!.

2.2.5 My Web My Web (ver Referencia [27]) es un motor de búsqueda personal de Yahoo! Search que permite guardar páginas web (incluidas copias de texto), compartirlas, añadir notas a ellas, y usar la potencia de Yahoo! Search para reencontrarlas instantáneamente.

15

Programa para analizar documentos y detectar secciones coincidentes en Internet

My

Web

existe

en

dos

versiones.

My

Web

1.0

(http://myweb

.search.yahoo.com/myweb/) que permite guardar URLs en carpetas y compartirlas con otros usuarios. Y My Web 2.0 (http://myweb2 .search.yahoo.com/myweb/) que permite cargar URLs y compartirlas públicamente si se desea. Cada versión es independiente y tiene sus propios datos y servicios web.

2.2.6 News Search El servicio News Search (ver Referencia [28]) permite buscar en Internet artículos de noticias.

2.2.7 Site Explorer Las APIs del servicio Site Explorer de Yahoo! (ver Referencia [29]) dan acceso a información acerca de el sitio web del que se es propietario desde el servicio Site Explorer (ver Referencia [30]) de Yahoo!. Estas APIs ayudan a comprender mejor el tráfico y utilización del sitio web (preguntando por las páginas en el índice de Yahoo! que se enlazan con el sitio). Serán útiles para comprobar quien está enlazado con la página y para crear alternativas efectivas contra los trackbacks que son fácilmente atacados por el spam.

2.2.8 Video Search Este servicio (ver Referencia [31]) permite buscar en Internet clips de video.

16

Programa para analizar documentos y detectar secciones coincidentes en Internet

2.2.9 Web Search Los servicios de Web Search de Yahoo! (ver Referencia [32]) permiten acercarse al potencial de las tecnologías de Yahoo! Search desde dentro de otros sitios web, aplicaciones o entornos. Estos servicios sirven para realizar peticiones a los sistemas de Yahoo! sin dejar el sitio web o interfaz e incorporar los resultados en las aplicaciones.

2.2.10 Acceso a los servicios Yahoo! Search Web Services opera vía peticiones HTTP como cualquier buscador web. Las peticiones se forman empezando con una URL que es el punto de entrada al servicio (como por ejemplo http://search.yahooapis.com/WebSearch Service/V1/webSearchfor para peticiones de búsqueda web), y añadiendo argumentos a la petición que especifiquen los resultados deseados (como por ejemplo ?query=U2). Los resultados devueltos por el servicio vienen en formato XML que varía según el servicio. Los programas pueden usar estos servicios enviando una petición, obteniendo la respuesta y analizando el XML devuelto para extraer la información que se necesite. Alternativamente, se pueden usar las APIs del SDK para tratar las especificaciones del protocolo. Cada servicio acepta un grupo distinto de argumentos de búsqueda y genera respuestas estructuradas en XML de distintas formas. Para ver las especificaciones de cada servicio hay que consultar su documentación.

17

Programa para analizar documentos y detectar secciones coincidentes en Internet

Yahoo! impone dos requisitos técnicos a la hora de usar estos servicios. Primero, se requiere que cada aplicación que use estas APIs utilice un ID que debe solicitarse formalmente para cada aplicación. Este identificador deberá ser enviado con cada petición en el parámetro “appid”. Segundo, se limita la frecuencia por la que cada aplicación puede acceder a estos servicios. Estos límites vienen impuestos independientemente para cada servicio y el rango es habitualmente de alrededor de los cientos de accesos por día y por aplicación. Para consultar los límites individuales de cada servicio hay que ver la documentación de cada uno.

18

Programa para analizar documentos y detectar secciones coincidentes en Internet

3. INTRODUCCIÓN A LA METODOLOGÍA DE DESARROLLO Basándose en la naturaleza de este proyecto, se piensa que la metodología o paradigma del desarrollo de sistemas más acorde con este proyecto es aquella que se basa en un Modelo incremental o evolutivo.

Este tipo de metodología se constituye sobre el hecho de que se comienza el desarrollo satisfaciendo un conjunto de requisitos, partiendo de una base estable. Las siguientes versiones proveen progresivamente los requisitos que faltan, evolucionando el sistema fase a fase.

Esta metodología suele utilizarse en sistemas complejos, donde se admiten versiones del producto y en desarrollos con alta componente de investigación. En este caso se piensa que es la metodología más interesante porque permite experimentar con prototipos ejecutables intermedios, que en este caso al estar pensado usar las soluciones ofertadas por los buscadores, es importante poder experimentar lo antes posible sobre prototipos. Además de facilitar el hecho de implantar nuevas funcionalidades en etapas más avanzadas del proyecto.

Las etapas que componen la metodología que se va a seguir para realizar el proyecto son las siguientes:

 Identificación de Necesidades: Se elaborará el Documento de Conceptos del Sistema tras realizar las entrevistas necesarias con el cliente, en este caso el director del proyecto que es el que hará las veces de representante del cliente.

19

Programa para analizar documentos y detectar secciones coincidentes en Internet

 Análisis de Requisitos: Una vez identificadas las características del problema, se definirán las necesidades y problemas que presente proyecto. Viendo los tipos de documentos que se pretenden tratar y los resultados que se espera obtener, se debe realizar una lista con los requisitos específicos que debe cumplir el proyecto.

 Estudio de Arquitectura: En este caso se tratará de realizar un estudio de las soluciones que se plantean para los diversos requisitos.

Además de todo esto, durante la etapa de desarrollo se deberá decidir qué arquitectura y qué lenguaje de programación es el más conveniente para la aplicación que se va a desarrollar.

 Diseño, programación y pruebas del sistema: Se trata de la etapa más importante del proyecto y consecuentemente la que más duración tendrá, en ella se realizarán tres tareas en paralelo y de manera evolutiva sobre sus propios resultados. Estas tres tareas son el Diseño de la aplicación, la Programación y las Pruebas.

La labor que se va a realizar seguirá el siguiente orden:

o Se diseña un prototipo o nueva versión. o Se programa este diseño.

20

Programa para analizar documentos y detectar secciones coincidentes en Internet

o Se realizan pruebas sobre el mismo hasta que sea válido y estable.  Implantación: Se procederá a la implantación de la aplicación (elaboración del manual de la aplicación, de instalación, …).

También se ha pensado que el tipo de prototipo más acorde con este proyecto es el prototipo funcional, puesto que lo que interesa, en un principio, es si se realizan bien las funciones para las que está destinada la aplicación, si utilizando lo que dan se es capaz de encontrar lo que se debería. Se ha considerado como secundario el hecho de cómo va a ser el interfaz de usuario o si cumple unas determinadas limitaciones técnicas. Sin embargo, se ha realizado un importante esfuerzo en definir un formato de salida adecuado para presentar los resultados de manera clara y concisa.

21

Programa para analizar documentos y detectar secciones coincidentes en Internet

4. IDENTIFICACIÓN DE NECESIDADES 4.1 Objetivos del sistema Se pretende desarrollar una aplicación para el profesorado, que a partir de un documento deberá indicar qué partes del mismo han sido copiadas directamente de un documento de Internet ya existente. La aplicación deja al usuario la elección de lo que se considerará una copia, simplemente se muestran las coincidencias que se han encontrado. También se dejará a elección del usuario el nivel de profundidad con el que desea que se busquen coincidencias.

Los objetivos con los que se pensó realizar esta aplicación son:

 Permitir al usuario, verificar si un documento que posee en formato electrónico es una copia parcial o total del otro documento disponible en Internet.  Permitir al usuario realizar un estudio sencillo de las secciones coincidentes con documentos de Internet, indicando en cuales se ha detectado mayor o menor índice de coincidencia.  Permitir que los usuarios puedan acceder al documento donde se ha encontrado la coincidencia de una manera sencilla.

22

Programa para analizar documentos y detectar secciones coincidentes en Internet

4.2 Alcance de la aplicación El desarrollo de la aplicación implica las funciones que se determinan a continuación:

Extracción y carga de datos Tiene como objetivo la extracción de los datos de un documento de tipo fijo.

Adaptación y búsqueda de coincidencias Se adapta el contenido del documento y se buscan las posibles coincidencias.

Presentación de los resultados Se presentan los resultados de modo que se puedan interpretar de forma rápida y sencilla.

23

Programa para analizar documentos y detectar secciones coincidentes en Internet

4.3 Tipología de usuarios Los usuarios del sistema serán inicialmente los miembros del profesorado de la Universidad Pontificia Comillas. Estos usuarios no presentan en principio unas necesidades distintas entre sí, por lo que se pueden agrupar en un único conjunto. En principio el número de usuarios del sistema no tiene porqué afectar al rendimiento del mismo tal y como está concebida la aplicación.

Los usuarios potenciales del sistema son fundamentalmente profesores de cualquier ciclo académico y editores de libros o revistas.

4.4 Restricciones Para la realización de la aplicación la única restricción que se ha considerado importante, es la restricción de tiempo que conlleva la finalización del proyecto antes del mes de junio de 2007. Debido a esta restricción se han concentrado los esfuerzos en los algoritmos de búsqueda y en depurar la salida de resultados.

El formato del archivo de entrada se ha restringido a un único tipo (.txt).

24

Programa para analizar documentos y detectar secciones coincidentes en Internet

4.5 Organización La organización del proyecto queda claramente reflejada en el siguiente diagrama:





Rafael Palacios

Eduardo Alcalde

Ricardo Mora-Figueroa

Diagrama de organización del proyecto

25

Programa para analizar documentos y detectar secciones coincidentes en Internet

4.6 Antecedentes Recientemente el profesorado se ha encontrado con que, gracias a la gran cantidad de información disponible en Internet, se ve totalmente incapaz de distinguir un trabajo correcto de una mera copia. Pero realmente han sido tres hechos principales los que realmente han influido en este sentido: el hecho de que actualmente está generalizado disponer de una conexión a Internet; la gran potencia que tienen los buscadores en estos momentos; y la aparición de sitios Web explícitamente creados como repositorio de trabajos ya realizados (véase Referencia [33]).

Los trabajos escritos tienen como objetivo el de aplicar los conocimientos que se tienen o se pueden adquirir y elaborar un razonamiento adecuado al problema planteado. Con lo explicado anteriormente se ha conseguido que estos trabajos pierdan toda su validez ya que no se sabe si de verdad es el razonamiento propio o el que se ha copiado, y que en muchos casos ni se ha entendido.

De hecho existe un estudio realizado por una agrupación de universidades donde se indica que al menos un 30 por ciento de los trabajos tanto universitarios como escolares son parcial o completamente copiados de Internet. Además especifican que el estudio se realizó sobre todo tipo de trabajos, desde trabajos cortos hasta proyectos fin de carrera, y que en todos aparecían copias en mayor o menor medida.

Ante esto el profesorado se encuentra en total desventaja ya que, aunque se sabe que otras universidades disponen de aplicaciones similares a la que se

26

Programa para analizar documentos y detectar secciones coincidentes en Internet

pretende desarrollar, no hay ninguna que esté plenamente desarrollada o a la que se pueda acceder fácilmente. Y el hecho de intentar aplicar una búsqueda masiva sobre un documento, para una persona es totalmente inviable.

Plagiarism Finder La única aplicación conocida que se encuentra actualmente de venta al público es Plagiarism Finder (ver Referencia [34]). Esta aplicación creada por Mediaphor Software Entertainment AG, promete una aplicación Windows, que funciona sobre cualquier PC con conexión a Internet, con la que se seleccionan y los documentos y se empieza el análisis con un solo clic de ratón, y después de un tiempo se reciben los resultados como un informe detallado en la pantalla, ofreciendo los resultados con concurrencia resaltados y con un enlace a la fuente.

Ejemplo la aplicación Plagiarism Finder en ejecución.

27

Programa para analizar documentos y detectar secciones coincidentes en Internet

Se ha evaluado esta herramienta y la realidad es que se trata de una aplicación que a la hora de la verdad no suele encontrar resultados fiables sino palabras sueltas que no sirven de ayuda al cliente en ningún momento. Aparentemente Plagiarism Finder sólo realiza búsquedas contra una base de datos concreta o una “lista negra” de dominios. La mayor diferencia de la aplicación desarrollada es que se apoya en buscadores de prestigio (Google y Yahoo) que tienen muy bien indexada toda la red.

Paquete de venta al público de Plagiarism Finder

El precio de esta aplicación asciende a 125 dólares la licencia de uso para una única persona.

28

Programa para analizar documentos y detectar secciones coincidentes en Internet

5. ANÁLISIS DE REQUISITOS 5.1 Listado de requisitos HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 1 de 7 FUENTE: Cliente PRIORIDAD: Media CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: M1 DESCRIPCIÓN REQUISITO Entrada de documentos al sistema en un formato único.

TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN Formato único de entrada de datos.

COMENTARIOS El sistema se encargará de modificar luego dichos datos.

BENEFICIOS La elección de un único formato de entrada de los documentos al sistema facilita la lógica de la aplicación y con ello su velocidad. COMENTARIOS / SOLUCIONES SUGERIDAS Puesto que se va a escoger un único formato para la entrada de documentos en el sistema este debería ser un formato sencillo y disponible en todos los sistemas y de fácil acceso desde la aplicación. Se sugiere el formato “.txt”. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

29

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2007 VERSION: 1.0 ESTADO: Final PÁG: 2 de 7 FUENTE: Operativo PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A1 DESCRIPCIÓN REQUISITO Transformación de los datos al lenguaje del buscador.

TIPO REQUISITO: OPERATIVO DESCRIPCIÓN Tratamiento de datos.

COMENTARIOS Cuando se envíen los datos al buscador.

BENEFICIOS Si se transforman los datos al lenguaje completo del buscador, no se pierde ningún tipo de información de la que se pueda adquirir de la lectura del documento. COMENTARIOS / SOLUCIONES SUGERIDAS Puesto que se van a introducir los datos en un único formato de texto habrá que transformarlos al lenguaje que entienden los buscadores mediante alguna función diseñada específicamente para ello, teniendo en cuenta todos los posibles cambios necesarios. DOCUMENTOS RELACIONADOS Aquellos documentos donde se especifique el tipo de transformación que haya que hacer para usar el buscador seleccionado. REQUISITOS RELACIONADOS M1 RESOLUCIÓN

30

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 3 de 7 FUENTE: Cliente PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A2 DESCRIPCIÓN REQUISITO Formato de salida con posibilidad de acceso a los datos.

TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Formato de salida con posibilidad de El sistema se encargará de presentar los acceso a los datos. datos de manera que sean directamente accesibles.

BENEFICIOS La elección de un formato de salida de los datos, que permita acceder a sus correspondientes copias directamente, es algo muy conveniente a lo hora de valorar la bondad de la salida mostrada. COMENTARIOS / SOLUCIONES SUGERIDAS Se va a escoger un formato de salida, adecuado para que se pueda acceder directamente a las páginas Web de donde se haya podido copiar el documento, como por ejemplo el formato HTML. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

31

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 4 de 7 FUENTE: Cliente PRIORIDAD: Media CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: M2 DESCRIPCIÓN REQUISITO Posibilidad de seleccionar la profundidad del escaneo del documento.

TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Usuario escoge la profundidad del El sistema se encargará de realizar la escaneo. búsqueda un nº menor de veces acorde con lo profundo o no del escaneo.

BENEFICIOS Puesto que presumiblemente la búsqueda de un documento va a tener una duración larga, eligiendo una menor profundidad de escaneo repercutirá en un menor tiempo de ejecución. COMENTARIOS / SOLUCIONES SUGERIDAS Según se indique en la profundidad del escaneo se saltarán distinto nº de párrafos para agilizar el proceso de búsqueda. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

32

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 5 de 7 FUENTE: Cliente PRIORIDAD: Alta CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: A3 DESCRIPCIÓN REQUISITO Utilizar elementos provistos por la propia empresa del buscador.

TIPO REQUISITO: OPERATIVO DESCRIPCIÓN Utilizar funciones y servicios que provee el propio buscador para el desarrollo de aplicaciones.

COMENTARIOS El buscador suele proveer de código de ejemplo y funciones útiles para los desarrolladores que deseen usar sus servicios.

BENEFICIOS El hecho de usar elementos desarrollados por el propio buscador proporciona la seguridad de que el método que se va a usar para utilizar sus servicios es el mejor. COMENTARIOS / SOLUCIONES SUGERIDAS Tener que buscar y aplicar estas soluciones suele presentar ciertas dificultades, además, el hecho de tener que usar este tipo de elementos, normalmente incluye ciertas restricciones o registros de uso pero se han considerado aceptables. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

33

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 6 de 7 FUENTE: Cliente PRIORIDAD: Baja CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: B1 DESCRIPCIÓN REQUISITO Posibilidad de seleccionar el buscador que se va a utilizar de entre una lista.

TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Usuario escoge el buscador, para Hay gran número de buscadores. comparar las búsquedas, que más le guste.

BENEFICIOS El hecho de haber tantos buscadores indica que existe la posibilidad de que para la misma búsqueda devuelvan resultados distintos, basándose en el índice que asignan los buscadores a las distintas páginas web. COMENTARIOS / SOLUCIONES SUGERIDAS Aunque haya muchos buscadores distintos, está estudiado que actualmente hay dos principales: Google y Yahoo. Éstas serán las opciones que se den al usuario. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

34

Programa para analizar documentos y detectar secciones coincidentes en Internet

HOJA DE REQUISITOS PROYECTO: Programa para analizar JEFE PROY.: Ricardo Mora-Figueroa documentos y detectar secciones coincidentes en Internet FECHA: 27/12/2006 VERSION: 1.0 ESTADO: Final PÁG: 7 de 7 FUENTE: Cliente PRIORIDAD: Baja CLIENTE: Rafael Palacios IDENTIFICADOR REQUISITO: B2 DESCRIPCIÓN REQUISITO Tratamiento exclusivo de los resultados correspondientes al idioma de origen del cliente.

TIPO REQUISITO: FUNCIONAL DESCRIPCIÓN COMENTARIOS Sólo se aceptan resultados de búsqueda del idioma español.

BENEFICIOS Una forma de acotar los resultados de las búsquedas, para facilitar el hecho de que haya habido una copia, sería mediante el idioma. COMENTARIOS / SOLUCIONES SUGERIDAS Se buscarán sólo resultados correspondientes al idioma español que es el idioma que usa el cliente tipo de esta aplicación. DOCUMENTOS RELACIONADOS REQUISITOS RELACIONADOS RESOLUCIÓN

35

Programa para analizar documentos y detectar secciones coincidentes en Internet

6. ESTUDIO DE ARQUITECTURA 6.1 Hardware La arquitectura hardware que se ha pensado necesaria para este proyecto es una arquitectura básica. Las únicas necesidades son las de un ordenador que admita el software requerido (se explicará más adelante) y una conexión a Internet. La siguiente figura ilustra como se relacionan los distintos elementos:

Diagrama de arquitectura necesaria para el cliente

La arquitectura HW que se considera necesaria para el desarrollo de este proyecto es similar a esta representada, ya que para la realización de la pruebas necesita las mismas características del cliente.

36

Programa para analizar documentos y detectar secciones coincidentes en Internet

Pero el HW en concreto que se ha usado para el desarrollo ha sido:

 Procesador: AMD Athlon 64 3200+ (2200 MHz).  Memoria disponible: 630 MB.  Disco duro: 250 GB.

37

Programa para analizar documentos y detectar secciones coincidentes en Internet

6.2 Software Con respecto al software elegido primero se tuvo que escoger el lenguaje de desarrollo. Se ha escogido el lenguaje Java por diversos motivos:

 Las APIs ofrecidas tanto por Google como por Yahoo soportan Java.  Para la posterior ejecución de la aplicación sólo es necesario disponer de una Máquina Virtual Java (JME). Este es el único requisito de los PCs en que se va a instalar la aplicación.  Es un lenguaje sencillo para el desarrollo de aplicaciones y de sus interfaces.  Se trata de un lenguaje con el que ya se está familiarizado y que está muy extendido.

Como entorno de desarrollo integrado (IDE) se estudió si usar Eclipse o NetBeans. Dado que ambos son de distribución libre, se optó por escoger Eclipse ya que es con el que se está más familiarizado.

Luego hubo que decidir qué buscador de Internet se iba a utilizar a la hora de realizar las búsquedas de textos. Se descartaron buscadores menores y sólo se analizaron en profundidad, Yahoo y Google, que son los más usados y los que probablemente proporcionen fuentes interesantes que si se ha copiado el documento. A continuación se obtuvo la información correspondiente a los servicios que facilitan ambos buscadores, que han sido explicados anteriormente (capítulo 2. Estado del arte). Habiendo encontrado los servicios que probablemente se correspondan con el objetivo de esta aplicación, y con el lenguaje de desarrollo ya

38

Programa para analizar documentos y detectar secciones coincidentes en Internet

seleccionado se buscó si ambos disponían de facilidades y funciones específicas de este lenguaje.

Ambas disponen de este tipo de ayudas, así que inicialmente, se escogió a Google como el buscador principal a usar en esta aplicación. Como ya se verá más adelante (consultar Capitulo 8. Programación y Pruebas), esta elección a pesar de ser acertada, se descubrió que no era viable. A pesar de que Google en principio parece que facilita estos servicios, la realidad es que la forma de llamar al buscador mediante XML la tienen prohibida a no ser que se disponga de un permiso especial, que normalmente no conceden. En este caso, se intentó obtener uno de estos permisos pero no fue concedido. Por lo tanto, al final se ha escogido como buscador principal y único el de Yahoo.

39

Programa para analizar documentos y detectar secciones coincidentes en Internet

7. DISEÑO En esta etapa se han realizado los diseños correspondientes a diversas partes de la aplicación. Este diseño agrupa tanto las partes de estructura de los datos, interfaz y resultados, como la funcionalidad del sistema. Este diseño se puede considerar definitivo aunque puede estar sujeto a cambios durante la etapa de implantación y pruebas (sobretodo el interfaz de la aplicación y el documento de resultados).

A continuación se van a ir explicando las decisiones de diseño que se han tomado.

40

Programa para analizar documentos y detectar secciones coincidentes en Internet

7.1 Interfaz de la aplicación La aplicación ha sido concebida, como ya se ha dicho anteriormente, para un uso fácil y sencillo de la misma, con lo que se ha buscado un interfaz simple y directo, donde todos los elementos y opciones deben estar presentes en el primer panel, sin tener que acceder a ellos a través de otros menús.

Los elementos que son indispensables y que deben aparecer en el diseño son:

 Un botón que permita seleccionar el documento origen de las búsquedas, con el que se deben encontrar coincidencias. Este documento, como ya se indicó en el apartado 5.1 Listado de requisitos, debe ser un documento de texto (formato “.txt”).  Un botón que permita seleccionar el documento donde van quedar registrados estos datos de la búsqueda, es decir, el documento de salida del sistema. Este documento, como ya se indicó en el apartado 5.1 Listado de requisitos, debe tratarse de un documento HTML.  Algún tipo de selector donde se pueda escoger la profundidad del escaneo sobre el documento. Para escoger la profundidad del escaneo se han utilizado dos spinners: o Uno que indica cada cuántos párrafos se debe realizar una búsqueda. o Otro para indicar el tamaño mínimo de frase que se desea utilizar.  Un botón que indique al usuario que puede empezar la búsqueda.

41

Programa para analizar documentos y detectar secciones coincidentes en Internet

 Además, se debe indicar al usuario cuándo termina el proceso de búsqueda y se está en disposición de acceder a los resultados.

En la siguiente imagen se muestra la apariencia final del interfaz de la aplicación:

Apariencia final del interfaz de la aplicación

42

Programa para analizar documentos y detectar secciones coincidentes en Internet

7.2 Documento de salida de la aplicación El documento de salida de la aplicación es el documento en que se muestran los distintos resultados de la búsqueda. Como ya se ha dicho anteriormente este documento se ha decidido presentarlo en formato HTML, ya que va a permitir acceder a los resultados de las coincidencias directamente. Además es un documento autocontenido en el que se muestra el documento original.

La estructura que se ha pensado para este documento consiste en ir presentando párrafo a párrafo una replica del documento original. Después de cada párrafo deberán aparecer los distintos resultados, en forma de direcciones web (se mostrará su URL), que se han encontrado coincidentes con el texto del párrafo en cuestión. La utilidad viene del uso del documento HTML, donde a través de las direcciones se podrá acceder directamente a la página original.

Para establecer la relación, entre un fragmento del texto original y los resultados con que se ha encontrado una coincidencia, se usará un código de colores que permite diferenciar distintas secciones con coincidencias distintas de un golpe de vista. Se contempla la posibilidad de que una frase aparezca en varios documentos publicados en Internet. En ese caso la frase aparece iluminada con un color de fondo y al final del párrafo aparece la lista de URLs, todas marcadas con el mismo color de fondo.

En la siguiente imagen se muestra como ha quedado finalmente el documento de salida del sistema:

43

Programa para analizar documentos y detectar secciones coincidentes en Internet

Documento de salida de la aplicación

44

Programa para analizar documentos y detectar secciones coincidentes en Internet

7.3 Tratamiento del texto original Una vez se dispone del texto a verificar éste no puede ser enviado directamente como una petición al servicio del buscador sino que debe ser tratado. El sistema de datos que acepta el buscador impone dos restricciones: longitud máxima y traducción de caracteres especiales.

 Longitud: los buscadores disponen de una longitud máxima con respecto al tamaño de lo que se va a buscar. Por otro lado, aunque el buscador admitiese una búsqueda de la longitud de todo el párrafo, sólo encontraría el documento original si el párrafo entero coincide exactamente. Por esto se debe definir una forma de restringir esta longitud: o Una forma de solucionar el problema de longitud máxima sería acotando el tamaño, pero esto no es tan sencillo puesto que luego se debe modificar el contenido (traducirlo al lenguaje del buscador), y ya se pierde la noción del tamaño. o La otra solución, que es la que se ha decidido utilizar, consiste en definir lo que es una frase y dividir cada párrafo en sus correspondientes frases. El criterio para identificar una frase que se va a utilizar el de la separación por un carácter “.”, es decir desde el inicio hasta que se encuentra un punto sería la primera frase, desde ahí hasta el siguiente punto sería la segunda y así sucesivamente. Este tipo de división es mucho más inteligente.

45

Programa para analizar documentos y detectar secciones coincidentes en Internet

o El tamaño máximo aceptado por el buscador de Yahoo para cada búsqueda es de alrededor de 300 caracteres, contando con

la

codificación

necesaria

para

los

caracteres

internacionales. Para evitar problemas se ha decidido utilizar como tamaño máximo, de la trama sin codificar, 150 caracteres. o También se ha tenido muy en cuenta el hecho de que Yahoo no acepta medias palabras consideradas como frase, es decir que si busco una frase cuya última, o primera, palabra esta partida la búsqueda no devuelve ningún resultado. Por tanto, en el caso de frases muy largas, se ha tenido que buscar como carácter necesario a la hora de cortar una frase los espacios. o En un análisis posterior de los resultados se ha visto que es interesante fijar un tamaño mínimo para las frases para evitar que se busque y muestre información que no se considera relevante, es decir, que una frase demasiado corta es muy probable que encuentre copias por Internet cuando muy probablemente no sean copias reales. Ejemplos de este tipo de frases pueden ser: los índices, los títulos, las URLs, los listados, las notas a pie de imagen, etc. Para poder controlar esto se ha elegido un valor mínimo de criba de 50 caracteres, aunque se ha pensado poder presentarlo también a los usuarios como un parámetro ajustable de la aplicación.  Traducción: como ya se comentó en el apartado 5.1 Listado de requisitos, los sistemas buscadores utilizan un lenguaje similar pero no igual al idioma escrito. Esta diferencia reside en que los caracteres que

46

Programa para analizar documentos y detectar secciones coincidentes en Internet

no forman parte de la tabla ASCII (7 bits) se escriben mediante una combinación de otros caracteres con “%” de por medio (por ejemplo el carácter “ñ” se sustituye por “%C3%B1”), y si no se realiza esta conversión los resultados devueltos de la búsqueda no son los deseados.

47

Programa para analizar documentos y detectar secciones coincidentes en Internet

7.4 Lógica de la aplicación Una vez que se han definido tanto el tratamiento que deben recibir los datos y la forma en que se va a mostrar el resultado final, conviene definir una lógica con la que se van a realizar los distintos tratamientos de las búsquedas realizadas.

Como consideración inicial con respecto a estas búsquedas se ha pensado tratar sólo los diez primeros resultados de cada una, ya que es lo que se considera habitual mirar en una búsqueda cuando se está buscando información. Esta lógica consiste en:

 Comprobar si se trata de un párrafo con varias frases o no. Si se trata de un párrafo de una sola frase se buscarán los resultados coincidentes con esa frase y ya se grabarán en el fichero de salida de datos tanto el texto original como los resultados, si no los hay no se muestra ningún resultado y el texto revisado aparecerá en fondo blanco.  En caso de que se trate de un párrafo con más de una frase, el sistema buscará los resultados coincidentes con esa frase, pero luego cogerá la siguiente frase y también buscará sus resultados coincidentes. o Si alguno de los resultados coincide en ambos grupos de respuesta se crea un grupo de combinación que es el que se guarda. Y se continúa buscando nuevas frases hasta que o no se encuentran coincidencias o se termina el párrafo momento en el que se mostrarán los resultados de ese sector de frases con resultados comunes.

48

Programa para analizar documentos y detectar secciones coincidentes en Internet

Para facilitar la comprensión de la lógica explicada se va a mostrar detalladamente en el siguiente diagrama de secuencia:

Nuevo Párrafo

NO

¿Tiene más de una frase? SI

Se escriben la frase y los resultados si los tiene

Nueva Frase

NO

¿Hay resultados almacenados? SI

Nuevo Párrafo

Se escribe la frase (si tiene resultados escribe de un nuevo color y se almacenan los resultados)

Se buscan coincidencias

¿Hay coincidencias y no es frase corta?

SI

NO Se almacenan las coincidencias con resultados anteriores

Se almacenan las coincidencias (si la frase es corta se mantienen)

Se almacenan los nuevos resultados y se escribe la frase de un nuevo color (si tiene resultados)

Se escribe la frase del mismo color que la anterior

Nueva Frase

Diagrama de secuencia de la lógica de la aplicación para el tratamiento de búsquedas

49

Programa para analizar documentos y detectar secciones coincidentes en Internet

Como se puede ver en el diagrama de secuencia, en su etapa final, la aplicación ha añadido el tratamiento de frases cortas que ha sufrido cierta evolución:

7.4.1 Versión 1 Cuando no había tratamiento en los resultados mostrados cada frase encontrada en Internet producir una lista de hasta 10 URLs. El usuario podía ver que efectivamente dos frases consecutivas provenían de la misma fuente, pero era difícil de interpretar.

Ejemplo de documento de salida sin tratamiento especial de frases cortas

50

Programa para analizar documentos y detectar secciones coincidentes en Internet

7.4.2 Versión 2 Luego se trataron estas frases cortas, como se ha definido anteriormente en este mismo documento, omitiendo mostrar los resultados:

Ejemplo de documento de salida con tratamiento inicial de frases cortas

7.4.3 Versión 3 Finalmente se decidió hacer un tratamiento más específico de las frases cortas. Para que, si se encuentra una frase corta en mitad de un párrafo, si la frase anterior había encontrado resultados estos resultados se mantienen ignorando los de la frase corta y escribiendo esta última del mismo color que su precedente. Y en

51

Programa para analizar documentos y detectar secciones coincidentes en Internet

caso de que no haya resultados de la frase anterior, se ignoran igualmente los resultados de la nueva frase corta y la frase se escribe sin color de fondo. Esta estrategia va, de nuevo, orientada a aumentar la claridad de los resultados.

Lo que se consigue con esto, es además de omitir los resultados de las frases cortas, mantener coherencia con todo el texto de un párrafo y sus resultados. Por ejemplo, si una frase tiene unos resultados, luego vienen una o varias frases cortas y luego otra u otras frases largas con resultados coincidentes con la primera, se mostrarán todas estas frases, desde la primera a la última del mismo color y con los resultados coincidentes. En la siguiente imagen se observa mejor esto:

Ejemplo de documento de salida con tratamiento final de frases cortas

52

Programa para analizar documentos y detectar secciones coincidentes en Internet

8. PROGRAMACIÓN Y PRUEBAS 8.1 Planificación Como ya se explicó en el capítulo 3. Introducción a la metodología de trabajo, se va a utilizar un tipo de desarrollo basado en un Modelo incremental o evolutivo. Este tipo de modelos son muy útiles en trabajos de investigación donde se desconoce la tecnología que se va a usar, y permite un realizar comienzo temprano de la programación, en paralelo con otras fases, como el estudio de la arquitectura o el diseño.

Para llevar a cabo este tipo de programación se ha decidido seguir un proceso que consiste en el desarrollo de una versión de la aplicación que irá evolucionando, a cada paso se buscará que la versión cumpla una serie de requisitos,

para

lo

cual

deberá

pasar

una

serie

de

pruebas.

Si

pasa

satisfactoriamente dichas pruebas entonces se le añadirá nueva funcionalidad a la versión hasta llegar a la versión final de la aplicación.

Este sistema tiene sus ventajas y sus inconvenientes. Como ventajas, presenta el hecho de que si no se cumple uno de los requisitos principales de la aplicación, se puede volver hacia atrás, más o menos rápido, o en todo caso se ha perdido poco tiempo. Pero como desventajas, se tiene un sistema que puede no llegar a ver una fecha de finalización real ya que siempre se va añadiendo nueva funcionalidad, o que en muchos casos se suele presentar como versión final una de las versiones que funcionan correctamente y que puede no tener completamente integrada toda la funcionalidad.

53

Programa para analizar documentos y detectar secciones coincidentes en Internet

Por eso es muy útil para este tipo de desarrollos tener muy clara tanto la Identificación de necesidades (capítulo 1) como el Listado de requisitos (capítulo 5.1), que deberán haber sido validados y firmados por el cliente.

Para el desarrollo de estas versiones se estudió que tipo de prototipo inicial sería el más acorde con el proyecto de entre los siguientes:

 Prototipo Interfaz de Usuario: Atiende a la pregunta ¿se está construyendo el producto correctamente? En este tipo de prototipos se modelan básicamente las ventanas, informes y formularios de salida. Suele aparecer en las primeras fases del desarrollo: al final del análisis de requisitos o estudio de arquitectura, o en el diseño externo. Este tipo suele utilizar herramientas como generadores de código, lenguajes de cuarta generación y generadores de ventanas.  Prototipo Operativo: Atiende a la pregunta ¿se consiguen los parámetros deseados? En este tipo se modelan todos los elementos relacionados con las limitaciones técnicas: consumo de recursos, tiempo de proceso, eficiencia en las comunicaciones. Suele aparecer en el Diseño Externo o en Diseño Interno, siendo más habitual en esta última por tener en ella mayor impacto las limitaciones técnicas. Utiliza herramientas como simuladores, generadores de código y lenguajes de cuarta generación.  Prototipo Funcional: Atiende a la pregunta ¿la función simulada actúa correctamente? Este prototipo suele modelar las funciones de negocio que realiza el sistema, así como la transformación de los datos, como parte de un sistema informático. Suele aparecer en la etapa de Análisis

54

Programa para analizar documentos y detectar secciones coincidentes en Internet

de Requisitos y se utiliza sobre todo en sistemas sin modelo actual (áreas de nueva creación), o con un modelo complejo, pues en ellos puede el análisis. Utiliza herramientas como lenguajes de cuarta generación, generadores de código, librerías de funciones y bases de datos, y no suele presentar interfaz con el usuario.

Como se puede intuir el tipo de prototipo que más se acerca a lo que se necesita inicialmente es un prototipo funcional, puesto que como ya se ha dicho, se está ante una nueva tecnología, de la que no se dispone de un modelo anterior, y lo que se necesita es saber lo antes posible si los servicios ofrecidos son realmente lo que se busca.

55

Programa para analizar documentos y detectar secciones coincidentes en Internet

8.2 Prototipo 1 Google 8.2.1 Descripción del prototipo desarrollado Como se acaba de comentar se va a utilizar un prototipo funcional. La principal funcionalidad que tiene que representar este prototipo inicial es el acceso al servicio del buscador.

Por lo que ya se explicó en el capítulo 6.2 (Estudio de arquitectura Software) se ha decidido utilizar las herramientas que cede Google para realizar llamadas a su buscador desde una aplicación desarrollada en Java.

Para el uso de estas llamadas al buscador hay que incluir las librerías correspondientes a la gsajapi (API de java del GSA o Google Search Appliance), que está compuesta por: gsa-japi-1.8.jar, gsa-japi-test-1.8.jar, gsa-japi-doc-1.8.jar, gsajapi-src-1.8.jar. Estas librerías ya proveen de los objetos necesarios para realizar este tipo de aplicaciones:

 El objeto GSAClient que debe incluir el nombre del host de Google ala que se pretende acceder (por ejemplo www.google.es).  El objeto GSAQueryTerm en el que se incluye la información de los términos que se pretenden encontrar al realizar la búsqueda.  El objeto GSAQuery que compone la nueva consulta que se va a realizar a partir del objeto GSAQueryTerm que se acaba de explicar. También a este objeto a través de sus diferentes métodos se le pueden modificar cierto parámetros de la búsqueda como:

56

Programa para analizar documentos y detectar secciones coincidentes en Internet

o A través del método setFrontend(string) en el que se define el frontend de la consulta. Un ejemplo sería setFrontend (deafult_frontend) con el que se define el frontend por defecto. Siempre es necesario definir un frontend para que funcione correctamente. o Mediante el método setOutputFormat(OutputFormat) se puede escoger el formato de salida, por ejemplo con setOutputFormat (XML_NO_DTD) se escogería como formato de salida un tipo de XML. o Con el método setMaxResults(int) se puede definir el número máximo de resultados que se van a devolver como resultado de la búsqueda.  El último objeto que es necesario para poder realizar una consulta básica es un objeto de la clase GSAResponse que contempla la respuesta del sistema, y que se obtiene mediante el método getGSAResponse(GSAQuery) del objeto GSAClient.

Una vez que se han obtenido estos resultados se muestran mediante un sistema muy simple por la ventana de comandos, ya que al ser un prototipo funcional no tiene necesidad de interfaz.

8.2.2 Pruebas realizadas Para las pruebas realizadas con este prototipo, todavía no se ha diseñado una entrada de datos, así que el término de búsqueda está introducido directamente

57

Programa para analizar documentos y detectar secciones coincidentes en Internet

en el código y se ha realizado una búsqueda muy simple: la frase a buscar era “java sdk”.

El resultado de estas pruebas no ha sido el esperado ya que han aparecido determinados errores de prohibición de Google, que se han podido deducir de la URL de respuesta que ha sido enviada como contestación.

8.2.3 Conclusiones de las pruebas Ha ocurrido lo peor que podía pasar la alternativa elegida a la hora de desarrollar la aplicación con respecto al buscador a utilizar ha sido errónea, aunque gracias al sistema que se ha utilizado el daño ha sido el menor posible.

Por tanto hay que volver a seleccionar la alternativa de Yahoo como buscador principal, además ya se está pensando en abandonar el requisito de dar al usuario la capacidad de elegir un buscador u otro que en el fondo, dado que se trata de un requisito de baja prioridad, no debería generar un grave defecto sobre el resultado final.

58

Programa para analizar documentos y detectar secciones coincidentes en Internet

8.3 Prototipo 2 Yahoo 8.3.1 Descripción del prototipo desarrollado Tras encontrarse con el grave error anterior, se decidió empezar a desarrollar un nuevo prototipo incluyendo las funciones ofertadas por Yahoo.

Como ya se dijo anteriormente, una vez que se ha decidido usar las funciones del buscador de Yahoo, hay que obtener un identificador para la aplicación que se va a desarrollar (se puede obtener desde esta dirección: http://developer.yahoo.com/ faq/#appid), que ciertamente no supone ningún problema.

Una vez se dispone del identificador de la aplicación, para esta nueva implementación del prototipo se deben utilizar las funciones y objetos definidos en las librerías yahoo_search-2.0.1.jar, donde se incluyen todo lo necesario para poder hacer uso de los Yahoo Search Web Services (que ya fueron explicados en capítulo 2.2 Soluciones ofrecidas por Yahoo).

Los principales objetos que se van a utilizar para este primer prototipo son:

 Para empezar se debe crear un objeto de la clase SearchClient, el constructor de este objeto pide como único parámetro le identificador obtenido desde Yahoo para la aplicación. Gracias a este objeto cada vez que se utilice el servicio de búsqueda se sabrá que procede de esta aplicación, y se concederán los permisos necesarios.

59

Programa para analizar documentos y detectar secciones coincidentes en Internet

 A continuación se genera un objeto de la clase WebSearchRequest, con lo que ya se indica que se quiere acceder al servicio Web Search de Yahoo, y en cuyo constructor se indica como parámetro el término que se va a enviar al sistema de búsquedas. Este es el objeto más importante de toda la búsqueda y al que además se puede añadir un mejor tratamiento mediante los siguientes métodos: o Para indicar que se desea buscar solamente los resultados correspondientes a un único lenguaje, se utiliza el método setLanguage(“identificador del lenguaje”). Este identificador del lenguaje es una cadena de caracteres específica que identifica de manera unívoca a un país. En el proyecto se valoró como requisito que las búsquedas sólo se ciñeran a páginas en el idioma español, cuyo identificador es “es”, y así se ha usado: setLanguage(“es”). o Un requisito extremadamente importante era el hecho de realizar estas búsquedas no como una búsqueda de todas las palabras en la frase, sino como una búsqueda de esa frase en cuestión. Al buscador, cuando se usa un navegador web, se le especifica poniendo la frase a buscar entre comillas (“”), pero para esta aplicación no servía. Para poder disfrutar de este servicio se debe utilizar el método, de este objeto, setType() pasando como parámetro la cadena “phrase”, es decir, setType(“phrase”).  Después se instancia un objeto de la clase WebSearchResults, que contiene todos los resultados de la búsqueda. Este objeto es una instancia de la clase que se devuelve desde el método webSearch

60

Programa para analizar documentos y detectar secciones coincidentes en Internet

(WebSearchRequest) de la clase SearchClient. Para obtener más información de los resultados obtenidos se pueden utilizar diversos métodos de esta clase, como: o Como devolución del método getTotalResultsAvailable() se obtiene el número total de resultados disponibles para esa petición de búsqueda. o Con el método getTotalResultsReturned() se obtiene el número de resultados que se han enviado como respuesta a la aplicación. o Con el método listResults()[int] devuelve un objeto de la clase WebSearchResult, de entre todos los que se han recibido, que se encuentra en la posición del valor entero que se encuentra entre corchetes “[]”.  Como se acaba de explicar se necesita un objeto de la clase WebSearchResult para trabajar con cada resultado obtenido de la búsqueda realizada. Los métodos más útiles que permiten obtener la información que contiene el objeto son: o Del método getTitle() se puede obtener el título de la página Web donde se ha encontrado una coincidencia. o Del método getUrl() se puede obtener la dirección URL de la página Web donde se ha encontrado una coincidencia.  Por último hay que tener en cuenta que en los ejemplos que cede Yahoo, se avisa que estos métodos pueden producir dos excepciones principalmente, que deberán ser tratadas si corresponde. Estas excepciones son: IOException y SearchException.

61

Programa para analizar documentos y detectar secciones coincidentes en Internet

8.3.2 Pruebas realizadas Como ya se explicó con el anterior prototipo, todavía no se ha diseñado un interfaz para la entrada de datos y el término de la búsqueda debe ser insertado como una cadena directamente en el código, en el constructor de la clase WebSearchRequest.

Una vez más el término que se ha utilizado para realizar la búsqueda es un termino sencillo y simple, se ha utilizado la frase “yahoo search”.

8.3.3 Conclusiones de la pruebas En esta ocasión los resultados sí que han sido los esperados y se han mostrado los mismos resultados que se muestran cuando se lanza el mismo término de búsqueda a través de un navegador Web al buscador de Yahoo.

Como conclusión se puede decir que ya se tiene un modelo estable de la funcionalidad de la aplicación, que es la de buscar a través de los objetos de las librerías cedidas por la propia Yahoo.

62

Programa para analizar documentos y detectar secciones coincidentes en Internet

8.4 Versión Final Una vez desarrollado un modelo estable que cumple la funcionalidad de búsqueda a partir de este momento se deben desarrollar nuevas versiones donde se vayan implementando los diferentes requisitos en la aplicación.

8.4.1 Descripción de la versión desarrollada Como ya se ha explicado anteriormente la tarea de programación y pruebas se ha desarrollado en paralelo junto con la parte de diseño de la misma, ya que no sabía los problemas que se podían plantear. Esta versión final ha seguido un proceso evolutivo sobre el modelo estable del prototipo funcional 2.0, hasta que se ha podido implementar toda la funcionalidad exigida a la aplicación, se puede observar en el apartado 5.1 Listado de requisitos de esta memoria.

Este proceso se ha desarrollado en el siguiente orden:

 Se implementó la lectura de datos desde un fichero con extensión “.txt”. El proceso de lectura se realiza mediante un objeto DataInputStream, formado mediante un BufferedInputStream, que a su vez se forma a partir de un FileInputStream que lee del fichero seleccionado. Se lee de este objeto mediante lecturas de línea, que en este tipo de ficheros supone hasta que se encuentra un retorno de carro (cuyo código es “\n”). Esta lectura de un fichero arroja la posible excepción de fichero no

encontrado

(FileNotFoundException)

correctamente.

63

que

ha

sido

tratada

Programa para analizar documentos y detectar secciones coincidentes en Internet

 A continuación se definió la posibilidad de encontrar frases contiguas con un grupo de URLs coincidentes. Para ello se tuvo que utilizar los conceptos de párrafo y frase que se han explicado anteriormente, en el diseño, y que hasta su correcto funcionamiento ha tenido muchas redefiniciones, versiones y pruebas. Para llevar a cabo todo este proceso se han tenido que utilizar varios tipos de estructuras para almacenar y tratar los resultados, sobretodo se han utilizados objetos de la clase Vector para ir almacenando las URLs durante el proceso. además se ha creado el método buscaCoincidencias que permite buscar las coincidencias existentes entre los nuevos resultados encontrados (último WebSearchRequest implementado) y un objeto Vector con las URLs de anteriores coincidencias entre frases encontradas, y que devuelve un objeto Vector con las URLs que coinciden en ambos, es decir, el conjunto intersección de ambos.  Después se añadió el método limpiaParrafo que como se pide en los requisitos del proyecto permite la modificación de los caracteres internacionales como ñ, acentos, “”, ,… a la codificación admitida por el buscador, formado por caracteres alfanuméricos mezclados con %. Un ejemplo: para la ñ, su traducción sería %C3%B1.

64

Programa para analizar documentos y detectar secciones coincidentes en Internet

 Lo siguiente fue añadir la generación del documento de salida. Para ello se ha tenido que utilizar un sistema de objetos similar al de la lectura de ficheros sólo que para escritura, que consiste en un objeto DataOutputStream, formado mediante un BufferedOutputStream, que a su vez se forma a partir de un FileOutputStream. Una vez abierto el canal para escribir en el fichero se ha tenido que ir utilizando el código de etiquetas que usa html para ir añadiendo toda la información, y hacer que esta información muestre la coherencia especificada entre texto y resultados mediante el código de colores especificado. Un ejemplo de un documento de salida final sería:

Ejemplo de un documento de salida

65

Programa para analizar documentos y detectar secciones coincidentes en Internet

 Ya por último, se ha añadido un interfaz visual a la aplicación. El interfaz como ya se ha dicho debe ser sencillo por lo que se ha buscado mostrar todas las posibilidades de funcionamiento en la misma capa de presentación, por lo que no se dispone de menús, sino que las opciones están disponibles a primera vista. A través del interfaz se pueden: o Seleccionar un documento de entrada de datos de cualquier directorio de ficheros del cliente, mediante un selector de ficheros habitual. Debe tener extensión “.txt”. o Seleccionar un documento de entrada de datos de cualquier directorio de ficheros del cliente, mediante un selector de ficheros habitual. Debe tener extensión “.html”. Si se desea, cuando se selecciona el fichero de entrada de datos, el sistema automáticamente, selecciona como fichero de salida un documento con el mismo nombre y en la misma ubicación que el fichero de origen sólo que con la extensión correcta. o

Seleccionar la profundidad de escaneo del documento, en este caso se indica cada cuántos párrafos se desea realizar un escaneo. Lo que permite este parámetro es configurar una profundidad de escaneo menor, pero reduce el tiempo que se tarda en analizar todo el documento.

o También se permite seleccionar un segundo parámetro que indica el número mínimo de caracteres para que un conjunto de palabras sea considerado frase, esto sirve para descartar el uso de frases cortas, índices, URLs, … que no son relevantes

66

Programa para analizar documentos y detectar secciones coincidentes en Internet

porque se pueden encontrar muchas coincidencias que no tienen que ver con la copia o no del documento. o Así es como ha quedado el interfaz final de la aplicación:

Imagen del interfaz final de la aplicación

8.4.2 Pruebas realizadas Las pruebas realizadas sobre la versión final de la aplicación han tenido resultados plenamente satisfactorios y no se han encontrado fallos en los resultados finales. El sistema funciona correctamente, es estable, y se ajusta a los requisitos del cliente.

La velocidad de proceso depende fundamentalmente del estado de la red, ya que el programa se encuentra, la mayor parte del tiempo, a la espera de respuestas del buscador.

Como dato de ejemplo un documento de 25 KB tarda unos 12 minutos en ser escaneado por completo.

67

Programa para analizar documentos y detectar secciones coincidentes en Internet

8.4.3 Conclusiones de las pruebas Los resultados de las distintas pruebas, realizadas durante el proceso de evolución del prototipo 2 hasta llegar a esta versión final de la aplicación, se han ido mostrando al representante del Cliente (Director del Proyecto, Rafael Palacios) que ha ido dirigiendo este proceso evolutivo. Los resultados ofrecidos por la versión final han resultado plenamente satisfactorios y se ha dado por finalizada la evolución y por tanto el desarrollo de la aplicación.

68

Programa para analizar documentos y detectar secciones coincidentes en Internet

9. DESARROLLOS FUTUROS Con la aceptación del producto por parte del cliente, se puede considerar terminado el desarrollo de este proyecto, pero durante el desarrollo del mismo se han

detectado

ciertas

funcionalidades

que

mejorarían

la

aplicación

considerablemente pero que se alejaban mucho de los requisitos y tiempo exigidos.

Estas mejoras de la aplicación podrían aparecer como nuevas versiones del producto, por eso se ha realizado esta memoria y se ha documentado eficientemente el código, para facilitar el trabajo sobre esta aplicación por parte del mismo o de otro grupo de trabajo distinto.

Las mejoras que se ha pensado que mejorarían la calidad del producto son:

 Procesado automático de documentos.  Soporte de otros formatos de origen de datos.  Repositorio local de documentos antiguos.  Mejora de la búsqueda por solapamiento.

69

Programa para analizar documentos y detectar secciones coincidentes en Internet

9.1 Preproceso automático de documentos La aplicación actualmente presenta ciertos problemas con determinados símbolos que no es capaz de tratar. Estos símbolos durante las pruebas realizadas se han quitado manualmente, lo cual no supone mucho esfuerzo, pero se considera como una pérdida de tiempo que realmente podría estar automatizada. Algunos ejemplos del tratamiento que se podría dar al documento son:

 Eliminar los dobles retornos de carro (“\n \n”) que se suelen introducir en los documentos para mejorar el formato y la presentación. Esto es innecesario ya que no produce problemas, pero a la hora de elegir el número de párrafos que se saltan entre búsquedas los resultados que aparecen no son todo lo buenos que deberían porque lo que hace es buscar esos segundos “\n”.  Eliminar numeraciones y viñetas que si que pueden presentar problemas a la hora de tratar el documento desde este lenguaje de programación y no son aceptados por el formato de entrada “.txt”.  Eliminación de unidades de medida, abreviaturas, números y siglas, aunque estos problemas están parcialmente corregidos con el parámetro de longitud de frase mínima.  Eliminar otros aspectos que dan apariencia al documento como imágenes, tablas, encabezado y pie de página, numeración, …

70

Programa para analizar documentos y detectar secciones coincidentes en Internet

9.2 Soporte de otros formatos para el origen de datos También se ha considerado que daría mucho valor a una versión de la aplicación, el hecho de que los formatos de entrada de los datos, es decir los documentos que se aceptan, puedan estar en otros formatos distintos al de texto (formato “.txt”).

Los formatos que se ha estimado que sería bueno incluir, puesto que son en los que habitualmente se entregan los trabajos, son: PDF, documentos de Microsoft Word, …

Para leer estos formatos sería necesario utilizar librerías o APIs diseñadas a tal efecto.

71

Programa para analizar documentos y detectar secciones coincidentes en Internet

9.3 Repositorio local de documentos antiguos Desde que se empezaron a estudiar otras alternativas para el desarrollo de nuevas versiones de la aplicación, se consideró que, aparte de las fuentes de Internet, las copias de documentos, trabajos y prácticas se basan en muchas ocasiones en otros documentos de compañeros o alumnos de años anteriores. Por lo tanto se pensó que si se tiene un repositorio local de documentos sería bueno que también se contrastaran estas fuentes. Además al ser únicamente búsquedas en local se mejoraría el rendimiento de la aplicación para estas búsquedas.

Cuando se realizó el estudio del estado del arte (apartado 2 de este documento) se vio que Google ofrecía una solución con la que se podría empezar a trabajar, que es Google Desktop.

72

Programa para analizar documentos y detectar secciones coincidentes en Internet

9.4 Mejora de la búsqueda por solapamiento Cuando se estudiaron diversas pruebas realizadas se vio que aunque dos frases consecutivas devolviesen resultados coincidentes no se podía saber si estaban realmente consecutivas en el documento de Internet. Para solucionar esto se ha pensado en incluir en cada frase un fragmento de la anterior, para asegurarse este hecho.

Por un lado se verifica esto, pero por otro, ciertamente no tiene porqué ser considerado una copia menor por el hecho de no estar solapadas las frases en el documento original. Sino que lo que se busca es que realmente se haya copiado o no.

La gran utilidad de esta mejora vendría para los casos de una frase larga que debe ser partida y que después de ser partida deja un resto lo suficientemente grande como para buscarlo, pero que carece de sentido. Para ello, se debería definir una longitud mínima de búsqueda, independiente de la longitud mínima de frase, que sería útil para este tipo de casos donde se rellenaría con parte del segmento anterior.

73

Programa para analizar documentos y detectar secciones coincidentes en Internet

10. MANUAL DE USUARIO 10.1 Requerimientos del sistema  PC con conexión a Internet  Máquina Virtual Java (JVM) en su versión 5.0 o superior.

Instalación de la Máquina Virtual Java (JVM) Si la versión de la Máquina Virtual Java, de ahora en adelante JVM, de la que se dispone es anterior a la requerida, en este caso versión 5.0 o superior, se puede proceder a la descarga e instalación gratuita de la nueva versión siguiendo estos pasos:

A través de la página: http://www.java.com/es/download/index.jsp se accede a la sección para la descarga de la última versión de la JVM, la JVM también recibe otros nombres como JRE, entorno de ejecución Java, software de Java para el equipo…

En esta página se puede elegir la sección de “Descarga manual” donde se mostrarán todas las descargas disponibles para los diversos sistemas operativos, y versiones de sistemas operativos. O directamente pulsando sobre la indicación de “Descargar ahora”, que es más sencilla y la que se va a explicar lentamente:

74

Programa para analizar documentos y detectar secciones coincidentes en Internet

Página inicial de descarga de la JVM

En esta nueva página web se indican los detalles de la descarga (versión, tamaño, tiempos aproximados de descarga, …) y además se indica que se ha seleccionado la descarga correspondiente al navegador y al sistema operativo que se está usando.

En esta página debe hacer el clic sobre el botón “Iniciar descarga”:

Botón para iniciar la descarga de la JVM

75

Programa para analizar documentos y detectar secciones coincidentes en Internet

Y en esta misma página vienen detalladas las instrucciones para proseguir con la instalación de la JVM:

Página para la descarga donde se muestran las instrucciones para seguir con la instalación de la JVM

Una vez finalizado el proceso ya será capaz de ejecutar correctamente la aplicación de este proyecto.

76

Programa para analizar documentos y detectar secciones coincidentes en Internet

10.2 Utilización de la aplicación 10.2.1 Instalación Una vez se cumplen los requisitos especificados anteriormente, se debe proceder a la colocación de los archivos que componen la aplicación en una misma carpeta del directorio de su sistema operativo, los archivos que componen esta aplicación son:

 ejecutable.jar: Es el fichero ejecutable de la aplicación.  yahoo_search-2.0.1.jar: Que contiene las librerías necesarias para la correcta ejecución de la aplicación.

En la siguiente imagen se muestra un ejemplo de cómo debería quedar más o menos:

Ejemplo de carpeta con los ficheros de la aplicación

77

Programa para analizar documentos y detectar secciones coincidentes en Internet

10.2.2 Arranque de la aplicación Una vez se ha terminado el proceso de instalación de la aplicación, cuando se desee ejecutar la aplicación se debe hacer doble clic con el ratón sobre el fichero “ejecutable.jar”, que como ya se ha dicho es el fichero de ejecución de la aplicación.

Si la instalación ha sido correcta se mostrará la ventana principal de la aplicación.

Ventana principal de la aplicación

10.2.3 Correcta ejecución de la aplicación Una vez arrancada la aplicación para un correcto uso de la aplicación se deben seguir los siguientes pasos:

1. Elegir un documento origen de la información: Se debe pulsar el botón “Explorar txt”, que al pulsarlo abrirá una ventana del explorador de ficheros donde mediante la navegación habitual por el sistema de ficheros se deberá escoger un fichero de texto (con formato “.txt”).

78

Programa para analizar documentos y detectar secciones coincidentes en Internet

Ventana de exploración para selección de fichero origen

Si no se selecciona un fichero de origen de datos del formato especificado, se muestra un mensaje informando de este hecho al usuario.

Ventana de información de error al seleccionar el archivo de origen

2. Una vez seleccionado el documento de origen de los datos aparecerá como documento de salida de datos, el segundo campo de texto del interfaz, el mismo documento de entrada pero con el formato cambiado

79

Programa para analizar documentos y detectar secciones coincidentes en Internet

al válido (formato “.html”). Y también ahora aparecerá accesible el botón “Buscar”, que dará comienzo a la búsqueda. 3. Cambiar el documento de salida de resultados: Se debe pulsar el botón “Explorar html”, que al pulsarlo abrirá una ventana del explorador de ficheros donde mediante la navegación habitual por el sistema de ficheros se deberá escoger un fichero de texto (con formato “.html”) o escribir el nombre de uno que se desee crear en la carpeta correspondiente.

Ventana de exploración para cambio del fichero destino

Si no se selecciona un fichero de destino de datos del formato especificado, o el nuevo nombre no es válido, se muestra un mensaje informando de este hecho al usuario.

80

Programa para analizar documentos y detectar secciones coincidentes en Internet

Ventana de información de error al seleccionar el archivo de destino

4. Iniciar la búsqueda: Se debe pulsar el botón “Buscar”, con el que da comienzo la búsqueda con los parámetros definidos por defecto, si no han utilizado las Opciones avanzadas. 5. Cuando se termine la ejecución se mostrará un mensaje indicando este hecho.

Mensaje de información indicando el final de la ejecución

Si se ha producido algún error durante la ejecución se muestra:

Mensaje de información indicando que la búsqueda no se ha podido

realizar por fallo en el servicio de Yahoo

81

Programa para analizar documentos y detectar secciones coincidentes en Internet

10.2.4 Opciones avanzadas Si el usuario lo desea, también puede acceder de manera sencilla a las distintas opciones avanzadas, que ahora se explicarán:

 ¿Buscar cada cuántos párrafos? Con esta opción se especifica un parámetro de profundidad del escaneo muy importante, el número X seleccionado indica que sólo de uno de cada X párrafos. La importancia de este parámetro reside en que al aumentar este número se reduce el número de búsquedas por lo tanto aumenta la posibilidad de no encontrar resultados, pero en contrapartida se reduce el tiempo de ejecución.

A continuación se van a mostrar unos de ejemplo, que se piensa que pueden resultar significativos, sobre el valor que puede tomar el tiempo de ejecución dependiendo del valor de este parámetro.

Los ejemplos se han realizado sobre un PC con funciones normales, conexión ADSL a 6 Mbps y sin usar a la vez otras aplicaciones que hagan uso de Internet.

El fichero de pruebas es un documento con una parte extraída directamente de la página Web html.rincondelvago.com/accesos-ainternet.html que al pasarlo al formato correcto (.txt) tiene un tamaño de 23 KB.

82

Programa para analizar documentos y detectar secciones coincidentes en Internet

Tiempo (min.) por nº de párrafos 6

5

Minutos

4

3

2

1

0 1

2

3

4

5

6

7

8

9

Nº de párrafos a saltar entre búsquedas

Gráfica donde se enfrenta el parámetro frente a la duración en minutos

Nº Párrafos 1 2 3 4 5 6 7 8 9 10

Tiempo (ms.) 340984 60219 51328 25844 28625 19969 15438 17140 12719 13016

Tiempo (seg.) 340,984 60,219 51,328 25,844 28,625 19,969 15,438 17,14 12,719 13,016

Tabla con los datos obtenidos

83

Tiempo (min.) 5,683066667 1,00365 0,855466667 0,430733333 0,477083333 0,332816667 0,2573 0,285666667 0,211983333 0,216933333

10

Programa para analizar documentos y detectar secciones coincidentes en Internet

Como se puede observar a pesar de que los datos presentan cierta variación en sus resultados el tiempo de ejecución baja drásticamente hasta estabilizarse. Esta variación en los tiempos, aunque parezca carecer de sentido, se debe a la consideración de los retornos de carro como párrafos que luego no son buscados.

 ¿Cuál es el mínimo número de caracteres a usar? Con esta opción el usuario indica cuál desea que sea el número mínimo de caracteres a usar. Esto no afecta en términos de eficiencia de la aplicación, sino que va a mostrar unos resultados más coherentes para el usuario, si se reduce el número mínimo de caracteres se considerarán frases que normalmente, no suponen ningún añadido a la información dada por la aplicación, por ejemplo índices, títulos, URLs, …

84

Programa para analizar documentos y detectar secciones coincidentes en Internet

11. CONCLUSIONES La aplicación para el análisis de documentos y detección de secciones coincidentes en Internet es el resultado de un complejo desarrollo, en el cual se ha utilizado una metodología de desarrollo evolutivo completa. Al haber seguido una metodología de desarrollo para realizar esta aplicación se facilita el desarrollo de versiones futuras mejoradas de esta aplicación, tanto por si se desea incluir nuevas funcionalidades como si se desea mejorar las que se han incluido en este mismo documento.

Para el desarrollo de esta aplicación se han analizado en profundidad las herramientas y funciones de las que proveen los buscadores, tanto Google como Yahoo (que es el que se ha usado finalmente). Para ello se ha tenido que realizar una exhaustiva investigación, principalmente por Internet. Mucha de esta documentación aún no se había traducido al español (se encontraba en inglés), lo que prueba que está en pleno desarrollo el uso de los servicios de los que proveen los buscadores.

Los puntos clave de lo que se ha conseguido con la aplicación son:

 Que sólo se buscan frases completas, normalmente de un tamaño máximo de 150 caracteres.  Dos búsquedas seguidas (dentro de un mismo párrafo), que tienen resultados de búsqueda coincidentes se iluminan del mismo color, y consecuentemente muestran los resultados de esa coincidencia y no los individuales.

85

Programa para analizar documentos y detectar secciones coincidentes en Internet

 Un texto corto (como un título, una enumeración, …) no se trata.  La aplicación se ha diseñado de tal forma que también funciona con caracteres internacionales como ñ, acentos, (,), etc.

Con todo esto se considera que se han cumplido todos los objetivos para esta aplicación, con lo que se ha podido dotar al profesorado de una aplicación que le ayudará a poder demostrar si un documento ha sido copiado o no.

Con respecto a los requisitos, se han cumplido todos, salvo uno, que era el que exigía que la aplicación pudiera usar más de un buscador a la hora de realizar las búsquedas, pero dado que este requisito era de prioridad baja se eliminó al no conseguir la autorización de Google para utilizar su buscador.

86

Programa para analizar documentos y detectar secciones coincidentes en Internet

12. PLANIFICACIÓN DEL PROYECTO A lo largo del proyecto y siguiendo la metodología ya explicada, se presenta la siguiente planificación que se ha seguido, el número de semanas que se dedican a cada etapa no es muy significativo ya que algunas de las actividades han seguido un desarrollo en paralelo:

 Identificación de Necesidades (IDN): 2 semanas  Análisis de Requisitos (ARQ): 2 semanas  Estudio de Arquitectura (EAQ): 5 semanas  Diseño, programación y pruebas del sistema: o Diseño: 10 semanas o Programación 14 semanas o Pruebas: 14 semanas  Implantación (IMP): 2 semanas  Documentación: Durante todo el proyecto. Tiempo total de duración del proyecto: 26 semanas

Tiempo medio de trabajo semanal: 15 horas.

Estimación del total de horas dedicadas al proyecto: 330 horas.

87

Programa para analizar documentos y detectar secciones coincidentes en Internet

Octubre

Noviembre

Diciembre

Enero

Febrero

Marzo

Abril

Mayo

Junio

IDN

ARQ

EAQ

E X Á M E N E S

E X Á M E N E S

DISEÑO PROGRAMACIÓN PRUEBAS

IMP

Documentación

Planificación seguida durante el desarrollo del proyecto

88

Programa para analizar documentos y detectar secciones coincidentes en Internet

13. VALORACIÓN ECONÓMICA Esta valoración comprende la realidad económica del coste del proyecto, es decir, el valor real tanto de las horas dedicadas por el equipo de trabajo como la amortización tanto del equipo como del software utilizado.

Con respecto a esta amortización se ha pensado que para amortizar el equipo hardware que se ha usado se va a utilizar un tiempo de amortización máximo de 5 años y para el software utilizado un tiempo de 3 años. Quedando la siguiente valoración:

Amortización del equipo:

200 €

Amortización del software:

150 €

En referencia a las horas de trabajo dedicadas al desarrollo de la aplicación, tal como se vio en el apartado de planificación, que estimándolas a 20 € por cada hora de trabajo, el valor del trabajo humano asciende a:

Tiempo: 330 h * 20 €/h

6600 €

Por lo tanto la valoración real del proyecto asciende a:

Valoración real del proyecto:

89

6950 €

Programa para analizar documentos y detectar secciones coincidentes en Internet

14. BIBLIOGRAFÍA 14.1 Libros [BARR01]

Barranco de Areba, J. “Metodología del análisis estructurado de sistemas”.2ª Edición. Sal Terrae. Maliaño. 2001.

14.2 Recursos Web  Apuntes de Java: http://www.geocities.com/jmordax/  Información Apis Google: http://code.google.com/apis.html o [1] Google Data: http://code.google.com/apis/gdata/index.html o [2] Google Apps Provisioning: http://code.google.com/apis/apps/ gdata_provisioning_api_v2.0_reference.html o [3] Google Base Data: http://code.google.com/apis/base/ o [4] Blogger Data: http://code.google.com/apis/blogger/ o [5] Google Calendar Data: http://code.google.com/apis/calendar/ o [6] Google Code Search Data: http://code.google.com/apis/ codesearch/overview.html o [7] Google Notebook Data http://code.google.com/apis/notebook/ overview.html o [8] Google Spreadsheets Data: http://code.google.com/apis/ spreadsheets/overview.html o [9] Google Desktop Search Query: http://desktop.google.com/ dev/queryapi.html

90

Programa para analizar documentos y detectar secciones coincidentes en Internet

o [10] Google Web Toolkit: http://code.google.com/webtoolkit/ overview.html o [11]

Google

AJAX

Search:

http://code.google.com/apis/

ajaxsearch/ o [12]

Google

Search

Appliance:

http://code.google.com/

enterprise/ o [13] Google XML Reference: http://code.google.com/gsa_apis/ xml_reference.html 

Información Apis Yahoo: o [14] Yahoo Search Developer Kit: http://developer.yahoo.com/ o http://developer.yahoo.com/search/ o [15] Ejemplos Yahoo Search Web Services: http://gallery.yahoo.com/search_api o [16] Términos de uso de Yahoo: http://developer.yahoo.com/ terms/ o [17]

Políticas

de

utilización:

http://developer.yahoo.com/

usagePolicy/ o [18] Información de ID de la aplicación: http://developer.yahoo.com/faq/#appid o [19] Obtención de “attribution”: http://developer.yahoo.com/ attribution/ o [20] Obtención de ID de la aplicación: http://search.yahooapis.com/webservices/register_application o [21] Descarga del kit de desarrollo: http://developer.yahoo.com/ download/

91

Programa para analizar documentos y detectar secciones coincidentes en Internet

o [22] Audio Search: http://developer.yahoo.com/search/audio/ index.html o [23] Content Analisis: http://developer.yahoo.com/search/content/ V1/ termExtraction.html o [24] Image Search: http://developer.yahoo.com/search/image/V1/ imageSearch.html o [25] Local Search: http://developer.yahoo.com/search/local/ o [26] Yahoo! Local: http://local.yahoo.com/ o [27] My Web: http://developer.yahoo.com/search/myweb/ o [28] News Search: http://developer.yahoo.com/search/news/V1/ newsSearch.html o [29] Site Explorer: http://developer.yahoo.com/search/siteexplorer/ o [30] Servicio Site Explorer: http://siteexplorer.search.yahoo.com/ o [31] Video Search: http://developer.yahoo.com/search/video/V1/ videoSearch.html o [32] Web Search: http://developer.yahoo.com/search/web/

14.3 Otras referencias Ejemplos de páginas web repositorio de trabajos:

o [33] Rincón del vago: http://www.elrincondelvago.com

Aplicaciones antecedentes:

o [34] Plagiarism Finder: http://www.m4-software.de/en-index.htm

92

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.