:: Enseignements :: Master :: M1 :: 2009-2010 :: Ingénierie Linguistique 1 ::
[LOGO]

Recherche d'information


Le but de ce TP est de manipuler des documents sous la forme de vecteurs et d'implémenter un petit moteur de recherche.

Préliminaires

Pour cette séance, vous avez à disposition une collection de dépêches Reuters à l'adresse suivante: /home/ens/mconstan/tal/reuter-collection-tp (pour téléchargement, ici). Le fichier collection.lst contient la liste des textes de la collection.

Exercice 1 - Représentation d'un texte

Ecrire une classe Text qui représente un texte ou une requête sous une forme vectorielle (un dictionnaire Python qui a pour clés les token-mots du texte et pour valeurs leurs nombres d'occurrences dans le texte). Le texte se trouve soit dans un fichier soit dans une chaîne de caractères. Son constructeur prend donc deux paramètres optionnels (par défaut None): le nom du fichier texte et une chaîne de caractères. Elle possède plusieurs méthodes:
  • getName() qui renvoie le nom du fichier (None si c'est une requête)
  • getWordTokens() qui renvoie l'ensemble des différents token-mots du texte
  • getWeight(word) qui renvoie la fréquence du token-mot word
  • cosine(t) qui renvoie le cosinus du texte avec un autre texte t.

Exercice 2 - Représentation d'une collection

Ecrire une classe TextCollection qui représente une collection de documents sous la forme d'une liste (de Text). Son constructeur prend le nom du fichier définissant la collection, comme paramètre. Elle contient la méthode getTexts() qui renvoie la liste des textes.

Exercice 3 - Moteur de recherche

A partir des classes précédentes, écrire un script qui implémente un moteur de recherche simple qui lit en entrée standard les requêtes.
  • Ecrire une méthode search dans la classe TextCollection qui prend comme paramètres la requête et le nombre N maximal de documents à renvoyer. Elle renvoie la liste des documents triés par ordre décroissant selon le degré de pertinence des documents par rapport à la requête. Cette liste contient au maximum N textes et ces textes doivent avoir un cosinus non nul avec la requête.
  • Utiliser cette méthode pour écrire un petit moteur de recherche simple (cf. cours).

Exercice 4 - Bonus