Spaces:
Runtime error
Runtime error
| /* | |
| Copyright (c) 2008 - Chris Buckley. | |
| Permission is granted for use and modification of this file for | |
| research, non-commercial purposes. | |
| */ | |
| static int | |
| te_calc_num_rel (const EPI *epi, const REL_INFO *rel_info, | |
| const RESULTS *results, const TREC_MEAS *tm, TREC_EVAL *eval); | |
| static int | |
| te_calc_avg_num_rel (const EPI *epi, const TREC_MEAS *tm, | |
| const ALL_REL_INFO *all_rel_info, TREC_EVAL *accum_eval); | |
| /* See trec_eval.h for definition of TREC_MEAS */ | |
| TREC_MEAS te_meas_num_rel = | |
| {"num_rel", | |
| " Number of relevant documents for topic. \n\ | |
| May be affected by Judged_docs_only and Max_retrieved_per_topic command\n\ | |
| line parameters (as are most measures).\n\ | |
| Summary figure is sum of individual topics, not average.\n", | |
| te_init_meas_s_long, | |
| te_calc_num_rel, | |
| te_acc_meas_s, | |
| te_calc_avg_num_rel, | |
| te_print_single_meas_s_long, | |
| te_print_final_meas_s_long, | |
| NULL, -1}; | |
| static int | |
| te_calc_num_rel (const EPI *epi, const REL_INFO *rel_info, | |
| const RESULTS *results, const TREC_MEAS *tm, TREC_EVAL *eval) | |
| { | |
| RES_RELS res_rels; | |
| if (UNDEF == te_form_res_rels (epi, rel_info, results, &res_rels)) | |
| return (UNDEF); | |
| eval->values[tm->eval_index].value = (double) res_rels.num_rel; | |
| return (1); | |
| } | |
| /* Need custom calc_avg because of -c flag (epi->average_comple_flag). | |
| Have to go back to original qrels info to get num_qrels in all topics (not | |
| just those with retrieved docs) */ | |
| static int | |
| te_calc_avg_num_rel (const EPI *epi, const TREC_MEAS *tm, | |
| const ALL_REL_INFO *all_rel_info, TREC_EVAL *accum_eval) | |
| { | |
| long i,j,k; | |
| long num_rel; | |
| if (! epi->average_complete_flag) | |
| return (1); | |
| num_rel = 0; | |
| for (i = 0; i < all_rel_info->num_q_rels; i++) { | |
| if (0 == strcmp ("qrels", all_rel_info->rel_info[i].rel_format)) { | |
| TEXT_QRELS_INFO *trec_qrels; | |
| trec_qrels = (TEXT_QRELS_INFO *) all_rel_info->rel_info[i].q_rel_info; | |
| for (j = 0; j < trec_qrels->num_text_qrels; j++) { | |
| if (trec_qrels->text_qrels[j].rel > 0) | |
| num_rel++; | |
| } | |
| } | |
| else if (0 == strcmp ("qrels_jg", all_rel_info->rel_info[i].rel_format)) { | |
| TEXT_QRELS_JG_INFO *trec_qrels; | |
| trec_qrels = (TEXT_QRELS_JG_INFO *) all_rel_info->rel_info[i].q_rel_info; | |
| for (j = 0; j < trec_qrels->num_text_qrels_jg; j++) { | |
| for (k = 0; k < trec_qrels->text_qrels_jg[j].num_text_qrels; k++) { | |
| if (trec_qrels->text_qrels_jg[j].text_qrels[k].rel > 0) | |
| num_rel++; | |
| } | |
| } | |
| } | |
| else { | |
| fprintf (stderr, "trec_eval: m_num_rel: rel_info format not qrels or qrels_jg\n"); | |
| return (UNDEF); | |
| } | |
| } | |
| accum_eval->values[tm->eval_index].value = num_rel; | |
| return (1); | |
| } | |