ITADN
Toloka/crowd-kit
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Crowd-Kit:众包的计算质量控制

Crowd-Kit

PyPI Version GitHub Tests Codecov Documentation Paper

Crowd-Kit 是一个功能强大的 Python 库,实现了众包标注中常用的聚合方法,并提供了相关的指标和数据集。我们致力于实现简化众包数据处理的各项功能。

目前,Crowd-Kit 包含:

  • 针对分类、成对、文本和分割响应的常用聚合方法的实现;
  • 不确定性、一致性与聚合结果一致性的指标;
  • 流行众包数据集的加载器。

此外,learning 子包包含众包深度学习的 PyTorch 实现以及高级聚合算法。

安装

要安装 Crowd-Kit,请运行以下命令:pip install crowd-kit。如果您还想使用 learning 子包,请输入 pip install crowd-kit[learning]

如果您有兴趣为 Crowd-Kit 做出贡献,请使用 uv 来管理依赖项:

uv venv
uv pip install -e '.[dev,docs,learning]'
uv tool run pre-commit install

我们使用 pytest 进行测试,并使用多种 linter,包括 pre-commitBlackisortFlake8pyupgradenbQA,以简化代码维护。

入门

本示例展示了如何使用 Crowd-Kit 通过经典的 Dawid-Skene 算法进行类别聚合。

首先,让我们完成所有必要的导入。

from crowdkit.aggregation import DawidSkene
from crowdkit.datasets import load_dataset

import pandas as pd

然后,你需要将你的注释读取到具有列 taskworkerlabel 的 Pandas DataFrame 中。或者,你可以下载一个示例数据集:

df = pd.read_csv('results.csv')  # should contain columns: task, worker, label
# df, ground_truth = load_dataset('relevance-2')  # or download an example dataset

然后,您可以使用 scikit-learn 库中的 fit_predict 方法来聚合工作节点的响应:

aggregated_labels = DawidSkene(n_iter=100).fit_predict(df)

更多使用示例

已实现的聚合方法

以下是当前已实现方法的列表,包括已可用(✅)和进行中(🟡)的方法。

类别型响应

方法状态
多数投票
单硬币 Dawid-Skene
Dawid-Skene
黄金多数投票
M-MSR
Wawa
零基技能
GLAD
KOS
MACE

多标签响应

方法状态
二元相关性

文本型响应

方法状态
RASA
HRRASA
ROVER

图像分割

方法状态
分割 MV
分割 RASA
分割 EM

成对比较

方法状态
Bradley-Terry
含噪 Bradley-Terry

[!TIP] 考虑使用更现代的 Evalica 库来聚合成对比较。

从众包中学习

方法状态
CrowdLayer
CoNAL

引用

@article{CrowdKit,
  author    = {Ustalov, Dmitry and Pavlichenko, Nikita and Tseitlin, Boris},
  title     = {{Learning from Crowds with Crowd-Kit}},
  year      = {2024},
  journal   = {Journal of Open Source Software},
  volume    = {9},
  number    = {96},
  pages     = {6227},
  publisher = {The Open Journal},
  doi       = {10.21105/joss.06227},
  issn      = {2475-9066},
  eprint    = {2109.08584},
  eprinttype = {arxiv},
  eprintclass = {cs.HC},
  language  = {english},
}

支持与贡献

请使用 GitHub Issues 寻求支持并提交功能请求。我们接受通过 GitHub 对 Crowd-Kit 的贡献,具体请遵循 CONTRIBUTING.md 中的指南。

许可证

© Crowd-Kit 团队作者,2020–2025。基于 Apache License, Version 2.0 授权。更多详情请参阅 LICENSE 文件。