Ce TP est dédié à l'utilisation d'un logiciel qui permet de réaliser des évaluations des systèmes de recherche d'information trec_eval.
Dans cette partie, il vous est demandé de rapatrier le logiciel trec_eval. Deux cas sont possibles :
Vous devez rapatrier le logiciel sur le site officiel TREC : trec_eval 9.0.7. Vous devez ensuite l'installer (en le décompressant avec
gunzip trec_eval-9.0.7.tar.gz qui génére trec_eval-9.0.7.tar,
puis
tar xvf trec_eval-9.0.7.tar
qui crée le fichier trec_eval.9.0
Enuite, vous le compilez avec
make trec_eval
ce qui génère l'exécutable trec_eval.
Cette version n'est pas garantie, mais vous pouvez essayer… Vous devez rapatrier le code exécutable trec_eval sous Windows, ainsi que le fichier de batch run_trec_eval.bat dans le même répertoire.
Vous devez rapatrier http://ctp.di.fct.unl.pt/~jmag/ir/materials/trec_eval_windows.zip. Dézipper le fichier, ce qui crée un répertoire trec_eval_windows. Rapatrier le fichier run_trec_eval.bat ainsi que les deux fichiers d'évaluation (xf. ci-dessous) avant d'exécuter ./run_trec_eval
Comme nous l'avons vu en cours, pour évaluer un système de recherche d'information il est nécessaire d'avoir à disposition, d“un côté
Ce fichier contient l'ensemble des documents pertinents d'après un humain, par requête. Le fichier trec_rel est composé de lignes de la forme : Query_id iter docno rel avec
query_id : un entier identifiant une requête; iter : constant et égal à "0", il est ignoré mais il faut le mettre; docno : l'identifiant d'un document (chaîne de caractère); rel est un entier (1 pour pertinent, 0 pour non pertinent). (NOTE : les lignes avec 0 peuvent être omises).
Les lignes sont triées par valeur de query_id croissant.
Un exemple de ligne, tiré du fichier qrel.txt qui vous est fourni, est :
01 0 doc1 1
qui indique que pour la requête “01”, le document “doc1” est pertinent.
Pour que trec_eval puisse travailler il faut que les identifiants de documents du fichier trec_rel soient cohérents avec ceux du fichier trec_top (voir ci-dessous), et il en est de même pour les identifiants des requêtes.
Ce fichier contient le résultat d'un système qui a exécuté une ou plusieurs requêtes. Le fichier trec_top_file est composé de lignes de la forme : query_id iter docno rank sim run_id séparés par un espace, avec :
query_id : un entier identifiant une requête; iter : constant et égal à "0", il est ignoré mais il faut le mettre; docno : l'identifiant d'un document (chaîne de caractère); sim : une valeur réelle (notation anglaise avec des points) de valeur de pertinence calculée par le système; rank : le rang du résultat, un entier qui débute à 0; run_id : une chaîne qui identifie le système évalué.
Le fichier est supposé trié sur les query_id, et pour une requête il est trié par valeur de pertinence sim décroissante.
Un exemple de ligne, tiré du fichier qtop.txt qui vous est fourni, est :
01 0 doc1 0 12.5 0
qui indique que pour la requête “01”, le document en position 0 est “doc1” et que sa valeur de pertinence calculée par sysyème est 12.5 .
Quand on lance le programme trec_eval, il affiche un certain nombre de mesures d'évaluations à l'écran, en fonction des fichiers qtop et qrel qui lui sont passés en paramètre. Nous décrivons ici le comportement avec l'option -q, qui passe en revue chaque requête avant de donner un résultat global. La commande à lancer est :
trec_eval -q qrel.txt qtop.txt
Dans les explications qui suivent, nous utilisons les affichages avec les fichiers fournis.
num_ret 01 3 num_rel 01 2 num_rel_ret 01 1
Pour une requête (01), le nombre de documents retrouvés (3), pertinents (2) et pertinents retrouvés (1).
num_q all 2 num_ret all 8 num_rel all 5 num_rel_ret all 4
Pour une l'ensemble des requêtes, le nombre de requêtes (2), le nombre de total documents retrouvés (8), total de pertinents (5) et total de pertinents retrouvés (4).
ircl_prn.0.00 01 ircl_prn.0.10 01 ... ircl_prn.1.00 01
Le tableau normalisé pour la requête 01.
ircl_prn.0.00 all ircl_prn.0.10 all ... ircl_prn.1.00 all
Le tableau normalisé pour toutes les requêtes.
Les autres lignes ne nous intéressent pas ici dans le cadre de ce TP.
Les fichiers qrel.txt et qtop.txt suivants représentent une évaluation sur 2 requêtes, avec deux documents pertinents pour des humains pour la requête 01, et trois documents pour la requête 02. Vous pouvez soit les créer à la main, soit les rapatrier qrel.txt, qtop.txt
qrel.txt :
01 0 doc1 1 01 0 doc3 1 02 0 doc6 1 02 0 doc8 1 02 0 doc10 1
qtop.txt :
01 0 doc1 0 12.5 0 01 0 doc2 1 10 0 01 0 doc6 2 9 0 02 0 doc6 0 145 0 02 0 doc7 1 120 0 02 0 doc10 2 110 0 02 0 doc8 3 11.3 0 02 0 doc12 4 1 0
Lancer l'exécution du programme trec_eval pour les deux fichiers ci-dessus, avec l'option ”-q“. Dans le cas d'une utilisation sous windows, le fichier trec_eval.bat utilise ces deux fichiers et l'option ”-q“.
Vérifier que les résultats (courbes de rappel/précision normalisés) obtenus sont ceux que vous calculez (cf. le cours), pour la requête 01, la requête 02, et pour les deux requêtes prises ensemble et présenter vos résultats dans votre rapport.
Créez un fichier p2_qrel.txt, pour une requête 01 qui possède 3 documents pertinents (à vous de choisir des identifiants)
Créez 2 fichiers rel, appelés sys1_p2_qtop.txt et sys2_p2_qtop.txt Dans sys1_p2_qtop.txt on a 5 réponses, et les 3 premiers résultats correspondent aux 3 documents pertinents. Dans sys2_p2_qtop.txt on a aussi 5 réponses, mais les 3 document pertinents sont aux rangs 2, 3 et 4 (rappelons que la première réponse est au rang 0).
Lancer l'évaluation des sys1 et sys2 (en modifiant si nécessaire le fihier ”.bat“ sur windows), et vérifier que les tableaux normalisés donnent de meilleurs résultats pour sys1.
Créez les fichiers ex9_qtop.txt et ex9_qrel.txt pour représenter les informations liées uniquement à le requête Q1 de cet exercice, dans un premier temps.
Lancer trec_eval -q ex9_qrel.txt ex9_qtop.txt et vérifier que le tableau de rappel précision normalisé obtenu est le même que celui que nous avons calculé.
Ajouter les informations relatives à Q2 pour les deux fichier ex9_qtop.txt et ex9_qrel.txt, et vérifiez encore une fois que trec_eval est cohérent avec vos calculs.