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

Tokenisation et indexation


Le but du TP est de manipuler les expressions rationnelles pour découper les textes en tokens. Nous aborderons l'indexation de documents et la recherche de motifs.

Exercice 1 - Tokenisation

Le but de l'exercice est d'écrire en Python un programme qui découpe un texte en tokens à l'aide d'expressions rationnelles.
Indication: vous devrez prendre le texte en français de votre choix sur le web. Travailler en encodage UTF-8.

  1. Dans un premier temps, on définit un token comme suit:
    • soit une séquence de lettres (attention aux accents!).
    • soit un chiffre
    • soit un symbole de ponctuation
  2. Modifier votre script pour que votre expression rationnelle reconnaisse aussi comme tokens, les nombres (entiers et décimaux) et les prix du type 15,3€.
  3. Modifier votre script pour que votre expression rationnelle reconnaisse aussi les dates en chiffres comme tokens. Par exemple, 01/12/2009; 2010-01-11; etc.
  4. Dessiner sur papier un automate à états finis correspondant à votre expression rationnelle.

Exercice 2 - Indexation

Le but de l'exercice est d'indexer une collection de textes par tokens. La collection se trouve à l'adresse suivante: /home/ens/mconstan/tal/reuter-collection-tp. (pas de copie du répertoire!) La liste des textes se trouve dans le fichier collection.lst.

  1. Ecrire un script Python qui construit l'index de la collection et le sauvegarde dans un fichier. Il prendra comme paramètre le nom du fichier contenant la liste des textes de la collection. L'index doit comporter les informations suivantes pour chaque token: l'ensemble des documents dans lequel il apparaît. Indication: utiliser un dictionnaire Python et le module pickle pour la sauvegarde (fonction dump()).
  2. Nous souhaitons maintenant implémenter un petit moteur de recherche simple. Une requête est une suite de mots qui doivent appartenir aux documents que l'on cherche. Pour cela, on va écrire un nouveau script python qui va, dans un premier temps, charger l'index (cf. la fonction load() du module pickle) puis traiter les différentes requêtes entrées par l'utilisateur.
    • Ecrire une fonction qui prend comme paramètre une requête (string) et un index d'une collection. Elle renvoie la liste des documents de la collection, qui contiennent tous les mots de la requête.
    • Faire en sorte que votre script demande à l'utilisateur de rentrer sa requête au clavier (méthode raw_input()) Le script doit être capable de gérer plusieurs requêtes consécutives indéfiniement.
    • Mofifier le script pour ajouter une option aux requêtes afin qu'il soit aussi possible d'obtenir tous les documents contenant au moins un mot de la requête.