Este documento describe los pasos seguidos para crear un programa que relaciona noticias similares. Se crearon 7 clases para extraer información de archivos XML de noticias, generar un archivo XML con la estructura de grupos y noticias, y transformarlo a HTML. El algoritmo usado para relacionar noticias se basa en fechas coincidentes y entidades nombradas iguales en títulos y párrafos.
3. Descripción de los pasos seguidos
Librerías empleadas: simmetrics y xerces.
Para la realización de esta práctica se creó un juego de 7 clases
diferentes, realizando cada una de ellas un trabajo específico.
1. Clase Noticia: Es la clase que contiene la información
de las noticias. Posee los atributos (título,
parrafo,fecha, listaPalabrasTitulo y listaPalabrasParrafo).
En cuanto a los métodos tiene el constructor, getTitulo y
getParrafo empleados para generar el XML, y por último
buscaParecidos que tiene como entrada un objeto de la
clase Noticia y compara mediante el algoritmo que
especificaremos más adelante si dos objetos de la clase
Noticia tienen relación.
2. Clase Parser: Esta clase se encarga de realizar la
extracción de la información de los documentos XML
dados para la realización de esta práctica. Se le ha
añadido un método extra llamado generaNoticia que
devuelve un objeto de la clase Noticia. Este método tiene
como parámetros de entrada una Lista de la clase String
que contiene los StopWords que se emplearán para
limpiar las palabras.
3. Clase ManejadorSAX: Realiza las llamadas a la clase
Parser y tiene como métodos generarNoticias, al que se
le pasa la ruta del fichero StopWords y la ruta del fichero
de la noticia.
Así mismo, tiene otro método privado llamado
generaStopWrods que abre el fichero de las palabras que
no aportan contenido y los mete en una lista.
4. Clase CrearDOM: Esta clase es empleada para generar
el árbol DOM de XML. La estructura elegida y es: como
raíz GruposNoticias, y como subelemento de
GruposNoticias empleamos a Grupo que contendrá el
número de grupo y el número de noticias. Así mismo
y por último tenemos como subhijo de Grupo a Noticia
que contendrá el título y el primer párrafo.
5. Clase Transformador: Esta clase se encarga de
transformar el documento XML generado por
CrearDOM en html mediante XSL.
4. 6. Clase Cerebro: Es la clase que contiene objetos de
todas las clases anteriormente mencionadas. Su
funcionamiento es sencillo. Primero hacemos una lista de
archivos del directorio que se le pasa al constructor de
esta clase. Después extraemos con SAX toda la
información de los archivos XML listados. Una vez
extraída toda la información, generamos un archivo XML
con CrearDOM y por último lo transformamos a HTML con
la Clase Transformador.
7. La Clase MAIN es el programa principal y crea el objeto
Cerebro al que le pasa la carpeta de noticias y el archivo
de las StopWords. Por último hace la llamada al método
generarXML();
5. Algoritmo Empleado Para Relacionar Noticias
El algoritmo empleado para la realización de esta práctica emplea la
fecha de la publicación de la noticia para emplear la proximidad
referencial, es decir, las noticias que comparten fecha, tienen más
posibilidades de tener relación.
También empleamos las entidades nombradas extraídas del
primer párrafo y del título para realizar comparaciones.
El algoritmo se basa en un sistema de puntuación bastante
básico donde para conseguir un HIT (acierto), es necesario
puntuar 0,6.
El valor dado para la coincidencia de la fecha, es de 0,2 y el valor
dado para cada apariencia de las entidades nombradas es de
0,4. Por lo tanto, si tienen la misma fecha y una misma entidad
nombrada tendrán relación. Cuando tienen más de una
apariencia de entidad nombrada, se puntuará como 1 pues la
noticia tendrán claramente relación según nuestro algoritmo.
Para comparar las entidades nombradas, buscamos primero en el
título relaciones con la lista del título de la otra noticia y así mismo
con el primer párrafo. Se realiza de manera igual con la lista de
palabras del Primer párrafo de la noticia comparándola con el título
y la lista del primer párrafo.
Mejoras Propuestas
Para mejorar el LayOut (apariencia) empleamos un color fondo
de pantalla amigable para la vista, resalto de títulos en negrita y
se justifica el primer párrafo de cada noticia para una mejor
lectura. Así mismo se emplea un div con posición relativa para
ser más compatible con las resoluciones de los distintos
navegadores.