DoTAT迭代标注(Epoch)机制揭秘:复用已有标注,多轮标注不再从零开始

📅 2026/8/25 10:01:18
DoTAT迭代标注(Epoch)机制揭秘:复用已有标注,多轮标注不再从零开始
DoTAT迭代标注Epoch机制揭秘复用已有标注多轮标注不再从零开始【免费下载链接】MarkToolDoTAT 是一款基于web、面向领域的通用文本标注工具支持大规模实体标注、关系标注、事件标注、文本分类、基于字典匹配和正则匹配的自动标注以及用于实现归一化的标准名标注同时也支持迭代标注、嵌套实体标注和嵌套事件标注。标注规范可自定义且同类型任务中可“一次创建多次复用”。通过分级实体集合扩大了实体类型的规模并设计了全新高效的标注方式提升了用户体验和标注效率。此外本工具增加了审核环节可对多人的标注结果进行一致性检验、自动合并和手动调整提高了标注结果的准确率。项目地址: https://gitcode.com/gh_mirrors/ma/MarkToolDoTAT 是一款基于 Web 的领域通用文本标注工具支持大规模实体标注、关系标注、事件标注和文本分类。它的Epoch轮次机制正是为「迭代标注」而设计每一轮标注都会被分配成一个独立的 Epoch第二轮开始时可以直接复用上一轮已有的标注结果标注员只需要做修正和增补而不是从零开始。今天我们就来完整拆解这套机制的前后端实现。一、Epoch 是什么把多轮标注切成「轮次」在传统标注流程中同一个文档往往要经历多轮处理迭代优化模型训练后发现误标需要人工回炉重标多人一致性检验多人各自标一遍再核对分歧规范更新标注规范修订后旧数据需要按新规范复审。DoTAT 把「一次分配给一组标注员的标注工作」抽象为一个Epoch轮次。每个 Epoch 拥有组成说明任务文档集合本轮要标注的文档标注员/审核员本轮参与的人员分配标注进度已标注条数、总条数、进度百分比标注结果记录本轮产生的实体、关系、事件、分类等结果也就是说Epoch 是 DoTAT 中「任务 人员 结果」的最小管理单元多轮标注就是多个 Epoch 的叠加。二、管理员端一键分配快速创建 Epoch创建 Epoch 的动作发生在「新建任务」的向导流程里。管理员依次完成填写任务信息 → 上传文档 → 上传字典/正则可选→指定标注员与审核员并提交分配。最后一步提交时代码会发起fenpeiepoch分配 Epoch请求把本轮的人员配置写入该任务的 Epoch 接口前端流程入口src/views/taskManagement/newTask.vue状态层封装src/store/modules/project.js接口定义POST /api/projects/{projectid}/epoches/见 src/api/project.js分配完成后管理员可以在任务详情页看到每位标注员、每个轮次的进度表格列名就是「轮次」 进度条实时掌握多轮标注的推进情况进度展示页面src/views/taskManagement/taskDetails.vue查询某项目全部 Epoch 的接口GET /api/projects/{id}/epoches/见 src/api/project.js 小技巧Epoch 的创建与任务向导强绑定一次分配即生成一个轮次避免了「手动建轮次、再挂人」的繁琐操作。三、标注员端任务总览带着 epochid 进入标注标注员登录后进入的是「标注任务总览」页面。页面把该标注员名下的所有 Epoch 以表格形式列出任务 ID、任务名称、任务状态、已标注条数、总标注条数、任务进度并配有醒目的「标注」按钮。关键逻辑在两处源码中拉取自己的轮次列表页面通过user/getEpoch请求GET /api/annotators/{userid}/epoches/拿到分配给自己的所有 Epoch并回填任务名称与模板类型。总览页面src/views/label/index.vue接口定义src/api/user.js携带 epochid 跳转标注页点击「标注」时路由 query 中带上epochid即当前轮次 ID标注页读取该参数后调用GET /api/annotators/epoches/{epochid}/docs/只加载本轮 Epoch 内的文档从而保证「本轮只标本轮的文档」。跳转逻辑src/views/label/index.vue标注页解析 epochidsrc/views/label/labeling.vue整个过程中epochid像一条主线贯穿「总览 → 文档列表 → 标注 → 结果提交」前端状态也在 src/store/modules/user.js 中以SET_EPOCHID形式全局保存供标注、提交等环节随时取用。四、复用核心揭秘第二轮标注到底复用了什么这是 Epoch 机制最有价值的部分。DoTAT 为每个 Epoch 单独记录其标注结果提供了按轮次查询标注结果的接口POST /api/projects/epoches/{epochid}/docs/annotationResults/接口定义src/api/project.js状态层封装getannressrc/store/modules/project.js基于这个能力第二轮标注的实际工作流是新 Epoch 创建后文档进入标注员的任务总览打开文档时系统可以调出上一轮 Epoch 中该文档已有的人为标注结果作为底稿标注员在已有实体、关系、事件的基础上修正、删除错误标注、补充新标注本轮结果写入新 Epoch 自己的结果记录历史轮次原样保留。带来的直接收益⏱️效率提升只需处理分歧与新增不再逐字逐句从零标注可追溯每一轮的结果独立存档随时可以回溯「这个实体是哪一轮加的、谁改的」可迭代规范更新、模型反馈修正等场景天然适配一轮一存档。五、审核员的 Epoch从多人标注到一致结果Epoch 不只服务标注员也服务审核员。审核端同样按轮次取数审核员轮次列表GET /api/reviewers/{reviewerid}/epoches/轮次内文档列表GET /api/reviewers/epoches/{epochid}/docs/接口定义src/api/reviewer.js审核轮次状态管理src/store/modules/reviewer.js审核入口页面src/views/review/index.vue审核员在某个 Epoch 内对比多人标注结果通过一致性检验 自动合并 手动调整产出该轮的最终标注。这意味着一轮Epoch 一组多人标注 一次审核收敛多轮迭代下来数据质量逐轮提升形成完整的「标注 → 审核 → 再标注」闭环。✅六、Epoch 机制相关文件速查表环节文件路径说明任务创建与 Epoch 分配src/views/taskManagement/newTask.vue新建任务向导提交人员分配Epoch 接口层src/api/project.js创建/查询 Epoch、查询标注结果项目状态管理src/store/modules/project.jsfenpeiepoch、getannres封装标注任务总览src/views/label/index.vue标注员轮次列表与跳转标注工作台src/views/label/labeling.vue解析 epochid 加载本轮文档标注员接口src/api/user.js我的轮次、轮次文档用户状态管理src/store/modules/user.js全局保存当前 epochid审核轮次src/views/review/index.vue / src/store/modules/reviewer.js审核员轮次与文档取数任务进度查看src/views/taskManagement/taskDetails.vue按标注员、轮次展示进度写在最后DoTAT 的 Epoch 机制把「多轮标注」这件复杂的事收敛成了三个简单动作分配生成轮次、轮次内复用结果、审核后收敛数据。对标注团队而言它省去了重复劳动和版本混乱对数据而言每一轮都有据可查。如果你正在搭建大规模、多轮次的文本标注流水线这套「一次分配、多轮复用」的设计思路非常值得借鉴。【免费下载链接】MarkToolDoTAT 是一款基于web、面向领域的通用文本标注工具支持大规模实体标注、关系标注、事件标注、文本分类、基于字典匹配和正则匹配的自动标注以及用于实现归一化的标准名标注同时也支持迭代标注、嵌套实体标注和嵌套事件标注。标注规范可自定义且同类型任务中可“一次创建多次复用”。通过分级实体集合扩大了实体类型的规模并设计了全新高效的标注方式提升了用户体验和标注效率。此外本工具增加了审核环节可对多人的标注结果进行一致性检验、自动合并和手动调整提高了标注结果的准确率。项目地址: https://gitcode.com/gh_mirrors/ma/MarkTool创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考