TP 2 Recherche d`informations – Indexation de documents

Transcription

TP 2 Recherche d`informations – Indexation de documents
TP 2 Recherche d’informations – Indexation de documents Pour des raisons pratiques, ce TP nécessite un environnement Linux ou OSX. Suite au TP1, nous allons consacrer cette séance à l’indexation selon le modèle vectoriel des documents de la collection Le Monde. Nous souhaitons caractériser les 153 documents du corpus, selon un vecteur de 1000 dimensions (la taille de notre vocabulaire), où chaque terme sera pondéré selon la méthode simple TF.IDF. 1. Extraction des termes par document Réutilisez les commandes de la séance précédente pour identifier les termes apparaissant dans chaque document. Enregistrez la liste des termes avec leur fréquence d’occurrence dans des fichiers avec l’extension « .dat ». 2. Filtrage des documents selon le vocabulaire « vocab.dat » Ecrivez un programme qui filtre les fichiers « .dat » pour ne conserver que les termes qui apparaissent dans « vocab.dat ». Ecrivez le résultat dans des fichiers a deux colonnes <nombre d’occurrences> <terme> avec l’extension « .tf ». Plusieurs solutions : ‐
Ecrire un script shell avec les commandes grep, awk, echo, while, for, if. ‐
Ecrire un programme Java qui chargera « vocab.dat » dans une HashMap. 3. Fréquence des documents par terme Ecrivez un programme qui compte, pour chaque terme de « vocab.dat », le nombre de documents indexés par ce terme. Ecrivez le résultat dans le fichier « vocab.df » contenant deux colonnes <nombre d’occurrences> <terme>. Plusieurs solutions : ‐
Ecrire un script shell avec les commandes grep, awk, echo, wc, for, while, if. ‐
Ecrire un programme Java qui chargera les fichiers « .dat » dans un tableau de HashMap. 4. Calcul des vecteurs de chaque document Ecrire un programme qui génère un fichier « .vec » par document, correspondant au vecteur des termes pondérés par la formule TF x IDF. Pour que les vecteurs soient facilement comparables, tous les fichiers seront ordonnés selon l’ordre d’apparition des termes dans « vocab.dat ». Notons les documents selon l’indice i et les termes selon l’indice j, le poids wij du terme j dans le document i pourra être calculé selon la formule suivante : w ij = (1+ log(tf ij ) × log(
N
) df i
avec N, le nombre de documents dans le corpus. €
5. Interrogation et requête Ecrire un programme qui prend en argument une liste de mots‐clés et qui retourne le nom des 10 documents les plus pertinents. a. Chargement des vecteurs en mémoire Ouvrir les fichiers « .vec » et les stocker dans des tableaux de float. b. Vecteur requête Générer le vecteur correspondant à la requête : un tableau de float où seul les indice correspondant aux mots‐clés sont à 1. c. Fonction de correspondance Ecrire une fonction qui calcul la correspondance (similarité) entre deux vecteurs. On considèrera la fonction Cosinus : N
Sim(x, y) =
∑ x ×y
∑x ×∑y
i= 0
2
i
i
i
2
i
avec N, le nombre de termes dans le vocabulaire. €