在Hugging Face Spaces中使用Label Studio进行数据标注的简介
简介
Label Studio社区很高兴地宣布Label Studio在Hugging Face Spaces正式上线。本教程旨在帮助您开始使用Label Studio进行数据标注,重点介绍如何在Hugging Face Spaces中使用Label Studio快速启动应用程序并与其他用户协作。
无需任何先验经验,今天即可开始。无论您是否编写过一行代码或创建过机器学习查询——我们的目标是,无论您的专业水平如何,您都能跟上并学习新知识。
你需要准备:
在本教程中,我们将保持简单。您只需要一样东西一个Hugging Face社区账号。
Hugging Face平台将为您提供开始使用Spaces所需的一切,这是一个用于构建、托管和分享机器学习应用的平台。如果您还没有Hugging Face账户,现在是创建账户的最佳时机。
启动Label Studio
你可以从Label Studio Spaces官方页面开始使用。你将看到Label Studio社区版的登录界面,并可以选择创建新账户。
虽然您可以在官方空间内创建账户,但由于这是一个公共托管空间,建议您从一个新环境开始。Hugging Face让您能轻松启动自己的Label Studio实例。点击界面右侧的三个点激活下拉菜单,选择"复制此空间"。Label Studio实例将被复制到您的账户中,您将拥有一个专属应用程序开始工作。
或者,您可以从Hugging Face Docker模板目录启动Label Studio副本。从可用SDK列表中选择"Docker",选择Label Studio,调整您的空间选项,然后点击"创建空间"启动。
准备好您的空间后,选择“注册”标签并创建一个新账户。账户激活后,您可以开始一个新的标注项目。
直接使用此空间存在一些重要注意事项:
Hugging Face Spaces 没有永久存储空间,这意味着如果由于配置变更或长时间不活动导致空间重启,您可能会丢失工作内容。因此,您应该将此实例视为演示和学习环境来入门。
此空间允许无限制的账户注册,意味着任何能访问您空间的人都可以在应用程序中创建账户。这对于与朋友和同事分享非常方便,但在生产环境中您会希望限制访问权限。
在本教程的最后,我们将为您提供一些提示,介绍如何通过连接云存储进行数据托管并启用用户认证来附加数据库以实现更持久的配置,从而将您的Label Studio空间转变为可用于生产的环境。
Label Studio空间创建完成后,现在可以讨论什么是数据标注、Label Studio如何协助数据标注流程,以及一个基于自然语言处理的初始示例来构建本教程框架。
什么是Label Studio?
Label Studio 是一个开源的数据标注平台,用于标注、注释和探索多种不同的数据类型。此外,该工具包含一个强大的机器学习界面,可用于新模型训练、主动学习、监督学习以及许多其他训练技术。
但等等,什么是数据标注?
数据标注(有时也称为数据注释或数据集开发)是数据科学或机器学习实践中的关键步骤。通过标注为数据添加有意义的信息,您可以提高模型的准确性,识别并消除偏差,同时提升机器学习和数据科学操作的效率。
让我们看看数据标注在通用机器学习流程中的位置。
- 定义问题并收集数据。
- 准备并标注数据。
- 选择一个模型并进行训练。
- 评估模型。
- 微调模型。
- 部署模型。
- 持续监控模型并使用新标注的数据进行更新。
数据准备提示:
将数据导入Label Studio时,有几点需要注意。以下是我们的解决方案工程师Abubakar Saad为刚接触数据标注的新手提供的一些建议:
- 花时间准备数据:查找可能导致结果不准确的不一致、缺陷或错误。
- 提供文档说明:展示您的工作流程,说明数据来源以及数据清洗方法。
- 检查您的工作:在清理数据时,很容易迷失在某一步骤中。请定期花时间检查您的工作,以确保数据集的有效性和准确性。
查找待标注数据
为了本次探索,我们将使用一个开放且知名的数据集。我们将采用Andrew Maas提供的IMDB数据集(参考文献)。这是一个包含超过10万条评论的大型数据集。本教程中我们将仅使用100条评论的小样本。虽然样本量小,但能让你了解如何为标注团队整理大规模数据集进行分发。文章末尾提供了完整数据集的描述以及我们为本教程所做的准备工作说明。
Label Studio 支持的数据类型
Label Studio最受社区喜爱的功能之一是其能够在同一平台上处理多种不同的文件类型。无论是文本、音频、图像,甚至是视频和时间序列数据,Label Studio都能满足您的需求。
文件类型可能会根据您的使用场景和正在处理的项目而变化。
理解哪种文件类型最适合您的目标以及如何最佳格式化数据以准备标注非常重要。
情感分析是数据标注和机器学习中最热门的应用场景之一。它属于机器学习的一个分支,称为自然语言处理(NLP)。本教程旨在为电影评论情感分析模型的训练准备数据。
创建您的项目
首次登录Label Studio时,您将看到项目页面,这是所有数据标注项目的管理中心。您可以创建新项目、编辑或重新访问现有项目,甚至邀请团队成员。该页面将成为您的默认视图,展示您有权访问的所有项目。
要创建新项目,请点击屏幕右上角的蓝色按钮来新建项目。如果您的空间中没有项目,屏幕中央将显示创建项目的选项。
项目创建面板将显示三个选项卡。在第一个选项卡"项目名称"中,您可以命名和描述项目。在本例中,我们可以将其命名为"电影情感分析",描述为"我的第一个标注项目"。
导入您的数据
下一个标签页“数据导入”将为您提供加载数据集的界面。Label Studio提供两种数据加载选项:您可以直接将数据上传至应用程序,或者将Label Studio连接到云存储。云存储具有诸多优势,包括自动更新和增强的数据安全性。但在本教程中,我们将使用直接上传选项。
- 从Hugging Face Datasets下载这个csv文件。
- 点击"上传文件"按钮,按照对话框指引上传您下载的`IMDB_train_unlabeled_100.csv`文件。
- 当提示时,选择"将CSV/TSV视为任务列表"选项,将数据文件的每一行作为独立的标注数据项导入。
设置标注界面
在下一个标签页"标注设置"中,您将配置标注界面。
什么是标注界面,为什么设置它很重要?
标注界面是数据标注人员和注释者进行标注过程的屏幕。在此界面中,注释者将查看数据并选择要添加的具体注释。
Label Studio 提供了一系列模板库,让您能够快速上手标注界面——无需编码或花费大量时间进行定制。除了Label Studio默认提供的模板外,社区还整理了一个完整的模板库,您可以在Label Studio Playground中浏览和试用。这些模板涵盖计算机视觉、音频/语音处理、对话式AI、自然语言处理等多个领域——有大量模板可供您开始使用。
为情感分析准备标注界面
在为本教程设置标注界面时,我们将针对NLP类型的数据标注任务进行配置:情感分析。
在对话框左侧选择“自然语言处理”,然后选择“文本分类”模板。您将看到一个分屏视图,帮助您配置标注界面。左侧是自动生成的视觉编辑器,允许您选择需要标注的数据列。接着,您可以创建一组标签,分配给每个数据点。如果需要更精细地控制标注界面,您可以切换到代码编辑器直接修改XML模板。
在分割面板的右侧是标注界面的UI预览,它可以让您呈现标注人员将要使用的界面。
您需要调整界面来完成两件事。首先是为此项目创建适当的标签。
情感分析通常衡量的是某人可能表达的情绪或感受的强度范围。例如,平均而言,脚趾被绊到产生的不适感比手臂骨折要轻。在这个案例中,我们标注的是观众是否喜欢这部电影。假设您希望从数据中获取更多信息,并在更广泛的情感范围内训练模型。那么您可以添加其他选项,例如:"信息性"、"悲伤"、"愤怒"、"高兴"或"不感兴趣"。
由于原始数据集已包含仅两种情感标签——“正面”和“负面”,您需要遵循数据集作者设定的规范。所选模板包含三种情感——“正面”、“负面”和“中性”。请通过点击可视化编辑器中“中性”标签旁边的红色“×”来删除该选项。
接下来你需要调整的是界面中待标注的数据展示。请注意数据集包含多个列,其中许多是与数据集相关的元数据。你需要将界面设置为向标注者展示数据的"review"字段。具体操作是在可视化编辑器的"配置数据"标题下,从"使用字段文本"选项中选择"$review"。
确认界面已按您所需配置完成,然后点击对话框右上角的“保存”按钮。您的数据已导入,标注界面准备就绪!
总体而言,界面中可用的选项主要取决于项目需求。您的业务应用、模型和数据类型将是决定如何为数据标注人员设置界面的重要因素。
项目设置完成后
在设置好项目后,您将看到Label Studio项目数据页面。乍看之下这个页面可能令人不知所措,因此我们会将其分解为易于理解的部分。
检查您导入的数据
查看屏幕顶部,顶部菜单栏将提供关于Label Studio中每一列的更多详细信息。
检查已导入的数据。您的CSV文件中每一列都会有名称和对应的数据类型。这个增强数据集不仅包含评论(位于"review"列),还包括评论对应的星级数、IMDB电影页面链接以及多个ID(一个由Label Studio分配,一个在数据准备阶段分配,还有一个来自原始数据集的非唯一ID)。目前,您可以忽略这些字段,专注于"review"列。这些数据将由标注人员评估并分配"积极"或"消极"的情感标签。
根据Label Studio的术语,每一行对应一个标注"任务"。
查看Label Studio的附加元数据
此视图中的前四列包含Label Studio用于衡量标注团队进度和效果的标注元数据。这些数据包括任务ID、标注完成日期、每个任务的标注数量(为提高标注准确性,您可以在每个任务上设置多个标注)、标注者跳过任务的次数、预测总数(包括预标注集或机器学习标注任务),以及谁对该任务中的数据进行了标注。
顶部的信息行是可调整的,您可以通过点击并拖动菜单栏项目来自定义视图(类似于Excel或Google Sheets中的操作)。
是时候标注一些数据了!
现在我们已经导入了数据并配置好界面,可以开始标注了!
点击工具栏中央亮蓝色的`Label All Tasks`按钮进入标注界面。随后您将看到在设置阶段定义的标注界面。您会注意到文本内容来自我们导入的数据集。界面上会有提示要求从情感选项中进行选择。屏幕右侧还有"跳过"或"提交"标注的附加按钮。
根据您的判断,您可以选择文本的情感倾向并点击“提交”继续下一个标注任务。在此特定界面中,您可以使用标注选项旁列出的键盘快捷键来加快标注速度,例如按'1'表示'积极',按'2'表示'消极'。如果您不确定文本的情感倾向,可以选择"跳过"进入下一个任务。
闲话少说 — 开始标注吧!
导出您的数据
快速推进后,您已完成样本数据集中所有100个任务的标注工作。通过从界面工具栏选择项目标题,您可以返回数据页面。标注任务完成后,您可以将这些数据导出,用于机器学习或数据科学流程的后续环节。
Label Studio支持多种格式。对于今天我们处理的文本类数据,可选格式包括JSON、JSON-MIN、CSV或TSV。如果我们处理的是包含图像、目标检测或数值型数据的数据集,导出选项会略有不同。对于非表格数据,通常需要导出一个包含标注结果的JSON文件,其中会引用您的团队标注过的原始图像、视频或音频文件。
为了简化操作,您可以将标注数据导出为CSV文件。
在界面中,选择"导出"按钮。然后选择"CSV"作为导出格式。点击对话框底部的"导出"按钮,系统将提示您将导出的数据保存到本地磁盘。
导出的数据有什么用途?
导出的数据可用于多种用途——加速后续数据分析中的分类任务,提供更精准的反馈来训练模型,甚至简化搜索或趋势预测等繁琐工作。通过我们的API与云存储选项及其他DevOps工具和流程集成,可在使用场景和标注操作中实现更高的灵活性。
将您的Label Studio Hugging Face空间升级为生产就绪状态
如教程前面所述,默认的Label Studio空间存在一些限制,主要包括:
- 该应用程序允许无限用户访问。
- 所有数据和设置都存储在空间的本地存储中,如果空间重启可能会丢失。
好消息是,您可以快速克服这些限制,并将该空间配置为具有访问控制和永久存储的生产标注环境。
配置Label Studio Spaces的访问控制
您有两种选项来设置Label Studio空间的访问控制:
- 将空间权限设置为私有。
- 禁用Label Studio的公开账户创建功能。
第一种方法是将您的空间设为私有。这是限制访问的最简单方式,只有您以及可能属于您Hugging Face组织的协作者(如果您已将空间复制到组织中)才能查看该空间。这种方法的缺点是您无法设置依赖Label Studio API的集成,因为API端点将不会公开可见。
第二个推荐选项是禁用Label Studio应用的公开账户创建功能。这将确保只有特定人员可以访问Label Studio,同时仍能使用Label Studio API。为此,您需要执行以下步骤。
- 将该环境变量添加到spaces的Dockerfile中:
ENV LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true
这将禁用公开账户创建功能,并要求通过Label Studio应用程序内生成的邀请链接来创建新账户。
- 在您的Label Studio空间设置中配置以下密钥,分配相应的登录凭据:
LABEL_STUDIO_USERNAME
LABEL_STUDIO_PASSWORD
对Space执行恢复出厂设置将使这些更改生效。您可以使用在步骤2中设置的用户名和密码登录,并在Label Studio中使用组织设置与协作者共享登录链接。
为永久项目配置附加Postgres数据库
为了使您的Label Studio空间在重置后保持持久性,您需要配置与外部数据库的连接。Label Studio支持Postgres作为网络附加数据库。Postgres的设置超出了本文的范围,但网上有多种资源可帮助您入门。要连接您的Postgres数据库,请在空间配置中配置以下secrets:
DJANGO_DB=default
POSTGRE_NAME=<postgres_name>
POSTGRE_PORT=<db_port>
POSTGRE_USER=<postgres_user>
POSTGRE_PASSWORD=<password>
POSTGRE_PORT=<db_port>
POSTGRE_HOST=<db_host>
附加云存储以实现永久数据托管
如果您将数据文件上传到Label Studio Space实例,当空间重启或重置时,您可能会丢失数据。Label Studio社区强烈建议您在生产环境中使用云存储来托管数据。
如果您已将Postgres设置为应用程序数据库,您可以直接在Label Studio应用中附加存储,配置设置将在空间重置后保持不变。
如果您希望在应用启动时附加云存储,可以设置以下密钥以在启动时连接存储。
Amazon S3
STORAGE_TYPE=s3
STORAGE_AWS_ACCESS_KEY_ID="<YOUR_ACCESS_KEY_ID>"
STORAGE_AWS_SECRET_ACCESS_KEY="<YOUR_SECRET_ACCESS_KEY>"
STORAGE_AWS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
STORAGE_AWS_REGION_NAME="<YOUR_BUCKET_REGION>"
STORAGE_AWS_FOLDER=""
Google Cloud Storage
STORAGE_TYPE=gcs
STORAGE_GCS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
STORAGE_GCS_PROJECT_ID="<YOUR_PROJECT_ID>"
STORAGE_GCS_FOLDER=""
GOOGLE_APPLICATION_CREDENTIALS="/opt/heartex/secrets/key.json"
Azure Blob 存储
STORAGE_TYPE=azure
STORAGE_AZURE_ACCOUNT_NAME="<YOUR_STORAGE_ACCOUNT>"
STORAGE_AZURE_ACCOUNT_KEY="<YOUR_STORAGE_KEY>"
STORAGE_AZURE_CONTAINER_NAME="<YOUR_CONTAINER_NAME>"
STORAGE_AZURE_FOLDER=""
让我们回顾一下
在本教程中,我们介绍了数据标注的基础知识、如何开始使用Label Studio、数据标注在更广泛的机器学习生态系统中扮演的角色,以及如何自己动手开展一个基础的情感分析项目。既然您已经掌握了基础知识——您现在具备了为机器学习流程提供更高质量数据标注的技能。
是否已经迫不及待想提前动手实践更多内容?加入Label Studio Slack社区,结识数据标注领域的使用者和开发者,或在您的数据标注之旅中获得帮助。或者查看Label Studio博客,在那里您可以找到关于Label Studio的更多信息、我们的最新动态,以及如何参与我们正在进行的各种项目和计划。
关于数据
本教程使用的数据集源自“大型电影评论数据集”,该集合包含10万条电影评论。原始数据集主要分为两大类:训练数据和测试数据。每个类别包含25,000个标有"正面"或"负面"情感的数据点。训练数据集还额外包含50,000个未标记的数据点。每条评论都存储为单独的文本文件,元数据编码在文件名、目录结构和额外的辅助文件中。
为了准备本教程所需的数据,我们编写了一个脚本,该脚本通过遍历目录结构来捕获数据和元数据作为数据行。数据以随机批次写入,每行对应:
- 0 - 25,000:已标注的训练数据,包含混合的正负面情感。
- 25,001 - 75,000:未标注的训练数据。
- 75001 - 100,000:已标注测试数据,包含混合的正负面情感。
为了方便使用,这些批次数据也被单独导出为文件。最后,每个批次的前100行数据被导出为不同文件,以支持快速加载,从而提供更流畅的学习体验。我们感谢Andrew Maas在其研究中提供这个免费数据集。