2010-11-25 10 views
13

Gibt es jemanden, der TREC_EVAL benutzt hat? Ich brauche ein "Trec_EVAL für Dummies".Wie evaluiere ich ein Such/Retrieval-Engine mit Trec_eval?

Ich versuche ein paar Suchmaschinen zu bewerten, um Parameter wie Recall-Precision, Ranking-Qualität, etc. für meine Abschlussarbeit zu vergleichen. Ich kann nicht finden, wie man TREC_EVAL verwendet, um Anfragen an die Suchmaschine zu senden und eine Ergebnisdatei zu erhalten, die mit TREC_EVAL benutzt werden kann.

+0

sind Sie immer noch an diesem Thema interessiert? – shellter

+0

Ich habe einen verwandten Zweifel, wie man nicht-binäre Relevanz-Etiketten behandelt? – Shashank

Antwort

16

Grundsätzlich benötigen Sie für trec_eval eine (vom Menschen generierte) Grundwahrheit. Das hat in einem speziellen Format sein:

query-number 0 document-id relevance 

eine Sammlung wie 101Categories (wikipedia entry) Da das so etwas wie

Q1046 0 PNGImages/dolphin/image_0041.png 0 
Q1046 0 PNGImages/airplanes/image_0671.png 128 
Q1046 0 PNGImages/crab/image_0048.png 0 

Die Abfrage-Nummer identifiziert daher eine Abfrage (zB ein Bild von einem wäre bestimmte Kategorie, um ähnliche zu finden). Die Ergebnisse aus Ihrer Suchmaschine hat dann wie

query-number Q0 document-id rank score Exp 

oder in Wirklichkeit

Q1046 0 PNGImages/airplanes/image_0671.png 1 1 srfiletop10 
Q1046 0 PNGImages/airplanes/image_0489.png 2 0.974935 srfiletop10 
Q1046 0 PNGImages/airplanes/image_0686.png 3 0.974023 srfiletop10 

wie here aussehen umgewandelt werden. Möglicherweise müssen Sie die Pfadnamen für die "Dokument-ID" anpassen. Dann können Sie die Standardmetriken berechnen. trec_eval --help sollte Ihnen einige Ideen geben, um die richtigen Parameter für die Verwendung der für Ihre Abschlussarbeit benötigten Messungen zu wählen.

trec_eval sendet keine Anfragen, Sie müssen sie selbst vorbereiten. trec_eval macht nur die Analyse einen Grundtruth und Ihre Ergebnisse.

Einige grundlegende Informationen können here und here gefunden werden.

+0

Hi @mbx, Wie haben Sie die Zahlen unter der Spalte 'score' berechnet? (es sagt: 1, 0,974935, 0,974023). Ich habe gelesen, dass sie die Grade zwischen dem Ergebnisdokument der Zeile und dem korrekten relevanten Dokument darstellen, aber ich kann nicht herausfinden, wie man zu diesen Zahlen kommen würde (außer "1" - was ich als 100% ige Genauigkeit ansehe). –

+0

@NoonTime Iirc die erste Zahl ist die Position in der Ausgabe (von topX) und die zweite ist die Rangfolge der Antwort "Wie nah wird diese Ausgabe, wenn Ihre Eingabe 1 ist" - so hängt es vollständig von dem Algorithmus, den Sie wollen messen. – mbx

+0

ok danke @mbx, aber mathematisch, wie hast du diese 0,974935 Nummer? Ich weiß, dass es von der {last_position - 1} abgeleitet ist. Teilen Sie das durch die Gesamtzahl der abgerufenen Ergebnisse und verwenden Sie diesen Bruchteil? Wenn Sie zum Beispiel 100 Ergebnisse hätten, wäre der Score der zweiten Reihe (100-1)/100 also .99? –