Prodigy-HF 介绍
Prodigy 是由 Explosion 公司开发的一款标注工具,该公司也因其创建的 spaCy 而闻名。它是一款完全可脚本化的产品,并拥有一个庞大的社区。该产品功能丰富,包括与 spaCy 的紧密集成和主动学习能力。但其主要特点是可以通过 Python 进行编程定制。
为了促进这种可定制性,Explosion 已经开始发布插件。这些插件以开放的方式与第三方工具集成,鼓励用户开发定制化的标注工作流。其中,一项定制功能尤其值得特别庆祝。上周,Explosion 推出了 Prodigy-HF,它提供了一些代码配方(recipes),可以直接与 Hugging Face 技术栈集成。这是 Prodigy 支持论坛上用户一直强烈要求的功能,所以我们非常高兴它能面世。
功能特性
第一个主要功能是,该插件允许您在已标注的数据上训练和复用 Hugging Face 模型。这意味着,如果您一直在我们的界面中为命名实体识别(NER)任务标注数据,您可以直接用这些数据来微调 BERT 模型。

安装插件后,您可以从命令行调用 hf.train.ner
配方,直接在您自己的数据上训练一个 Transformer 模型。
python -m prodigy hf.train.ner fashion-train,eval:fashion-eval path/to/model-out --model "distilbert-base-uncased"
这将在您存储于 Prodigy 的数据集上微调 distilbert-base-uncased
模型,并将其保存到磁盘。同样地,该插件也通过一个非常相似的接口支持文本分类模型。
python -m prodigy hf.train.textcat fashion-train,eval:fashion-eval path/to/model-out --model "distilbert-base-uncased"
这提供了很大的灵活性,因为该工具直接与 Hugging Face transformers 的 AutoTokenizer
和 AutoModel
类集成。Hub 上的任何 Transformer 模型都可以通过一条命令在您自己的数据集上进行微调。这些模型将被序列化并保存在磁盘上,这意味着您可以将它们上传到 Hugging Face Hub,或者复用它们来帮助您标注数据。这可以节省大量时间,尤其是对于 NER 任务。要复用一个训练好的 NER 模型,您可以使用 hf.correct.ner
配方。
python -m prodigy hf.correct.ner fashion-train path/to/model-out examples.jsonl
这将为您提供一个与之前类似的界面,但现在模型的预测结果也会显示在界面中。
上传
第二个同样令人兴奋的功能是,您现在也可以将标注好的数据集发布到 Hugging Face Hub 上。如果您有兴趣分享其他人可能想使用的数据集,这将非常有用。
python -m prodigy hf.upload <dataset_name> <username>/<repo_name>
我们特别喜欢这个上传功能,因为它鼓励协作。人们可以独立地标注自己的数据集,但在与更广泛的社区共享数据时仍然可以从中受益。
未来展望
我们希望这种与 Hugging Face 生态系统的直接集成能让更多用户进行更多的实验。Hugging Face Hub 为各种任务和多种语言提供了众多模型。我们真诚地希望,这种集成能使数据标注变得更加容易,即使您的用例更具领域特定性和实验性。
这个库的更多功能正在开发中,如果您有更多问题,欢迎在 Prodigy 论坛上与我们联系。
我们还要感谢 Hugging Face 团队对这个插件的反馈,特别是 @davanstrien,他建议添加上传功能。谢谢!