Argilla FeedbackDataset 回答统一策略实战:用 compute_unified_responses 把多人标注聚合为训练数据
Argilla FeedbackDataset 回答统一策略实战用 compute_unified_responses 把多人标注聚合为训练数据【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argilla当你让多名标注员对同一条记录重复作答后FeedbackDataset里的每条记录会挂上多份responses这些数据不能直接喂给训练流程——必须先决定“哪一份答案代表这条记录”。本文基于 Argilla 仓库中的统一策略文档docs/_source/_common/tabs/unfication_strategies.md与其源码实现完整讲解compute_unified_responses的四种题目类型用法、各策略的可选值与判定规则并结合argilla-v1的源码和测试用例说明每种策略在底层究竟如何计算帮助你在标注后处理阶段做出可复制、可验证的聚合方案。为什么需要回答统一UnificationArgilla 支持多条记录分配给多名标注员annotation overlap以便交叉校验标注质量。此时同一条FeedbackRecord会携带多份statussubmitted的responses。仓库文档docs/_source/practical_guides/collect_responses.md在 Unifying Disagreements 一节明确当记录存在多个已提交回答时在用于训练前必须先把回答统一起来。FeedbackDataset为此内置了开箱即用的支持为每种题目类型LabelQuestion、MultiLabelQuestion、RankingQuestion、RatingQuestion、TextQuestion提供对应的*QuestionStrategy通过compute_unified_responses方法一次调用即可把多份回答聚合成unified_responses。需要特别注意从 Argilla 1.21.0 起旧方法unify_responses已被弃用应改用compute_unified_responses见docs/_source/practical_guides/collect_responses.md中的 warning 提示以及argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py中unify_responses发出的DeprecationWarning。快速上手四种题目类型的统一调用以下示例继承自原始文档docs/_source/_common/tabs/unfication_strategies.md均使用 Hugging Face 上的演示数据集argilla/stackoverflow_feedback_demo可直接复制运行。LabelQuestion单选标签题from argilla import LabelQuestionStrategy, FeedbackDataset dataset FeedbackDataset.from_huggingface( repo_idargilla/stackoverflow_feedback_demo ) strategy LabelQuestionStrategy(majority) # disagreement, majority_weighted (WIP) dataset.compute_unified_responses( questiondataset.question_by_name(title_question_fit), strategystrategy, ) dataset.records[0].unified_responses单选标签题的典型场景是标题与问题是否匹配这类二选一问题majority策略会取出现次数最多的标签作为该记录的唯一答案。MultiLabelQuestion多选标签题from argilla import MultiLabelQuestionStrategy, FeedbackDataset dataset FeedbackDataset.from_huggingface( repo_idargilla/stackoverflow_feedback_demo ) strategy MultiLabelQuestionStrategy(majority) # disagreement, majority_weighted (WIP) dataset.compute_unified_responses( questiondataset.question_by_name(tags), strategystrategy, ) dataset.records[0].unified_responses与单选题不同多选题的标签之间互相独立因此多数表决需要按标签逐个计算对每个标签单独检查是否有超过半数的标注员选中了它详见下文源码分析。RankingQuestion排序题from argilla import RankingQuestionStrategy, FeedbackDataset dataset FeedbackDataset.from_huggingface( repo_idargilla/stackoverflow_feedback_demo ) strategy RankingQuestionStrategy(majority) # mean, max, min dataset.compute_unified_responses( questiondataset.question_by_name(relevance_ranking), strategystrategy, ) dataset.records[0].unified_responsesRatingQuestion评分题from argilla import RatingQuestionStrategy, FeedbackDataset dataset FeedbackDataset.from_huggingface( repo_idargilla/stackoverflow_feedback_demo ) strategy RatingQuestionStrategy(majority) # mean, max, min dataset.compute_unified_responses( questiondataset.question_by_name(answer_quality), strategystrategy, ) dataset.records[0].unified_responses原始文档还有一条提示question和strategy也可以直接以字符串形式传入。这在argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py的UnificationMixin.compute_unified_responses约 L127-L166中可以得到印证若question是字符串会通过self.question_by_name(question)解析为对应的题目对象若strategy是字符串则根据题目类型自动实例化为对应的策略枚举若strategy为空默认回退为majority。各策略的可选值与判定规则策略全部定义在argilla-v1/src/argilla_v1/client/feedback/unification.py中都是枚举类Enum可选值如下表策略类适用题目可选值未实现/说明LabelQuestionStrategyLabelQuestionmajority、disagreement、majority_weightedmajority_weighted当前抛NotImplementedError属 WIPMultiLabelQuestionStrategyMultiLabelQuestionmajority、disagreement、majority_weightedmajority_weighted同上WIPRatingQuestionStrategyRatingQuestionmean、majority、max、min四种均已实现RankingQuestionStrategyRankingQuestionmajority、mean、max、min四种均已实现TextQuestionStrategyTextQuestiondisagreement文本题只保留原始分歧不做数值聚合文档docs/_source/practical_guides/collect_responses.md的 Strategies 小节对这些策略给出了选择建议标签类单/多选多数表决至少 3 份已提交回答平票时随机选一个加权多数表决为标注员打 0~1 分后加权求和适合专家标注员训练时保留分歧适合情感分析等主观任务避免稀释少数意见。数值类排序/评分多数表决、加权多数、均值mean、最低/最高分min/max视题目措辞而定。文本题由于文本天然是唯一且主观的官方不建议直接度量分歧推荐的做法包括让团队对文本二次评分/排序、按标注员可信度筛选、或其他问题的答案作为质量信号disagreement策略本质上就是保留每个人的回答。源码级解析每种策略到底怎么算以下分析基于argilla-v1/src/argilla_v1/client/feedback/unification.py的实际实现。通用规则所有策略的计算前都会先过滤出status submitted的回答——被丢弃discarded的回答不参与聚合。计算结果写入FeedbackRecord._unified_responses私有属性声明见argilla-v1/src/argilla_v1/client/feedback/schemas/records.py约 L88通过只读属性record.unified_responses对外暴露约 L100-L103。每条聚合结果都是一个UnifiedValueSchema(value..., strategy...)即统一值 产生它的策略名成对记录方便后续追溯。LabelQuestionStrategyCounter 计数 随机平票_majority约 L472-L508用collections.Counter统计所有已提交回答的标签取值取计数最大者若多个标签并列最多则用random.choice随机选一个。这与文档描述平票时随机打破一致。_disagreementLabelQuestionStrategyMixin中约 L422-L452不做任何折叠把每个已提交回答的原值逐一追加进_unified_responses[question]即一条记录最终保留 N 个统一值。MultiLabelQuestionStrategy逐标签过半数判定多选题的_majority约 L527-L566逻辑明显不同先对所有回答中出现过的每个标签分别计数再计算阈值majority int(len(responses) // 2) 1只有计数达到该阈值的标签才进入最终标签集合——也就是文档所说的对每个标签单独检查是否有多数标注员选中。若没有任何标签过半测试用例test_multi_label_question_strategy_without_overlap即此场景则从候选标签中随机取一个作为兜底这一点在 测试文件 中得到了验证。RatingQuestionStrategymean/majority/max/min评分题的_aggregate约 L106-L145把每个已提交回答的评分转为int后求和/求最值注意mean分支实现为str(int(sum(ratings) / len(ratings)))即均值会直接截断为整数而非四舍五入且统一值以字符串形式存储例如2。_majority约 L147-L169则直接对原始字符串取值做 Counter 统计同样有随机平票逻辑。RankingQuestionStrategy三种不同的聚合语义排序题的实现约 L204-L375是四种策略中最复杂的mean_mean约 L277-L324对每个选项累计所有回答中它被排到第几名的总和与出现次数算出平均名次round四舍五入再按平均名次升序重建最终排序列表max/min_aggregate中经 pandas 处理约 L239-L275把所有已提交回答中每个选项的名次放进 DataFramemax取最大名次对应的那一整份排序min取最小名次对应的那一整份——语义上等价于采用最悲观/最乐观的那一位标注员的完整排序majority_majority约 L326-L375把每份回答的(rank, value)完整顺序打包成元组后做 Counter 计数即只有当整份排序完全一致时才视为相同回答取出现次数最多的那份排序平票时随机。这种整序投票的语义值得注意两名标注员即使前两名相同、仅后两名互换也会被计为两份不同回答。结果结构与测试佐证聚合结果的期望形态可以直接从集成测试 test_unification.py 中读出例如评分题mean[{value: str(int(5/3)), strategy: mean}]验证了整除截断行为排序题mean[{value: [{rank: 2, value: yes}, {rank: 2, value: no}], strategy: mean}]验证了按平均名次重建排序标签题disagreement保留[{value: 1, ...}, {value: 2, ...}, {value: 2, ...}]三份原值验证了不折叠语义majority_weighted调用_majority_weighted会抛出NotImplementedError测试test_label_question_strategy_not_implemented确认其仍为 WIP 状态。与指标计算的联动统一回答不仅是训练前的清洗步骤也是指标计算的输入。FeedbackDataset的compute_model_metricsargilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py中MetricsMixin约 L43-L82支持传入strategy参数一旦提供策略会先调用compute_unified_responses(question_name, strategy)再走UnifiedModelMetric计算模型建议 vs 统一后标注的整体指标而不是按单个标注员分别计算不提供策略时则返回按user_id分组的ModelMetric结果。对应的指标支持矩阵来自docs/_source/practical_guides/collect_responses.md统一回答路径支持LabelQuestion、MultiLabelQuestion、RatingQuestion的 accuracy/precision/recall/f1-score/confusion-matrix 等以及RankingQuestion的 ndcg-scoreTextQuestion不参与统一路径。此外get_unified_responses_and_suggestionsargilla-v1/src/argilla_v1/client/feedback/metrics/utils.py约 L119 起会在读取record.unified_responses为空时抛出提示——Please unify the responses first这也是一个实用的自检信号。实操注意事项小结只统计submitted回答所有策略底层都会过滤非 submitted 状态的回答无需手动处理但做手工分析画图时记得自行过滤文档中也以 note 强调了这一点。字符串与枚举等价compute_unified_responses的question、strategy两个参数既可传对象/枚举也可传字符串混用不会出错strategy缺省为majority。majority_weighted尚未落地文档注释里已标注 WIP当前调用会直接抛NotImplementedError需要加权表决时应自行实现标注员打分 × 回答的加权逻辑。随机平票意味着结果不可完全复现标签/评分/排序的 majority 平票分支都使用random.choice同一数据集多次运行可能得到不同但同样合理的统一结果如需严格复现建议固定随机种子或改用mean/max/min等确定性策略。统一结果是本地内存态_unified_responses是FeedbackRecord的私有属性统一后的数据若要落盘应使用文档 Export a Feedback Datasetdocs/_source/practical_guides/export_dataset.md所述的导出方式保存供后续微调流程使用。参考资料仓库内路径统一策略示例文档unfication_strategies.md回答收集与统一指南collect_responses.md策略实现源码unification.py数据集侧方法入口dataset/mixins.py记录数据结构schemas/records.py集成测试用例test_unification.py【免费下载链接】argillaArgilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets项目地址: https://gitcode.com/GitHub_Trending/ar/argilla创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenClaw 跑 CSDN 发布任务,Key 走 TaoToken 行不行

OpenClaw 跑 CSDN 发布任务,Key 走 TaoToken 行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 23:37:19 阅读更多 →
编写 Redux 自定义中间件:从标准模式到源码级兼容性实践

编写 Redux 自定义中间件:从标准模式到源码级兼容性实践

编写 Redux 自定义中间件:从标准模式到源码级兼容性实践 【免费下载链接】redux A JS library for predictable global state management 项目地址: https://gitcode.com/gh_mirrors/re/redux 导读:中间件(Middleware)是 Re…

2026/9/18 23:37:19 阅读更多 →
PTO 基础 Topk 算子实战解析:基于 TSORT32 与 TMRGSORT 的 A2/A3 排序实现

PTO 基础 Topk 算子实战解析:基于 TSORT32 与 TMRGSORT 的 A2/A3 排序实现

PTO 基础 Topk 算子实战解析:基于 TSORT32 与 TMRGSORT 的 A2/A3 排序实现 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository off…

2026/9/18 23:37:19 阅读更多 →

最新新闻

AR-NAR混合Transformer架构:YuE模型原理与Python实战

AR-NAR混合Transformer架构:YuE模型原理与Python实战

1. 项目概述:从“YuE”到AR–NAR MoT——一个被热搜掩盖的前沿生成模型架构最近在Hugging Face社区和Python技术圈里,“YuE”这个词频繁出现在各类讨论帖、模型下载页和代码仓库的README里,甚至衍生出“YuE2”这样的迭代代号。但如果你直接搜…

2026/9/19 0:18:44 阅读更多 →
信息系统运维服务方案标书:从评分表倒推与SLA量化落地

信息系统运维服务方案标书:从评分表倒推与SLA量化落地

简介:这是一份面向企业信息化负责人、运维服务商投标人员及IT运维从业者的信息系统运维服务方案标书范本,可用于投标文件编制、运维体系搭建与内部管理制度参考。压缩包共1个文件,为doc格式文档,整体约1.97MB,内容以章…

2026/9/19 0:18:44 阅读更多 →
CANN opbase 中 aclnnFinalize 接口详解:单算子 API 执行框架的资源去初始化与进程安全退出

CANN opbase 中 aclnnFinalize 接口详解:单算子 API 执行框架的资源去初始化与进程安全退出

CANN opbase 中 aclnnFinalize 接口详解:单算子 API 执行框架的资源去初始化与进程安全退出 【免费下载链接】opbase 本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。 项目地址: https://gitcode.com/cann/opbase aclnnF…

2026/9/19 0:18:44 阅读更多 →
react-hook-form 实战指南:基于 React Hooks 的高性能表单状态管理与校验

react-hook-form 实战指南:基于 React Hooks 的高性能表单状态管理与校验

react-hook-form 实战指南:基于 React Hooks 的高性能表单状态管理与校验 【免费下载链接】react-hook-form 📋 React Hooks for form state management and validation (Web React Native) 项目地址: https://gitcode.com/gh_mirrors/re/react-hook-…

2026/9/19 0:18:44 阅读更多 →
5G NSA接入信令流程详解:从LTE锚定到SgNB添加的排障指南

5G NSA接入信令流程详解:从LTE锚定到SgNB添加的排障指南

简介:面向5G网络优化、测试及通信工程技术人员,《5G信令流程详解——5G NSA接入信令流程改进篇》是一份聚焦NSA非独立组网接入全流程的文档资料。内容从NSA双连接架构切入,系统讲解基于EPC的LTE-NR双连接原理、SgNB辅站添加完整流程、初始Att…

2026/9/19 0:18:44 阅读更多 →
YOLOv11岩石裂隙检测与三维地质建模联合优化实战

YOLOv11岩石裂隙检测与三维地质建模联合优化实战

简介:这是一份面向地质勘探、目标检测和三维建模领域从业者与研究人员的技术方案文档,聚焦YOLOv11在岩石裂隙检测与三维地质建模联合优化中的实践方法。文档从YOLO系列算法演进入手,详细剖析YOLOv11的网络结构、训练流程与检测机制&#xff0…

2026/9/19 0:17:44 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →