Informatique et recherche
opérationnelle
IFT6010

Intelligence Artificielle
Traitement statistique des langues naturelles

Hiver 2003


Accueil

Cours après cours

Devoirs

Horaires et locaux

Au sujet du
livre de cours

Consultez vos notes

Liens utiles

Contact

Les séminaires
RALI/LLI

Quelques infos sur le TP1

Tout le monde m'a rendu un TP qui répondait aux consignes de base. Quelques TP sont excellents.

Barême

J'ai noté votre travail avec le barême suivant:

Tout travail remis répondant aux spécifications minimales du sujet obtenait la note de 17. Un certains nombre de facteurs vous permettaient ensuite d'aller chercher au plus 3 points; en voici une liste non exhaustive:

  • un très bon rapport
  • des expériences poussées
  • un produit final efficace (tant en temps qu'en performance)
  • correction par viterbi
Un programme très lent et peu performant perdait également un point.

Quelques remarques en vrac

  • Lorsque je vous impose une ligne de commande, il serait judicieux de la respecter. Je ne le fais pas par vice, mais pour me simplifier la vie (je peux iainsi tester tous vos tps via un script). Vous êtes plusieurs à ne pas respecter les lignes de commandes (l'ordre des arguments, etc.), et vous êtes également plusieurs à ne pas décrire à même le programme, ce que le programme attends (votre programme plante ou gèle).

  • Lorsque votre programme gère plusieurs options qui règlent le comportement du programme, toujours mettre les options par défaut aux valeurs que vous estimez les plus intéressantes.

  • Dans un rapport, il est plus intéressant de faire ressortir les questions aux interrogations que vous vous êtes posées que de paraphraser le sujet: je sais très bien ce qui vous a été demandé !

  • Hash_map n'est pas un buzz word que je tiens à lire à tout prix ! Me dire "j'ai utilisé une hash_map pour coder les n-gram" n'est pas vraiment informatif (c'est quoi la clé ? etc.). Pour ceux qui fouillent un peu autour de l'idée minimale qui est présentée dans les sujets, vous verrez dans le tp2 (et vous avez du voir dans le tp1) que le choix de la structure de donnée conditionne les performances (en temps) de votre programme. C'est cet aspet des choses qui m'intéresse dans la section "structures de données".

  • Pour le TP2: il est vrai que je ne vous ai pas spécifié où je souhaitais que la correction se fasse. Dans l'optique d'une verification automatique de vos programme, la seule option viable est: sur la sortie standard (stdout pour les amoureux du C, cout pour les fans de C++ et System.out pour les javaistes). Ceci me permet de rediriger la sortie de vos programmes vers des fichiers dont je controle le nom, plutôt que d'aller fouiller pour deviner la sortie. Merci de respecter cela pour le TP2. Les traces qui ne font pas parti de la sortie demandée peuvent être faites sur la sortie erreur standard (stderr, cerr ou System.err).

Tests

J'ai testé vos programmes sur une machine "ordinaire" (un athlon, 500 Meg de mémoire vive) avec le modèle hans-500000.arpa et le lexique hans-500000.vocab et j'ai demandé la correction du texte: out-50.test; bref: des fichiers disponibles à même le sujet. Je n'ai pas joué avec les options par défaut de la ligne de commande de vos programmes. Les temps sont donnés en temps utilisateur (tel que retourné par la commande système time).

Voici vos systèmes à précision 1: le système idéal est celui qui a une précision de 1 en un temps de traitement nul (coin supérieur gauche). Au départ 11 systèmes.

Voici vos systèmes à précision 2: toujours 11 systèmes.

Voici vos systèmes à précision 3: je retire le système du coin inférieur droite pour mieux départager les systèmes du coin supérieur gauche. Il reste donc 10 systèmes.

Conclusions

  • un programme semble (sur le jeu de test) systématiquement plus rapide et meilleur.
  • deux programmes sont identiques tant dans leur temps d'exécution que dans leur performance !
  • la diversité est créatrice de richesses




Dernière mise à jour : Tue Mar 18 10:55:29 EST 2003
felipe@iro.umontreal.ca