即使机器学习和人工智能最近取得了所有进展,我们也无法摆脱信息时代的讽刺现实。为了让人类依赖机器,机器首先需要人类来教他们。因此,如果您在自然语言处理管道中进行任何类型的监督学习,并且很可能是,数据注释在您的工作中发挥了作用。也许你很幸运拥有一个大型的预注释文本语料库。而且您不需要为自己进行所有的文本注释来进行培训。但是,如果您想知道它在生产中的表现如何,则必须在某些时候对文本进行注释。
什么是文本注释?
文本注释只是读取自然语言数据并以机器可读的格式添加一些关于它的附加信息。这些附加信息可用于训练机器学习模型并评估它们的性能。
假设您的语料库中有这样一段文字:“I am going to order some brownies for tomorrow”
您可能想确定布朗尼是一种食品和/或明天是交货时间。然后使用该信息确保您为他们准备了一些巧克力蛋糕,并且您可以在明天交付它们。
或者,也许您的任务规模更大。因此,您可能需要注释整个句子具有下订单的意图。
使您的文本注释过程更好的提示
使注释者和开发人员的生活变得简单的第一件事就是保持标签的简单性和描述性。food_item并且time_of_delivery是描述您正在注释的内容的良好、直接的标签。但是像intent_1,intent_1_ver2和不必要的首字母缩略词这样的标签使得快速应用和检查标签变得更加困难。
除此之外,一个人不太可能自己注释所有内容。通常,有一个团队需要就标签的含义达成一致。我建议您在一个中央共享位置定义您的标签,并保持此信息是最新的。因此,如果添加了新标签,或者标签的含义发生了变化,每个人都可以轻松访问更新。
检查文本注释的质量
一件经常被忽视的事情是检查注释的质量。那么,一个人是怎么做到的呢?您可以再次浏览所有文本,但这效率低下。
一种方便的技术是使用标志来表示注释的混淆或不确定性。这使得不确定注释的注释者能够对其进行标记,以便稍后对其进行双重检查。
另一个有用的方法是让一些注释者查看相同的数据,并比较他们的注释。为此,您可以使用Cohen 的 kappa、Scott 的 Pi或Fleiss 的 kappa等评估者间的可靠性度量。或者你可以创建一个混淆矩阵。
在上面的示例中,注释器 1 的标签位于列中,注释器 2 的标签位于行中。您可以看到他们都同意所有标记的内容order_time,并且他们大多同意food_item. 但是对于应该在哪里应用标签似乎有很多困惑food_order。
这可能表明标签需要对其含义进行更多澄清,或者需要将其分成单独的标签。或者也许应该完全删除它。
顶级文本注释工具
brat(基于浏览器的快速注释工具)
brat是一个免费的、基于浏览器的在线注释工具,用于协作文本注释。它具有丰富的功能,例如与包括维基百科在内的外部资源的集成、对自动文本注释工具的支持以及集成的注释比较。项目特定标签方案的配置是通过.conf 文件定义的,这些文件只是纯文本文件。
brat 更适合注释表达式和它们之间的关系,因为注释较长的文本跨度(如段落)确实很不方便(弹出菜单变得比屏幕大)。它只接受文本文件作为输入文档,并且文本文件不会在 UI 中以原始格式呈现。因此它不适合标记 PDF 等结构化文档。
它带有详细的安装说明,并且可以通过几行代码进行设置。
要设置独立版本,只需克隆GitHub 存储库:
git clone https://github.com/nlplab/brat.git
进入目录并运行安装脚本:
cd brat-master
./install.sh
系统会提示您输入用户名、密码和管理员联系邮箱等信息。一旦你填写了这些信息,你就可以启动brat:
python standalone.py
doccano
doccano是一个开源的、基于浏览器的注释工具,仅用于文本文件。它具有更现代、更有吸引力的 UI,并且所有配置都在 Web UI 中完成。但是doccano的适应性不如小子。它不支持标记单词和嵌套分类之间的关系,但是,大多数模型和用例无论如何都不需要这些。
您可以在应用程序本身中编写和保存注释指南,并使用键盘快捷键应用注释。它还创建了标签统计信息的基本图表概述。所有这一切都使 doccano 更加初学者,并且在一般用户中更加友好。它确实支持多个用户,但没有用于协作注释的额外功能。
设置过程也很简单,只需从 PyPI 安装 doccano:
pip install doccano
安装完成后,请执行如下命令:
# Initialize the database
doccano init
# Create a superuser
doccano createuser --username admin --password pass
# Start the webserver
doccano webserver --port 8000
在另一个终端中,执行如下命令:
doccano task
在浏览器中访问http://127.0.0.1:8000/
LightTag
LightTag是另一个基于浏览器的文本标记工具,但它不是完全免费的。它有一个免费的版本,每个月有5000个基本功能的注释。您只需要创建一个帐户就可以开始注释了。 LightTag平台有自己的AI模型,可以从以往的标签中学习并提出注释建议。付费后,该平台还可以实现项目管理工作的自动化。它将任务分配给注释器,并确保有足够的重叠和重复,以保持较高的准确性和一致性。
在我看来,真正让LightTag脱颖而出的是它的数据质量控制特性。它自动生成注释器的精确度和召回报告,并有一个专门的审查页面,使您能够直观地审查团队的注释。LightTag还可以检测冲突,并允许您通过多数或一致投票自动接受。 您还可以将生产模型的预测加载到LightTag中,并检查它们,以检测数据漂移并监控生产性能。它最近被Primer收购。ai,你可以通过subscripti访问他们的NLP平台
TagEditor
TagEditor是一个独立的桌面应用程序,它使您能够在space acy库的帮助下快速地注释文本。它不需要任何安装。你只需要从他们的GitHub repo下载并解压TagEditor.7z文件,然后运行TagEditor.exe。使用TagEditor,您可以注释依赖关系、词性、命名实体、文本类别和相互引用解析,创建您定制的注释数据或创建一个。json或。space格式的训练数据集,用于使用space库或PyTorch进行训练。如果您在Windows上使用space,那么TagEditor覆盖了所有基础。
Tagtog
Tagtog是一个用户友好的基于web的文本注释工具。与lighttag类似,您不需要安装任何东西,因为它运行在云上。你只需要建立一个新帐户和创建一个项目。但是如果你需要在私有云环境中运行它,你可以使用他们的Docker镜像。它提供了一些免费的特性,包括手动注释、使用webhook训练您自己的模型以及一组预先注释的公共数据集。Tagtog通过自动识别和注释标记过的单词来加速手动注释。您可以上传支持的格式的文件,例如.csv、.xml、.html,或者简单地插入纯文本。对于更高级的特性,如自动注释、本地PDF注释和客户支持,需要支付订阅费。Tagtog还允许您从自己训练过的模型中导入带注释的数据。然后可以在注释编辑器中查看它并进行必要的修改。最后,使用它们的API下载评审过的文档,并重新训练您的模型。查看官方教程以获得完整的示例。
Explosion.ai (spacy的创造者)有他们自己的注释工具,叫做Prodigy。它是一种可编写脚本的注释工具,使您能够利用迁移学习来训练具有产品质量的模型,只需很少的示例。发明者表示,它“如此高效,数据科学家可以自己进行注释。”它没有免费提供,但你可以看看它的现场演示。这个注释工具的主动学习方面意味着您只需要注释模型不知道答案的示例,这大大加快了注释过程。你可以选择.jsonl, .json和.txt格式来导出你的文件。要开始注释,您需要获得许可密钥,并从PyPI安装Prodigy,
pip install prodigy -f https://XXXX-XXXX-XXXX-XXXX@download.prodi.gy
如果您使用JupyterLab,您可以安装JupyterLab -prodigy扩展。
jupyter labextension install jupyterlab-prodigy
该扩展使您能够在笔记本单元格中执行配方命令,并在JupyterLab选项卡中打开注释UI,因此您不需要离开您的笔记本来注释数据。Python库包括一系列预构建的工作流和用于各种任务的命令行命令,以及用于实现您自己的工作流脚本的文档化良好的组件。您的脚本可以指定如何加载和保存数据,更改注释接口中提出的问题,甚至可以定义定制的HTML和JavaScript来更改前端的行为。Prodigy不局限于文本,它允许您注释图像、视频和音频。它还具有易于使用的随机A/B测试功能,可以用于评估机器翻译、图像字幕、图像生成、对话生成等任务的模型。
结论
如果你不能花一分钱,而你的注释任务很简单,那就使用doccano。如果您需要标记关系,可以使用TagEditor,但如果您想要更多的控制和定制,可以使用brat。在付费工具方面,如果您愿意编写一些代码来创建数据质量报告和管理注释冲突,Prodigy是最佳选择。虽然Prodigy看起来是一个昂贵的选择,但值得注意的是,它是一次性付费的终身授权和一年的更新。另一方面,tagtog和LightTag是订阅服务。但是如果您想要一个更现成的解决方案,您可以使用tagtog或LightTag。