:: Enseignements :: Master :: M1 :: 2010-2011 :: Ingénierie Linguistique 1 ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | 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
- Optimiser le moteur de recherche en utilisant un index.
- Faire en sorte que le poids d'un token-mot dans un texte soit la mesure TF.IDF vue en cours.
- Optimiser le tri des documents pertinents par rapport à une requête.
© Université de Marne-la-Vallée