Rafael Glater

Aprenda a usar o trec_eval para avaliar seu sistema de recuperação de informação

O trec_eval é uma ferramenta usada para avaliar rankings, seja de documentos ou qualquer outro tipo de informação que esteja ordenada por ordem de relevância. A avaliação é feita com base em dois arquivos: O primeiro, conhecido como "qrels" (query relevances), traz os julgamentos de relevância de cada consulta. O segundo traz o ranking de documentos retornados pelo seu sistema de recuperação de informação. Mais detalhes sobre esses arquivos serão descritos a seguir.

Download

Clique aqui para acessar a página oficial e baixe a versão lastest, que atualmente está na versão 9.0. Após o download, extraia os arquivos em uma pasta e digite "make" na linha de comando para compilar o trec_eval. Após esse comando o trec_eval estará pronto para ser usado.

Como usar

O comando para rodar o trec_eval segue o seguinte formato:

$ ./trec_eval [-q] [-m métrica] qrel_file results_file

 

trec_eval: é o nome do programa.
-q: é um parâmetro para indicar que além das métricas sumarizadas, deve-se exibir o valor para cada consulta individualmente.
qrel_file: é o arquivo com a lista de documentos relevântes para cada consulta.
-m: indica que deve ser exibida apenas uma métrica específica ("-m all_trec" exibe todas as métricas, "-m official" é o padrão e só exibe as métricas principais).
results_file: é o arquivo com a lista de documentos retornados pela sua aplicação.

OBS: O trec_eval disponibiliza um arquivo de qrels e outro de resultados como exemplo, que são respectivamente os arquivos "test/qrels.test" e "test/results.test". Você pode testar o comando com eles.

Visualizando uma métrica específica

Caso você queria saber apenas algumas métricas específicas, basta usar o parâmetro -m e informar o nome da métrica. Use o ponto para passar parâmetros para a métrica e separe por vírgula múltiplos parâmetros. O parâmetro -m deve ser passado uma vez para cada métrica. Por exemplo, para exibir apenas as métricas map, a precisão dos top 5 e dos top 10:

$ .\trec_eval -m map -m P.5,10 qrels_file results_file

 

Detalhes sobre as métricas disponíveis são dados abaixo.

O arquivo de qrels

Este arquivo contém uma lista de documentos considerados relevantes para cada uma das consultas. Esse julgamento de relevância é feito por seres humanos que selecionam manualmente os documentos que devem ser retornados quando determinada consulta é realizada. Esse arquivo pode ser considerado como a "resposta correta" cujos documentos retornados pelo seu sistema devem se aproximar ao máximo. Ele possui o seguinte formato:

ID-consulta 0 ID-documento relevância

ID-consulta é uma sequência alfanumérica para identificar a consulta, ID-documento é uma sequência alfanumérica para identificar o documento julgado e relevância é um número que indica o grau de relevância do documento para a consulta (0 para não relevante e 1 para relevante). O segundo campo "0" não é usado atualmente, apenas coloque-o dessa forma no arquivo. Os campos podem ser separados por um espaço em branco ou tab.

O arquivo de resultados

O arquivo de resultados contém o ranking de documentos para cada consulta gerados de forma automática pela sua aplicação e é ele que será avaliado pelo trec_eval com base na "resposta correta" fornecida pelo primeiro arquivo. Esse arquivo possui o seguinte formato:

ID-consulta Q0 ID-documento rank score STANDARD

ID-consulta é uma sequência alfanumérica para identificar a consulta. O segundo campo, com valor "Q0", é atualmente ignorado pelo trec_eval, apenas coloque-o dessa forma no arquivo. ID-documento é uma sequência alfanumérica para identificar o documento retornado. O campo rank é um valor inteiro que indica em que posição do ranking está o documento, porém esse campo também é ignorado pelo trec_eval. O campo score pode ser inteiro ou float e indica o grau de similaridade do documento com a consulta, logo os documentos mais relevantes terão um score mais alto. O último campo, com valor "STANDARD", serve apenas para identificar o conjunto de resultados (esse nome também é exibido nos resultados), pode ser qualquer sequência alfanumérica.

Métricas do trec_eval

Executando o trec_eval de forma padrão as seguintes informações são exibidas:

runid Nome do conjunto de resultados (último campo do arquivo de resultados)
num_q Número total de consultas avaliadas
num_ret Número total de documentos retornados
num_rel Número total de documentos relevantes (de acordo com o arquivo de qrels)
num_rel_ret Número total de documentos relevantes retornados (no arquivo de resultados)
map Mean average precision (map)
gm_map Average precision. Geometric mean
Rprec Precisão dos R primeiros documentos, onde R é o número de relevantes
bpref Binary preference
recip_rank Reciprical Rank
iprec_at_recall_0.00 Interpolated Recall - Precision Averages at 0.00 recall
iprec_at_recall_0.10 Interpolated Recall - Precision Averages at 0.10 recall
iprec_at_recall_0.20 Interpolated Recall - Precision Averages at 0.20 recall
iprec_at_recall_0.30 Interpolated Recall - Precision Averages at 0.30 recall
iprec_at_recall_0.40 Interpolated Recall - Precision Averages at 0.40 recall
iprec_at_recall_0.50 Interpolated Recall - Precision Averages at 0.50 recall
iprec_at_recall_0.60 Interpolated Recall - Precision Averages at 0.60 recall
iprec_at_recall_0.70 Interpolated Recall - Precision Averages at 0.70 recall
iprec_at_recall_0.80 Interpolated Recall - Precision Averages at 0.80 recall
iprec_at_recall_0.90 Interpolated Recall - Precision Averages at 0.90 recall
iprec_at_recall_1.00 Interpolated Recall - Precision Averages at 1.00 recall
P_5 Precisão dos 5 primeiros documentos
P_10 Precisão dos 10 primeiros documentos
P_15 Precisão dos 15 primeiros documentos
P_20 Precisão dos 20 primeiros documentos
P_30 Precisão dos 30 primeiros documentos
P_100 Precisão dos 100 primeiros documentos
P_200 Precisão dos 200 primeiros documentos
P_500 Precisão dos 500 primeiros documentos
P_1000 Precisão dos 1000 primeiros documentos