def make_eval_dict(exact_scores, f1_scores, pos_scores, qid_list=None):
    r"""
    Make the dictionary to show the evaluation results.
    """
    if qid_list is None:
        total = len(exact_scores)
        return collections.OrderedDict([
            ('exact', 100.0 * sum(exact_scores.values()) / total),
            ('f1', 100.0 * sum(f1_scores.values()) / total),
            ('pos', 100.0 * sum(pos_scores.values()) / total),
            ('total', total),
        ])
    else:
        total = len(qid_list)
        if total == 0:
            return collections.OrderedDict([
                ('exact', 0),
                ('f1', 0),
                ('pos', 0),
                ('total', 0),
            ])
        return collections.OrderedDict([
            ('exact', 100.0 * sum(exact_scores[k] for k in qid_list) / total),
            ('f1', 100.0 * sum(f1_scores[k] for k in qid_list) / total),
            ('pos', 100.0 * sum(pos_scores[k] for k in qid_list) / total),
            ('total', total),
        ])

    Make the dictionary to show the evaluation results.
    
xdoc/fine_tuning/websrc/trainer.py