CLASIFICADOR LINGÜÍSTICO DE TEXTOS EN JAVA



Documentos relacionados
Capitulo V Administración de memoria

EJEMPLO DE REPORTE DE LIBERTAD FINANCIERA

Análisis y cuantificación del Riesgo

MODELOS DE RECUPERACION

El proceso de edición digital en Artelope y CTCE

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Programa Presupuestos de Sevillana de Informática.

Informática I Notas del curso

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

CAPITULO 3 REDES HIBRIDAS-COMPLEJAS. 3.1 Descripción de la Red Híbrida Compleja (HCNN)

Teclado sobre una PDA para Personas con Parálisis Cerebral

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE

Manual de usuario de Solmicro BI. Página 1

GUÍA DEL ALUMNO. 1.- Estructura y contenido de la página web. 2.- Cómo usar esta página web. 3.- Contenidos. 4.- Metodología didáctica.

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

x

Solución de telefonía para empresas TL Presentación de producto. Telefonía IP

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Vamos a ver las dos formas básicas de arrancar PowerPoint.

Instructivo de Microsoft Excel 2003

Centro de Capacitación en Informática

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Cómo las herramientas en línea están revolucionando la implementación de ITIL e ISO 20000

Manual de Usuario. Del. Módulo de Lector de códigos de barras. FacturPin. Diseñado y producido por. SystemPin

Conclusiones. Particionado Consciente de los Datos

PRESENTACIONES CON POWERPOINT

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

Microsoft Office: EXCEL. Objetivos curso

Tema : ELECTRÓNICA DIGITAL

Análisis de Resultados

INTERPOLACIÓN POLINÓMICA Y LA DIVISIÓN DE SECRETOS

PROGRAMAS OFICIALES DE POSGRADO

ANÁLISIS DE LAS CAUSAS DEL FRACASO ESCOLAR Y DESARROLLO DE ACCIONES DE MEJORA

AUMENTA TUS SEGUIDORES EN

LOS ANCIANOS Y LA SOLEDAD

Las 5 S herramientas básicas de mejora de la calidad de vida

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Módulo mod_banners para insertar y visualizar anuncios o publicidad (banners) en Joomla. Contador. (CU00446A)

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

Qué es y para qué sirve Excel2007?

Manual de usuario. Tramitación de inspecciones periódicas de ascensores: La visión de las empresas conservadoras

Capítulo 1. Introducción

La ventana de Microsoft Excel

Recuperación de información Bases de Datos Documentales Licenciatura en Documentación Curso 2011/2012

Servicios de Formación:

Instructivo: Diagnóstico Interno y Externo por análisis FODA

por Miguel Crespo Celda

1. LA EVALUACION DEL DESEMPEÑO LABORAL. 1.2 Objetivos de la evaluación del desempeño laboral.

GESTIÓN DEL MEDIO AMBIENTE URBANO. (LIMPIEZA VIARIA, MANTENIMIENTO DE ZONAS VERDES, RESIDUOS URBANOS Y ABASTECIMIENTO DE AGUA)

VULNERABILIDADES CRIPTOGRÁFICAS. Por Alexandre Ramilo Conde y Pablo Prol Sobrado

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Programación Lineal. Ficha para enseñar a utilizar el Solver de EXCEL en la resolución de problemas de Programación Lineal

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

El inventario preciso de todos los recursos técnicos. Todas sus características serán almacenados en una base de datos.

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

SISTEMAS DE NUMERACIÓN. Sistema decimal

Capítulo 6: Conclusiones

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Uso del programa CALC

Práctica 5. Curso

1.- INTRODUCCIÓN 2.- PARÁMETROS

Antoni Miró. Experiencia previa y formación

ARCHIVOS DE SONIDO, COMUNICACIÓN ORAL Y AUTOEVALUACIÓN Elisa Bernáldez 1 Halden vgs

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

Ingeniería de Software I

Nivel Básico I Prof. Mariano Correa

Lección 4: Suma y resta de números racionales

Unidad 5 Utilización de Excel para la solución de problemas de programación lineal

6. Gestión de proyectos

MANUAL DE USUARIO DE LA HERRAMIENTA GENXML PARA LA GENERACIÓN DE FICHEROS XML DE PROYECTOS TÉCNICOS, PUESTAS EN SERVICIO Y CERTIFICACIONES ANUALES

Base de datos en la Enseñanza. Open Office

YOUTUBE Y SUS HERRAMIENTAS DE EDICIÓN. ANOTACIONES Y MATERIAL INTERACTIVO EN YOUTUBE MÓDULO II. [Autores ]

Documentación de la Práctica 1 para la asignatura de Nuevas Tecnologías de la Programación (NTP)

En España hay 2,5 millones de. Usuarios de lentes de contacto, Puede seguir creciendo esta cifra?

Diseño de una estrategia tecnológica de Customer Relationship Management (CRM) para la empresa BPM de México. CAPITULO 6

NUEVAS SOLUCIONES y CAMBIOS EN LA GESTION DEL NEGOCIO. JOSE LUIS LENCE Socio Director de Gesfarm Consultoria Farmacias

de riesgos ambientales

Presentación realizada por Juan Carlos Camus el 28 de junio de 2007, para un evento realizado por la empresa Inter-Media Ltda. En Santiago de Chile.

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

MANEJANDO FICHEROS Y CARPETAS

Manual básico de gestión económica de las Asociaciones

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

DISEÑO DE INDICADORES DE DESIGUALDAD SOCIAL EN LAS CIUDADES.-

CÓMO CREAR NUESTRO CATÁLOGO

Guía de uso de Moodle para participantes

Diagnosis y Crítica del modelo -Ajuste de distribuciones con Statgraphics-

El reto de la Gestión Documental

Gestión de la evaluación en el Aprendizaje Basado en Proyectos

ÍNDICE. Ficha técnica Encuesta y cuestionario Finalidad y resultados de la encuesta Primera parte: conocimiento...

FACTORES QUE INFLUYEN EN EL COSTE DE ALIMENTACIÓN

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia.

Adaptación del producto

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Transcripción:

CLASIFICADOR LINGÜÍSTICO DE TEXTOS EN JAVA Óscar Alberto García Pérez Universidad Carlos III de Madrid 100039016@alumnos.uc3m.es Ignacio Martínez Fernández Universidad Carlos III de Madrid 100039048@alumnos.uc3m.es ABSTRACT En éste documento se pretende presentar un sistema de clasificación automática de textos en función del idioma en el que estén escritos. Se proponen dos algoritmos diferentes, uno tradicional de diccionario y uno novedoso que se basa en la frecuencia de aparición de cada una de las letras del abecedario en el texto. Se comparan las ventajas y desventajas de cada algoritmo. 2. ALGORITMO BASADO EN DICCIONARIO 2.1 Funcionamiento El primer algoritmo esta diseñado a partir de un algoritmo de diccionario, minimizando la lista de palabras, y puntuando por aparición. Palabras clave Clasificador, Textos, Documentos, Idioma. 1. INTRODUCCIÓN La clasificación de textos por categorías es una técnica bastante útil y utilizada, especialmente en los últimos tiempos. Vivimos en una sociedad que maneja y consume grandes cantidades de información, y, cada vez más, ésta se encuentra en formato electrónico. El auge de Internet y la gran demanda de información por parte de sus usuarios hacen que la buena y rápida clasificación de dichas bases de datos sea primordial para que el acceso a la información no se convierta en una tarea caótica. Los clasificadores de textos tradicionales se basan en observar las palabras que aparecen en el texto y calcular la probabilidad de que ese conjunto de palabras pertenezcan a cada una de las posibles categorías de decisión. Aquella categoría que consiga una mayor probabilidad será la categoría elegida como solución. Este tipo de algoritmos necesitan tener una base de datos con palabras de cada una de los conjuntos de decisión, y aumentará la probabilidad de acierto cuanto mayor sea la base de datos, a costa de tener un mayor coste computacional. Técnicas como la anteriormente comentada se puede utilizar a la hora de clasificar textos según su idioma. Se elegiría un idioma mirando la aparición de las palabras del texto en cada uno de los diccionarios. Este será el primer algoritmo que presentemos en este informe. Algoritmos basados en la utilización de diccionarios son los que se usan en la mayoría de los casos, pero pueden requerir un coste computacional elevado para altos valores de número de idiomas o de tamaño de diccionarios. Para intentar cubrir las debilidades de este tipo de algoritmos, proponemos la utilización de un algoritmo alternativo y novedoso basado en la frecuencia de aparición de cada una de las letras del alfabeto en el texto a clasificar. Utilizamos un sencillo algoritmo de puntuación, evitando complicar el algoritmo. Simplemente con una lista de palabras, que se generaron a partir del conjunto de entrenamiento, vamos sumando puntos y en función de estos tomamos la decisión. Siendo este algoritmo el más sencillo sus resultados se utilizarán para validar el siguiente algoritmo. Como hemos simplificado al máximo el algoritmo, es probable que se produzcan fallos. 2.2 Implementación Para implementar este algoritmo, partiendo de 5 idiomas (alemán, español, francés, inglés e italiano), utilizamos 24 palabras para identificar en idioma, estas palabras fueron escogidas por ser aquellas con mayor número de apariciones en los textos de prueba. Estas palabras resultaron ser: P={des, le, et, la, les, de, à, en, los, a, y, el, que, in, and, of, the, to, die, der, if, di, e, che }. Que son artículos y preposiciones en los diferentes idiomas aquellas palabras que aparecían en dos idiomas se tuvieron en cuenta en ambos. Pensamos que al implementar un decisor basado en un algoritmo de puntos, sin ponderaciones, la tasa de fallos aumentaría, pero como ya hemos dicho anteriormente este algoritmo nos interesaba rápido, con una eficiencia suficiente como para tomarlo de referencia. Si vemos los resultados en el apartado 4, con este simple algoritmo se consiguió el objetivo de fallos y, dada su corta lista de palabras, la velocidad resultó ser muy elevada.

Puede no decidir si ninguna palabra aparece en el diccionario. Para un número elevado de idiomas puede requerir una ingente cantidad de memoria y el retardo para el acceso a la misma seria enorme. 3. ALGORITMO BASADO EN LA FRECUENCIA DE APARICIÓN DE LAS LETRAS 3.1 Funcionamiento Este segundo algoritmo trata en el diseño de un sistema que a partir de los porcentajes de aparición de cada una de las letras del abecedario en un texto, sea capaz de determinar el idioma de dicho texto. Ilustración 2-2: Clasificador de diccionario, esquema de funcionamiento. 2.3 Propiedades 2.3.1 Ventajas El coste computacional es bajo, siendo mayor el tiempo de acceso y búsqueda de cada palabra en los diferentes diccionarios. El sistema de puntuación y decisión es muy básico. Los textos bilingües resultan adecuados para decidir aunque por simplicidad no se toma la decisión de si es o no bilingüe. Es capaz de tomar una decisión siempre. Resulta muy sencillo de implementar una vez elegido el diccionario y el idioma. Para realizar este sistema, se va a usar una red de perceptrones (ver Figura 3.1). El problema de usar perceptrones es que cada uno de estos elementos solo se pueden usar para clasificación binaria o estimación. Dado que nuestro problema es de clasificación en más de dos grupos, hemos optado por realizar una red de varios perceptrones. A cada uno de estos perceptrones se le asigna un idioma (hay tantos perceptrones como idiomas clasifique el sistema), y se le entrena para que distinga entre textos del idioma que se le ha asignado y el resto de idiomas. Suponiendo que la salida ideal para el idioma asignado a cada perceptrón es 1, y la salida para el resto de idiomas es cero, podemos considerar la salida x del perceptrón del idioma L ante la entrada de un texto T como una expresión proporcional a la probabilidad de L dado T: x L p( L T ) Aplicando un criterio similar a MAP (máximo a posteriori), podemos decidir acerca del idioma del texto L sin más que elegir el idioma correspondiente al perceptrón con el mayor valor a su salida: L ' = max( x L L ) La probabilidad de acierto es muy alta para textos no demasiado largos. Puede decidir entre idiomas parecidos, aunque presenta problemas para aquellos que comparten preposiciones o determinantes iguales (francés-español, alemán-inglés, ), llegando a no decidir. 2.3.2 Desventajas Dependiendo de la longitud del diccionario es más o menos sensible al formato del conjunto de palabras, en nuestro caso como los diccionarios son extremadamente reducidos resulta desventajoso. Ilustración 3-1: Esquema del perceptrón

Ilustración 3-2: Esquema del sistema completo 3.2 Implementación El algoritmo implementado en nuestra aplicación es capaz de distinguir entre los siguientes idiomas: español, inglés, francés, alemán e italiano. Se ha usado un conjunto de de textos de entrenamiento compuesto por 10 textos de cada idioma (50 textos de entrenamiento en total). Con estos textos se han entrenado cada uno de los perceptrones del sistema para calcular sus pesos w i. Las distribuciones de letras de los textos de entrenamiento se muestran a continuación clasificados por idiomas (se muestran el valor mínimo y máximo de aparición de cada letra en el total de 10 textos de cada idioma): Ilustración 3-3: Distribución de letras en textos en Español

Ilustración 3-4: Distribución de letras en textos en Inglés Ilustración 3-7: Distribución de letras de textos en Italiano El conjunto de caracteres utilizado es: C= {Aa, Bb,, Zz, Çç, Ññ,, `,, ^} El conjunto incluye las letras del alfabeto tradicional (A-Z), la ñ y la ç, y las vocales acentuadas con los acentos, `, y ^. Cada letra se considera independientemente de si está en mayúsculas o en minúsculas, esto es, la A y la a se cuentan en el mismo grupo. Esto genera un total de 32 grupos, que equivalen al número de entradas del sistema (y de cada perceptrón). Ilustración 3-5: Distribución de letras en textos en Francés 3.3 Propiedades 3.3.1 Ventajas El mayor coste computacional está en el cálculo de las estadísticas del texto (frecuencia de aparición de cada carácter) y es prácticamente fijo una vez dado el texto. Dicho coste no crece de manera tan considerable al añadir más idiomas nuevos soportados. No es sensible al formato del conjunto de palabras, por lo que es capaz de decidir en textos que no tengan oraciones, sino un conjunto de nombres, un conjunto de adjetivos, un conjunto de verbos, Es capaz de tomar una decisión siempre. Sencillo de implementar una vez entrenado. La probabilidad de acierto es bastante alta para textos lo suficientemente largos. Ilustración 3-6: Distribución de letras en textos en Alemán 3.3.2 Desventajas No decide bien en textos bilingües.

Decide siempre, por lo que decidirá incorrectamente si se introduce un texto de un idioma no soportado. Puede tener problemas para decidir entre idiomas con distribuciones de letras similares (francés-catalán, alemánholandés, ). Para un número elevado de idiomas soportados, puede requerir un sistema con elementos que tengan mayor capacidad expresiva 1 que un perceptrón lineal. 4. BATERIA DE PRUEBAS Para probar las prestaciones de ambos, se generó un conjunto de test, formado por tres grupos de test de 50 textos cada uno, diez con cada uno de los idiomas (excluyendo nombres propios). A continuación tenemos el listado comparativo de cada prueba: Para textos de 10 palabras: Tabla 4-1: Resultados de la batería de pruebas de 10 palabras. Clasificador Porcentajes Diccionario IDIOMA ACIERTA FALLA ACIERTA FALLA Aleman0 X X Aleman1 X X Aleman2 X X Aleman3 X X Aleman4 X X Aleman5 X X Aleman6 X X Aleman7 X X Aleman8 X X Aleman9 X X Total Alemán 8 2 6 4 Español0 X X Español1 X X Español2 X X Español3 X X Español4 X X Español5 X X Español6 X X Español7 X X Español8 X X Español9 X X Total Español 8 2 10 0 Frances0 X X Frances1 X X Frances2 X X Frances3 X X 1 Capacidad expresiva: capacidad del decisor de trazar fronteras lo suficientemente complejas Frances4 X X Frances5 X X Frances6 X X Frances7 X X Frances8 X X Frances9 X X Total Francés 6 4 6 4 Ingles0 X X Ingles1 X X Ingles2 X X Ingles3 X X Ingles4 X X Ingles5 X X Ingles6 X X Ingles7 X X Ingles8 X X Ingles9 X X Total Ingles 8 2 10 0 Italiano0 X X Italiano1 X X Italiano2 X X Italiano3 X X Italiano4 X X Italiano5 X X Italiano6 X X Italiano7 X X Italiano8 X X Italiano9 X X Total Italiano 7 3 5 5 TOTAL 37 13 37 13 En este caso obtenemos un 74 % de acierto en cada algoritmo, destacar que el diccionario tiene idiomas con un 100% de acierto, más adelante volveremos a este punto, comentándolo con mayor profundidad. Textos con 30 palabras: Tabla 4-2: Resultados de la batería de pruebas de 30 palabras. Clasificador Porcentajes Diccionario IDIOMA ACIERTA FALLA ACIERTA FALLA Aleman0 X X Aleman1 X X Aleman2 X X Aleman3 X X Aleman4 X X Aleman5 X X Aleman6 X X Aleman7 X X Aleman8 X X Aleman9 X X Total Alemán 10 0 9 1 Español0 X X Español1 X X Español2 X X

Español3 X X Español4 X X Español5 X X Español6 X X Español7 X X Español8 X X Español9 X X Total Español 9 1 10 0 Frances0 X X Frances1 X X Frances2 X X Frances3 X X Frances4 X X Frances5 X X Frances6 X X Frances7 X X Frances8 X X Frances9 X X Total Francés 9 1 9 1 Ingles0 X X Ingles1 X X Ingles2 X X Ingles3 X X Ingles4 X X Ingles5 X X Ingles6 X X Ingles7 X X Ingles8 X X Ingles9 X X Total Ingles 10 0 10 0 Italiano0 X X Italiano1 X X Italiano2 X X Italiano3 X X Italiano4 X X Italiano5 X X Italiano6 X X Italiano7 X X Italiano8 X X Italiano9 X X Total Italiano 10 0 8 2 TOTAL 48 2 46 4 En este caso los aciertos aumentan hasta un 96% con los porcentajes y un 92% con el diccionario. Y para los textos de 50 palabras: Tabla 4-3: Resultados de la batería de pruebas de 50 palabras. Clasificador Porcentajes Diccionario IDIOMA ACIERTA FALLA ACIERTA FALLA Aleman0 X X Aleman1 X X Aleman2 X X Aleman3 X X Aleman4 X X Aleman5 X X Aleman6 X X Aleman7 X X Aleman8 X X Aleman9 X X Total Alemán 10 0 9 1 Español0 X X Español1 X X Español2 X X Español3 X X Español4 X X Español5 X X Español6 X X Español7 X X Español8 X X Español9 X X Total Español 10 0 10 0 Frances0 X X Frances1 X X Frances2 X X Frances3 X X Frances4 X X Frances5 X X Frances6 X X Frances7 X X Frances8 X X Frances9 X X Total Frances 9 1 10 0 Ingles0 X X Ingles1 X X Ingles2 X X Ingles3 X X Ingles4 X X Ingles5 X X Ingles6 X X Ingles7 X X Ingles8 X X Ingles9 X X Total Ingles 10 0 10 0 Italiano0 X X Italiano1 X X Italiano2 X X Italiano3 X X Italiano4 X X Italiano5 X X Italiano6 X X Italiano7 X X Italiano8 X 1 Italiano9 X X Total Italiano 10 0 9 1 TOTAL 49 1 48 2 Lo que representa que con 50 palabras el algoritmo basado en porcentajes tiene una proporción de aciertos del 98% y nuestro algoritmo basado en diccionario un 96%.

5. IMPLEMENTACIÓN EN JAVA 5.1 Interfaz gráfica. La interfaz implementada intentamos que resultara amigable y atractiva, ya que, a la hora de la verdad los algoritmos de clasificación son para clientes, que no tienen por qué entender lo que hay detrás. 5.1.1 Menú El menú se compone de dos submenús con las mínimas opciones que son: elegir el clasificador, y opciones de salir; destacar que el programa tiene memoria respecto al clasificador. Menú Modos de introducir el texto Área de texto Barra de progreso Ilustración 5-1: Interfaz gráfica. 5.1.2 Modos de introducir el texto. Incluimos en esta versión dos formas de introducir el texto, desde un fichero o desde el área de texto, ver ilustración 5-1. Para facilitarle las tarea al usuario se incluyó un filtro para seleccionar fichero, dentro de la habitual ventana para elegir fichero, JFileChooser, una vez seleccionado el fichero el programa lo procesa y devuelve la solución. Se asociaron diferentes iconos para ficheros con extensiones txt, java, class, jar y html (o htm), para que al usuario le resultara mas sencillo elegir el fichero a procesar. 5.1.4 Diagramas Para mostrar la solución utilizamos dos tipos de diagramas, de sectores para que el usuario vea cuales son los idiomas que ha identificado y en qué proporción, y porque se decanta por uno o por otro. El segundo es un diagrama de barras con la frecuencia de aparición de cada carácter en el texto. 5.1.4.1 Diagrama de sectores En el área de texto, se puede escribir y pegar texto, con lo que serviría para análisis de textos más cortos, aunque en esta versión no se toma en cuenta, y la cantidad de texto es indiferente. 5.1.3 Barra de progreso La barra de progreso cumple dos misiones importantes, hacerle ver al usuario que está procesando y minimizar la ventana principal para dar paso a los diagramas que muestran la solución. Ilustración 5-2: Diagrama de sectores.

Como se puede observar el diagrama de sectores muestra al pasar el ratón por encima la puntuación obtenida por el idioma, lo realizamos ayudándonos de la librería JFreeChart [1]. 5.1.4.2 Diagrama de barras Como futura mejora, se podría implementar el algoritmo de entrenamiento, que por tiempo y retrasos en el proceso no se portó el código a java, y para entrenar la red neuronal del algoritmo de porcentajes utilizamos Matlab. 5.3 Requisitos El requisito fundamental en un PC con JDK 6.0, ya que las librerías para los diagramas en 3D lo requieren. La librería se adjunta al programa, es gratuita. Ilustración 5-3: Diagrama de barras. En la leyenda podemos ver todos los caracteres que consideramos a la hora de analizar el porcentaje de aparición de letras en un idioma. Al igual que el diagrama anteriormente expuesto, se realizó con ayuda de la librería JFreeChart [1]. 5.1.4.3 La solución La solución para que no haya lugar a dudas, se muestra en una ventana emergente, como podemos ver en la siguiente figura: 6. CONCLUSIONES Nuestro algoritmo basado en porcentajes resulta ser muy bueno, para textos medianos y grandes, escritos en un solo idioma. Además el gasto computacional de este algoritmo es muy bajo y los incrementos en el número de idiomas pasan desapercibidos, pues solo tiene que ejecutarse el perceptrón del nuevo idioma, las búsquedas no varían pues solo se realiza una ante la entrada, después se trabaja con los porcentajes. Si observamos los resultados de las pruebas, existen 2 idiomas que por diccionario resultan óptimos: el inglés y el español, que con diez palabras conseguimos un 100% de aciertos, mientras que calculando porcentajes necesitamos al menos treinta palabras para conseguir un porcentaje similar. Aunque resulta inadecuado para textos cortos, hemos visto que presenta características similares a el otro algoritmo basado en diccionario, para suplir este problema, propondríamos en uso de un algoritmo mixto, dependiente de la longitud del texto. La primera parte utilizarían un algoritmo basado en diccionario, más desarrollado, con más palabras por idioma. Y cuando el texto sea de un tamaño mayor, utilizaríamos nuestro algoritmo basado en porcentajes de aparición. Ilustración 5-4: La solución. 5.2 Algoritmos Se implementaron los dos algoritmos, intentando tener la máxima generalidad posible. Hemos comentado anteriormente la funcionalidad de los mismos y en el punto seis procederemos a la comparación de dichos algoritmos. 7. BIBLIOGRAFÍA [1] JFreeChart : a free chart library for the Java(tm) platform. http://www.jfree.org/ [2] R. Herbrich, "Learning Kernel Classifiers: Theory and Algorithms", MIT Press, (2001). ISBN 0-262-08306-X. [3] David MacKay, Information Theory, Inference, and Learning Algorithms, http://www.inference.phy.cam.ac.uk/mackay/itila/book.html [4] Apuntes de Inteligencia en Redes de Comunicaciones, del mismo curso y titulación.