评估文档

创建和分享新的评估

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

创建和分享新的评估

安装

在您创建新的指标之前,请确保已安装所有必要的依赖项

pip install evaluate[template]

还要确保您的 Hugging Face 令牌已注册,以便您可以连接到 Hugging Face Hub

huggingface-cli login

创建

所有评估模块,无论是指标、比较还是测量,都位于 🤗 Hub 上的一个 空间 中(例如,参见 准确率)。原则上,您可以设置一个新的空间,并按照相同的结构添加一个新的模块。但是,我们添加了一个 CLI,使创建新的评估模块变得更加容易

evaluate-cli create "My Metric" --module_type "metric"

这将在 🤗 Hub 上创建一个新的空间,在本地克隆它,并使用模板填充它。有关如何填充模板的说明将在终端中显示,但此处也将更详细地进行说明。

有关空间的更多信息,请参阅 空间文档

模块脚本

评估模块脚本(后缀为 *.py 的文件)是新模块的核心,其中包含用于计算评估的所有代码。

属性

首先,在 EvaluationModule._info() 中添加有关您的评估模块的一些信息。您应该指定的最重要的属性是

  1. EvaluationModuleInfo.description 提供有关您的评估模块的简要描述。

  2. EvaluationModuleInfo.citation 包含评估模块的 BibTex 引用。

  3. EvaluationModuleInfo.inputs_description 描述预期的输入和输出。它还可以提供评估模块的示例用法。

  4. EvaluationModuleInfo.features 定义预测和参考的名称和类型。这必须是单个 datasets.Features 对象,或者如果允许多种输入类型,则为 datasets.Features 对象列表。

然后,我们可以继续在实际计算之前准备一切。

下载

一些评估模块需要一些外部数据,例如需要资源的 NLTK 或需要检查点的 BLEURT 指标。您可以在 EvaluationModule._download_and_prepare() 中实现这些下载,该方法通过 dlmanager 下载和缓存资源。有关 BLEURT 如何下载和加载检查点的简化示例

def _download_and_prepare(self, dl_manager):
    model_path = dl_manager.download_and_extract(CHECKPOINT_URLS[self.config_name])
    self.scorer = score.BleurtScorer(os.path.join(model_path, self.config_name))

或者,如果您需要下载 NLTK "punkt" 资源

def _download_and_prepare(self, dl_manager):
    import nltk
    nltk.download("punkt")

接下来,我们需要定义评估模块的计算方式。

计算

计算在 EvaluationModule._compute() 方法中执行。它接受与 EvaluationModuleInfo.features 相同的参数,然后应将结果作为字典返回。以下是一个精确匹配度量的示例

def _compute(self, references, predictions):
    em = sum([r==p for r, p in zip(references, predictions)])/len(references)
    return {"exact_match": em}

此方法在您稍后调用 .compute() 时使用。

自述文件

当您使用 evalute-cli 设置评估模块时,自述文件结构和说明会自动创建。它应该包括度量的总体描述、有关其输入/输出格式的信息、示例以及有关其局限性或偏差和参考的信息。

需求

如果您的评估模块有其他依赖项(例如 sklearnnltk),则 requirements.txt 文件是放置它们的位置。该文件遵循 pip 格式,您可以在其中列出所有依赖项。

应用

app.py 是 Spaces 小部件所在的位置。通常,它看起来像下面这样,不需要任何更改

import evaluate
from evaluate.utils import launch_gradio_widget


module = evaluate.load("lvwerra/element_count")
launch_gradio_widget(module)

如果您想要自定义小部件,可以在此处添加您的 gradio 应用。

推送到中心

最后,当您完成所有上述更改后,就该将您的评估模块推送到中心了。为此,请导航到您的模块的文件夹,并将更改添加到中心进行 git add/commit/push

cd PATH_TO_MODULE
git add .
git commit -m "Add my new, shiny module."
git push

大功告成🎉!您的评估模块现在已在 🤗 Hub 上,可以供所有人使用!