Potato 是面向 NLP 研究的开源文本标注工具,支持命名实体的片段标签、文档分类、关系和共指,每个条目可分配多名标注者,并在研究进行中测量一致性。Potato 用 pip 安装,运行在你自己的电脑或服务器上,可导出 CoNLL、JSONL 或 Hugging Face 数据集。
Potato 出自密歇根大学的 NLP 研究,文本也是 Potato 支持时间最长的数据类型。它的设计取舍来自研究团队实际的标注方式:一个任务就是一份配置文件,可以和论文一起放进版本控制;多名标注者可以标注同一批条目,从而测量一致性;数据始终留在你能控制的机器上。Potato 2.0 发表于 ACL 2026,最初的版本发表于 EMNLP 2022。
Potato 中的 NLP 任务
每一行是 Potato 自带的一种标注类型,链接页面列出了它的选项。
在一个任务中同时标注实体和文档标签
一个任务可以就同一段文本提出多个问题。下面的配置要求标注者标出实体,并给整篇文档一个情感标签;每个条目分配两名标注者,以便测量他们的一致性。
annotation_task_name: "News entities and sentiment"
task_dir: "."
data_files:
- data/articles.jsonl
item_properties:
id_key: id
text_key: text
output_annotation_dir: annotation_output/
user_config:
allow_all_users: true
num_annotators_per_item: 2
agreement_metrics:
enabled: true
min_overlap: 2
annotation_schemes:
- annotation_type: span
name: entities
description: "Highlight every person, organization and location"
labels: [PERSON, ORGANIZATION, LOCATION]
- annotation_type: radio
name: sentiment
description: "What is the overall sentiment of the article?"
labels: [positive, neutral, negative]
label_requirement:
required: true条目有了两份标注之后,agreement_metrics 会在管理仪表板上按方案报告 Krippendorff's alpha。每个条目都加第二名标注者会让成本翻倍,常见的折中做法是从中抽取几百个条目分配两名标注者,其余条目只分配一名。你需要多少位标注者?详细分析了这一权衡。
导入数据与导出标签
数据文件可以是 JSON、JSONL、CSV 或 TSV,每行一个条目。已有项目可以用 potato import 迁移过来,它读取 Label Studio、Argilla、brat、doccano、Prodigy、CoNLL-2003、CoNLL-U 和 TEI 的导出文件,并生成一个已声明好标注方案、可直接运行的项目。
标签以 NLP 训练代码能读取的格式导出。conll_2003 和 conll_u 导出器写出词元级标签,jsonl 保留完整的答案结构,parquet 适合大型数据集,huggingface 则把数据集推送到 Hub。导出标注数据用于机器学习演示了如何加载每种格式用于训练。
与 Label Studio、Prodigy、INCEpTION 和 doccano 的分工
这些工具各自围绕不同的使用场景构建。Prodigy 是一款付费、可编写脚本的工具,围绕单个标注者在模型辅助下快速标注而设计。INCEpTION 做多层文本标注,并支持知识库链接。Label Studio 在一个界面里覆盖多种数据类型,doccano 是一款面向分类和序列标注的小型开源工具。Potato 围绕研究项目构建:每个条目分配多名标注者,标注过程中随时测量一致性,提供注意力检查条目和黄金标准题等质量检查,并用一份配置文件复现整个任务。文本标注工具对比逐项比较了它们的差异。
常见问题
Potato 是开源、可自托管的文本标注工具吗?
是的。Potato 以 GPL-3.0 许可证发布,用 pip install potato-annotation 安装,运行在你自己的电脑或服务器上。标注结果写入你自己的磁盘,位于配置中指定的输出目录下;除非你配置了会向外发送数据的 AI 端点,否则不会向任何第三方发送数据。
如何测量 NER 标注的标注者间一致性?
用 num_annotators_per_item 给每个条目至少分配两名标注者,并开启 agreement_metrics,它会在管理仪表板上按方案报告 Krippendorff's alpha。片段标注有其特有的复杂情况,例如部分重叠和无法匹配的片段,片段的一致性对此做了解释;片段与边界框一致性计算器可以在浏览器中根据导出文件计算片段级一致性。
能否让模型先预标注文本,标注者只做修正?
可以。启用 ai_support 后,模型会提出标签或高亮可能的选项,标注者逐条确认或修正,只有经过核实的标签才会成为数据。Potato 可以连接 OpenAI、Anthropic、Gemini 和 Hugging Face 端点;如果文本不能离开你的网络,也可以通过 Ollama 或 vLLM 连接本地模型。LLM 预标注介绍了具体设置。
片段标签以什么格式导出?
片段标签可以导出为 CoNLL-2003 或 CoNLL-U 词元标签、带字符偏移量的 JSONL、Parquet,或 Hugging Face 数据集。导出格式列出了 Potato 支持写出的全部 60 种格式。