:: Enseignements :: Licence :: L3 :: 2007-2008 :: Introduction à l'informatique linguistique ::
[LOGO]

n-grammes


Dans ce TP, nous allons manipuler la notion de n-grammes.

Ressources

Pour cette séance, nous vous fournissons un certain nombre de ressources :

Exercice 1 - n-grammes sur les lettres

Dans cet exercice, l'unité minimale de traitement est le caractère.
  • Écrire une fonction qui prend comme paramètre un nom de fichier texte. Cette fonction doit stocker et compter les unigrammes de caractères de ce fichier. Vous vous aiderez notamment de la classe ngrams.
  • Écrire une autre fonction qui stocke et compte les bigrammes de caractères de ce fichier.
  • Écrire encore une autre fonction qui stocke et compte les trigrammes de caractères de ce fichier.
  • Écrire une fonction qui prend comme paramètres une chaîne de caractères prefix et trois éléments de type ngrams représentant les unigrammes, bigrammes et trigrammes calculés dans les trois questions précédentes. Le paramètre prefix correspond à une séquence de caractères déjà tapée par un utilisateur. La fonction doit renvoyer le caractère suivant le plus probable étant donné prefix.
  • Adapter l'algorithme de génération aléatoire de textes (séquence de tokens), vu en cours, à la génération caractère par caractère. Pour cela, vous utiliserez les trigrammes de caractères calculés dans les questions précédentes. Le principe de l'algorithme est le suivant. On couvre l'espace de probabilités [0,1] avec tous les trigrammes (chacun occupe un espace proportionnel à sa probabilité). On choisit un nombre aléatoirement entre 0 et 1 et on écrit le trigramme qui contient ce nombre. Pour choisir le caractère suivant, on couvre [0,1] avec tous les trigrammes qui commencent par les deux derniers caractères de la séquence générée précédemment et on en choisit une aléatoirement, etc.
    Note : pour générer aléatoirement un nombre réel entre 0 et 1 en python, utiliser la fonction random du module random.

Exercice 2 - n-grammes sur les étiquettes grammaticales

Dans cet exercice, l'unité minimale de traitement est l'étiquette grammaticale d'un mot.
  • Stocker et compter les unigrammes, bigrammes et trigrammes d'étiquettes grammaticales à partir de quelques textes étiquetés de l'archive suzanne.zip. Pour charger un texte étiqueté, le constructeur de la classe taggedText devra comporter un argument file qui sera le nom du fichier à charger. L'argument with_treetagger devra être désactivé (with_treetagger=False, valeur par défaut).
  • Étant donné une séquence de deux étiquettes, prédire l'étiquette suivante la plus probable.

Exercice 3 - Étiquetage morphosyntaxique simple