TP3 Date de remise: Partie 1, 2008-04-09, 5/10 Partie 2, 2008-04-23, 5/10 Le troisième TP consiste principalement à apprendre à utiliser des librairies déjà existantes afin de construire une application plus complexe. Le but final est de pouvoir réaliser une études sur divers flux RSS afin d'explorer les relations entre ceux-ci. La première partie consiste à télécharger des flux RSS et à préparer l'analyse pour la deuxième partie. Votre programme devra prendre en entrée un nom de fichier contenant une liste de flux, et imprimer avec System.out la liste des mots utilisés (et la fréquence) dans chaque flux. Le fichier contiendra sur chaque ligne le nom d'un flux et l'URL du flux RSS, et sera terminé d'une ligne vide. La sortie devra donner pour chaque URL (en ordre) la liste de tous les mots (en ignorant la casse) utilisés dans les titres (tagname: title) et descriptions (tagname: description) des entrées (en ordre décroissant de fréquence) de même que le nombre d'occurrences, avec une ligne vide avant chaque URL. Par exemple, soit le fichier d'entrée `flux.lst': foobar http://www.foobar.com/rss20.xml slashdot http://rss.slashdot.org/Slashdot/slashdot [EOF] On devra recevoir une sortie comme > java TP3-1 flux.lst http://www.foobar.com/rss20.xml a 3087 the 2305 [...] http://rss.slashdot.org/Slashdot/slashdot the 4706 itsatrap 3801 [...] [EOF] Afin de coder cette fonctionnalité, on vous propose d'utiliser les classes java.net.URL et le paquetage javax.xml.parsers (via le modèle DOM, donc DocumentBuilder[Factory]). L'utilisation du DOM donne accès à Document.getElementsByTagName et à Node.getTextContent. Finalement, nous considérons comme mot toute suite continue de lettres (minuscules ou majuscules). Vous aurez bien sûr à étudier le fonctionnement des librairies vous-mêmes. En deuxième partie, vous aurez à implémenter un calcul de distance entre flux RSS via la caractérisation tf-idf (http://fr.wikipedia.org/wiki/TF-IDF), et à produire une liste des associations de chaque flux vers chacun des k flux les plus similaires. La sortie devra avoir en tête ' digraph G { center "" ' en et pied '}'. Pour chaque association d'un flux 'foobar' vers 'slashdot', un de ses k plus proches voisins, on aura 'foobar -> slashdot;'. Par exemple, > java TP3-2 flux.lst digraph G { center "" slashdot -> foobar; ... } Ce format a l'avantage de décrire un graphe dirigé dans le format dot. On peut donc le passer en entrée au programme neato, disponible sur les machines du département afin d'obtenir des images du graphe. Par exemple: > java TP2-2 flux.lst | neato -Tpng -o flux.png