导语: 一个支持文本类目标注和关键词打分的通用标注工具,为文本分类模型和关键词抽取任务提供训练和测试数据。-- by 慕福楠 & 孙振龙
很多 NLP 任务训练和评估都依赖大量标注数据,对于文本分类,使用标注数据进行模型训练和评测,如商业兴趣分类、电商分类、APP分类;对于关键词抽取,使用标注数据进行评测。在标注数据获取过程中存在以下问题:Excel 标注方式效率低下;腾讯系数据源多,标注数据难于管理;标注质量难以保证,依赖人工抽样,费时费力。因此,我们快速开发了一个通用的文本标注工具并开源,工具名称为labelme,翻译成“来标我”,现在labelme已经支持组内所有的标注任务。
图1 labelme支持的特性
目前支持文本类目标注(图2)和关键词标注(图3)两个场景。类目标注支持树状类目体系,标注时自顶向下标注,从root标注到叶节点,例如图2中,先标一级“餐饮美食”,再标二级“餐馆”。关键词标注支持正在打分的关键词在文档中高亮和增加候选中没有的关键词功能。
图2 类目标注界面
图3 关键词标注界面
labelme支持多个任务同时标注,通过简单的配置即可增加新的标注任务,配置如图4,然后在系统登录页选择相应的Task进行标注,如图5所示。
图4 配置定义
图5 系统登录页
为了保证标注数据质量,labelme引入质量校验特性,利用专家标注的数据验证普通标注人员的标注数据的准确率。将开发或者产品定义为Owner(专家),将外包同学定义为Labeler(普通标注人员),Owner标注的数据作为Golden Set,Labeler每天的标注数据中掺一定比例的Golden Set,比例可配置(配置定义中的owner_sample_ratio字段),每天以Golden Set作为正确答案,计算Labeler标注的准确率。Labeler之间的标注数据不会有交集,见图6,每天分配给Labeler的Golden Set是Labeler没有标注过的,所以一旦Golden Set用完,系统无法计算准确率,需要Owner定期标注一些Golden Set计算Labeler的准确率。
图6 各角色标注数据交集情况
对于类目标注, 为了提高标注效率和减少不必要的标注,可以利用已有标注数据训练弱分类器,对未标注数据进行预测,假定预测的结果为Pi (i = 1, 2, ...N;N是类目的个数),预测结果为c = argmax_i Pi,即样本的预测类别为c,概率为Pc,labelme将Pc低于threshold的样本返回给标注人员进行标注,Pc高于threshold的样本认为是跟已标注样本很相似,不需要再标注。每天重新训练弱分类器,重新预测未标注样本的类别,重新估计threshold。另外,为了降低系统复杂度,弱分类器与labelme解耦,labelme提供接口给弱分类器,接口包括获取已标注数据和未标注数据,更改未标注数据预测类别,弱分类器由用户自行选择。另外,labelme优先展示概率比较大的类目,提高标注效率。
labelme采用mysql管理标注数据,mysql使用CDB,保证数据安全,毕竟标注数据需要大量人力。
labelme会向任务的owner和labeler推送报表,报告样本总量,已标数据,剩余数量,每个人前一天标注数量和准确率。
未来工作包括UI优化和Active Learning。UI优化包括上一页按钮和查询界面,上一页按钮为了修改误标的数据,查询界面是报表的扩展,提供更多维度的查询,比如某个外包同学特定时间段内所有任务的标注量和正确率。对于Active Learning上文提到了未来的实现方式,这里不再赘述。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。