crowd-kit
Python 众包标注质量控制库,20+ 聚合算法一键推断真实标签
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 众包标注质量控制库,20+ 聚合算法一键推断真实标签
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Crowd-Kit 项目 Logo想象一下这个场景:你的团队需要在三个月内完成 50 万张图片的情感分类标注。雇 10 个全职标注员?人手不够。雇 500 个兼职众包工人?他们水平参差不齐,有人认真,有人敷衍,有人瞎猜。
这正是众包(Crowdsourcing)面临的根本挑战——工人的标注质量天然不一致。传统做法是让多人标注同一张图,然后「少数服从多数」做投票(Majority Vote),但这忽略了工人的真实能力差异:一个认真负责的老手,理应比一个随机乱点的兼职者有更高权重。
Toloka 团队在运营大规模众包平台的过程中,积累了大量真实标注数据和方法论。Crowd-Kit 正是这些实战经验的代码结晶——一个专门用于众包标注质量控制的 Python 工具库,把学术圈数十年的「众包真值推理」(Ground Truth Inference)算法变成了随手可用的 API。
图2:Crowd-Kit 文档页面
Crowd-Kit 的核心价值可以用一句话概括:把一群人的标注输入进去,输出一份高质量的「黄金标注」(Gold Labels)。这个过程在学术上叫「聚合」(Aggregation),Crowd-Kit 实现了超过 20 种聚合算法,覆盖以下任务类型:
这是最基础也是最常用的场景。例如判断一条评论是「正面」还是「负面」,或者标注一张图片中是否存在某物体。Crowd-Kit 提供了多种算法:
当标注内容是文本而非固定类别时(如「这段文字的主要观点是什么?」),Crowd-Kit 提供了 ROVER、TextRASA、TextHRRASA 等算法,基于词对齐和嵌入相似度进行聚合。
标注人员对同一张图片的不同区域进行像素级标注时(如标出图片中的建筑物范围),SegmentationEM、SegmentationRASA 等算法能有效融合多人的像素级判断。
当标注是「A vs B 哪个更好」这类二选一时,Bradley-Terry 和 Noisy Bradley-Terry 模型可以推导出每个选项的真实排名。
一个样本可能同时属于多个类别(如一张图片「既有猫又有狗」),Binary Relevance 方法专门处理这种场景。
传统聚合算法只依赖标注结果本身,但 Crowd-Kit 的 RASA / HRRASA 算法引入了嵌入向量(Embeddings)。它不仅看工人标注了什么,还看工人对不同样本的标注「在语义空间中是否一致」——如果一个工人在语义相似样本上给出了矛盾标注,这个工人的权重就会降低。这是传统 Majority Vote 完全无法发现的信息。
crowdkit.learning 子包提供了三个 PyTorch 实现的高级算法:
除了聚合算法,Crowd-Kit 还内置了常用众包数据集加载器(Datasets Loader),可以直接加载真实研究数据,避免了「有了工具却找不到数据练手」的尴尬。
作为一家商业公司的开源项目,Crowd-Kit 的工程标准相当扎实:
安装只需要一行命令:
pip install crowd-kit
如果需要深度学习模块,加上 [learning]:
pip install crowd-kit[learning]
使用流程极为简洁。假设你的标注数据是 CSV 文件,有三列:task(任务ID)、worker(工人ID)、label(标注结果),那么调用经典的 Dawid-Skene 只需要:
from crowdkit.aggregation import DawidSkene
import pandas as pd
df = pd.read_csv('annotations.csv')
result = DawidSkene().fit_predict(df)
print(result) # 输出每个任务的真实标签
就这么简单——无需了解 EM 算法的数学推导,直接调用就能用。
项目还提供了 6 个 Jupyter Notebook 示例,覆盖分类、文本、成对比较、图像分割等常见场景。
作为一个纯 Python 库,Crowd-Kit 最大的局限是没有提供 Docker 镜像或 Web 界面。它需要用户有 Python 编程能力,适合已经搭建好数据处理流水线的团队,而非希望「点几个按钮就出结果」的非技术人员。如果你需要可视化界面来管理标注任务和查看聚合结果,需要配合 Toloka 平台(商业 SaaS)一起使用。
在 Crowd-Kit 出现之前,学术圈做众包研究主要使用 R 语言的 crowdMC 包或者 MATLAB 工具箱,工业界则依赖商业平台的闭源方案。Crowd-Kit 第一次在 Python 生态中提供了完整、可用、生产级的众包质量控制工具链,让数据科学家无需切换技术栈就能处理众包数据。
作为一个已有 JOSS 论文引用、超过 20 种算法实现、覆盖 5 大任务类型的成熟项目,Crowd-Kit 代表了「学术成果工程化」的一个优秀范例——不是论文里跑一跑就算完,而是真正做成别人能在 pip install 之后立刻用起来的产品。