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
我对 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