Evaluate 文档
创建和分享一个新的评估
并获得增强的文档体验
开始使用
创建和分享一个新的评估
设置
在创建新指标之前,请确保已安装所有必需的依赖项。
pip install evaluate[template]
另外,请确保你的 Hugging Face 令牌已注册,以便你可以连接到 Hugging Face Hub。
huggingface-cli login
创建
所有评估模块,无论是指标、比较还是测量,都存放在 🤗 Hub 上的一个空间 (Space) 中(例如,请参见准确率)。原则上,你可以设置一个新的 Space,并按照相同的结构添加新模块。不过,我们增加了一个命令行工具(CLI),使得创建新的评估模块变得更加容易。
evaluate-cli create "My Metric" --module_type "metric"
这将在 🤗 Hub 上创建一个新的 Space,将其克隆到本地,并用一个模板来填充它。关于如何填写模板的说明将显示在终端中,这里也对此进行了更详细的解释。
有关 Spaces 的更多信息,请参见Spaces 文档。
模块脚本
评估模块脚本(后缀为 `*.py` 的文件)是新模块的核心,包含了计算评估的所有代码。
属性
首先,在 `EvaluationModule._info()` 中添加一些关于你的评估模块的信息。你应该指定的最重要的属性是:
`EvaluationModuleInfo.description` 提供了你的评估模块的简要描述。
`EvaluationModuleInfo.citation` 包含了评估模块的 BibTex 引用。
`EvaluationModuleInfo.inputs_description` 描述了预期的输入和输出。它也可能提供评估模块的使用示例。
`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_tab"` 资源:
def _download_and_prepare(self, dl_manager):
import nltk
nltk.download("punkt_tab")
接下来,我们需要定义评估模块的计算工作方式。
计算
计算在 `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()` 时,就会使用这个方法。
Readme
当你使用 `evaluate-cli` 设置评估模块时,会自动创建 Readme 结构和说明。它应该包括指标的总体描述、其输入/输出格式信息、示例以及关于其局限性、偏见和参考文献的信息。
依赖项
如果你的评估模块有额外的依赖项(例如 `sklearn` 或 `nltk`),`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 应用。
推送到 Hub
最后,当你完成以上所有更改后,就可以将你的评估模块推送到 Hub 了。为此,请导航到你的模块文件夹,并使用 git add/commit/push 将更改推送到 Hub。
cd PATH_TO_MODULE
git add .
git commit -m "Add my new, shiny module."
git push
完成 🎉!你的评估模块现在已经在 🤗 Hub 上,并准备好供所有人使用!
< > 在 GitHub 上更新