news 2026/8/25 10:01:10

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DoTAT迭代标注(Epoch)机制揭秘:复用已有标注,多轮标注不再从零开始

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

【免费下载链接】MarkToolDoTAT 是一款基于web、面向领域的通用文本标注工具,支持大规模实体标注、关系标注、事件标注、文本分类、基于字典匹配和正则匹配的自动标注以及用于实现归一化的标准名标注,同时也支持迭代标注、嵌套实体标注和嵌套事件标注。标注规范可自定义且同类型任务中可“一次创建多次复用”。通过分级实体集合扩大了实体类型的规模,并设计了全新高效的标注方式,提升了用户体验和标注效率。此外,本工具增加了审核环节,可对多人的标注结果进行一致性检验、自动合并和手动调整,提高了标注结果的准确率。项目地址: https://gitcode.com/gh_mirrors/ma/MarkTool

DoTAT 是一款基于 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、任务名称、任务状态、已标注条数、总标注条数、任务进度,并配有醒目的「标注」按钮。

关键逻辑在两处源码中:

  1. 拉取自己的轮次列表:页面通过user/getEpoch请求GET /api/annotators/{userid}/epoches/,拿到分配给自己的所有 Epoch,并回填任务名称与模板类型。

    • 总览页面:src/views/label/index.vue
    • 接口定义:src/api/user.js
  2. 携带 epochid 跳转标注页:点击「标注」时,路由 query 中带上epochid(即当前轮次 ID);标注页读取该参数后,调用GET /api/annotators/epoches/{epochid}/docs/只加载本轮 Epoch 内的文档,从而保证「本轮只标本轮的文档」。

    • 跳转逻辑:src/views/label/index.vue
    • 标注页解析 epochid:src/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
  • 状态层封装getannres:src/store/modules/project.js

基于这个能力,第二轮标注的实际工作流是:

  1. 新 Epoch 创建后,文档进入标注员的任务总览;
  2. 打开文档时,系统可以调出上一轮 Epoch 中该文档已有的人为标注结果作为底稿;
  3. 标注员在已有实体、关系、事件的基础上修正、删除错误标注、补充新标注
  4. 本轮结果写入新 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.jsfenpeiepochgetannres封装
标注任务总览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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 10:01:00

UniApp全局字体调节方案:基于Rem与Vuex的跨平台实现

1. 项目概述:为什么我们需要全局字体调节功能?在移动应用开发中,用户体验的细微差别往往决定了产品的成败。最近在做一个面向中老年用户的健康管理类UniApp项目时,我们收到了大量反馈:默认字体太小,阅读起来…

作者头像 李华
网站建设 2026/8/25 9:57:10

如何快速上手Cactus:5分钟用Docker跑通第一次基因组多序列比对

如何快速上手Cactus:5分钟用Docker跑通第一次基因组多序列比对 【免费下载链接】cactus Official home of genome aligner based upon notion of Cactus graphs 项目地址: https://gitcode.com/gh_mirrors/cact/cactus Cactus 是一款基于 Cactus 图的无参考基…

作者头像 李华
网站建设 2026/8/25 9:47:10

Agent系统面试全攻略:理论与设计实践

1. Agent面试题解析:从理论到实战的全方位指南最近在技术社区看到不少关于Agent系统设计的讨论,恰好前段时间我也参与了几场相关岗位的面试。发现很多候选人对Agent的理解还停留在概念层面,遇到具体的设计题往往无从下手。今天我就结合自己作…

作者头像 李华