====== Evaluation des Systèmes de Recherche d'Information ====== ====== 1. But du TP ====== 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**. ====== 2. Déroulement ====== ===== 2.1. Rapatriement et compilation de trec_eval ===== Dans cette partie, il vous est demandé de rapatrier le logiciel trec_eval. Deux cas sont possibles : ==== Sous UNIX/MacOS ==== Vous devez rapatrier le logiciel sur le site officiel TREC : [[https://trec.nist.gov/trec_eval/trec_eval-9.0.7.tar.gz|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. ==== Sous Windows ==== Cette version n'est pas garantie, mais vous pouvez essayer... Vous devez rapatrier le code exécutable {{ :trec_eval.exe |trec_eval sous Windows}}, ainsi que le fichier de //batch// {{ :run_trec_eval.bat |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 |run_trec_eval.bat}} ainsi que les deux fichiers d'évaluation (xf. ci-dessous) avant d'exécuter ./run_trec_eval ===== 2.2. Fichiers utilisés par 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é - les estimations réalisées par des humains, classiquement appelé trec_rel ou qrel.txt . Un exemple de fichier qrel.txt est donné {{ :qrel.txt |ici}} - les résultats du système évalué, appelé trec_top ou qtop.txt, est donné {{ :qtop.txt |ici}} === Fichier trec_rel.txt === 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. === Fichier trec_top_file === 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 . === Explication des résultats de trec_eval === 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. == Sur Toutes les versions == 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. ====== 3. Questions ====== ===== Partie 1 : les fichiers à utiliser ===== 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 |qrel.txt}}, {{ :qtop.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. ===== Partie 2 : Deux exemples sur une requête. ===== 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. ===== Partie 3 : Les exemples de l'exercice 9 vus en cours ===== 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.