metric.md

March 12, 2024 · View on GitHub

评估方法

构建了一些常用的metric,以适应不同的评测方式的要求。

经过后处理流程后,UltraEval需要对比模型的输出和正确答案以计算对应指标。在 metrics/中,我们定义了多种评价指标。

以prefix_match为例:

from typing import Any

class PrefixMatch:
    def __init__(self):
        pass

    def __call__(self, doc, ground_truth, results) -> Any:
        """
        计算并返回单条数据的评价指标结果。
        doc: UltraEval格式的整条数据,提供灵活的数据处理方式。
        ground_truth: 正确答案,与transform.py中的processed_output相对应,即经过后处理的答案。
        results: 模型输出,同样经过后处理。
        返回值:如果模型输出(results[0])在去除首尾空格后以正确答案开始,则返回1(即此问题答对),否则返回0(答错)。
        """
        # 比较经过处理的模型输出的起始部分是否与正确答案一致
        return 1.0 if results[0].strip().startswith(ground_truth.strip()) else 0.0