trec_eval:iprec_at_recall 保持不变是否意味着有问题?

trec_eval: does iprec_at_recall staying constant mean something is wrong?

我对 trec_eval 完全陌生。当我 运行 它用于一组查询时,我得到以下 iprec_at_recall 的结果:

iprec_at_recall_0.00    all     0.5059
iprec_at_recall_0.10    all     0.5059
iprec_at_recall_0.20    all     0.5059
iprec_at_recall_0.30    all     0.5059
iprec_at_recall_0.40    all     0.5059
iprec_at_recall_0.50    all     0.5059
iprec_at_recall_0.60    all     0.5059
iprec_at_recall_0.70    all     0.5059
iprec_at_recall_0.80    all     0.5059
iprec_at_recall_0.90    all     0.5059
iprec_at_recall_1.00    all     0.5059

所以我的精确度不会随着召回阈值的变化而变化。这是否一定意味着我的数据有问题?

iprec_at_recall_X 是标准召回级别 X 的插值精度度量。在 trec_eval 中用于在标准召回级别 X 插值精度的特定规则是使用为查询获得的最大精度对于大于或等于 X 的任何实际召回水平(这就是召回水平 0 的精度值的原因)。您可以在(部分)TREC 程序的附录中阅读更多关于 trec_eval 如何计算度量的信息,例如,请参阅 https://trec.nist.gov/pubs/trec20/appendices/measures.pdf .

因此,我的猜测是您使用的是一个非常小的集合(或者至少是相关文档很少的集合),因此您在排名列表中很早就达到了 100% 的召回率。

艾伦·沃希斯

TREC 项目经理

NIST