亚马逊机器学习解决方案实验室 (MLSL) 最近创建了一个工具,用于使用命名实体识别 (NER) 和关系标签来注释文本 亚马逊SageMaker地面真相。注释者使用此工具用命名实体标记文本并链接它们的关系,从而构建用于训练最先进的自然语言处理 (NLP) 机器学习 (ML) 模型的数据集。最重要的是,现在所有 AWS 客户都可以公开使用它。
客户用例:Booking.com
Booking.com 是全球领先的在线旅游平台之一。了解客户对该公司平台上超过 28 万个房产列表的评价对于维持一流的客户体验至关重要。此前,Booking.com 只能利用传统的情感分析来大规模解读客户生成的评论。为了提高这些解释的特异性,Booking.com 最近向 MLSL 寻求帮助,帮助构建自定义注释数据集,以训练基于方面的情感分析模型。
传统的情感分析是将一段文本分类为正面、负面或中性的过程 独特的情感。这有助于广泛了解用户对特定体验是否满意。例如,通过传统的情感分析,以下文本可能被归类为“中性”:
我们在酒店的住宿体验很好。工作人员很友好,房间很干净,但我们的床很不舒服。
基于方面的情感分析提供了对内容更细致的理解。以 Booking.com 为例,它不是将客户评论视为一个整体并对其进行分类,而是可以从评论中获取情绪并将其分配到特定方面。例如,客户对某家酒店的评论可能会称赞其完美的游泳池和健身区,但会对餐厅和休息室给出批评性的反馈。
通过传统情感分析被归类为“中性”的陈述,通过基于方面的情感分析将变成:
我们在酒店的住宿体验很好。工作人员很友好,房间很干净,但我们的床很不舒服。
- 酒店:积极
- 员工:积极
- 房间:正面
- 床位:负
Booking.com 试图构建一个基于方面的自定义情感分析模型,该模型将告诉他们客户体验的哪些特定部分(来自 50 多个方面的列表) 积极, 负或 中性.
在 Booking.com 为该模型构建训练数据集之前,他们需要一种对其进行注释的方法。 MLSL 的注释工具提供了急需的定制解决方案。对大量酒店评论进行了人工审核。然后,注释者完成对情感和客户体验文本范围和短语的命名实体注释,然后将适当的范围链接在一起。
新的基于方面的模型让 Booking.com 可以为客户提供个性化的住宿和评论。突出每种住宿的优点和缺点,使客户能够选择最适合的住宿。此外,不同的客户关心住宿的不同方面,新模式提供了向每位客户展示最相关的评论的机会。
标签要求
尽管 Ground Truth 提供了内置的 NER 文本注释功能,但它不提供将实体链接在一起的功能。考虑到这一点,Booking.com 和 MLSL 为新的命名实体识别文本标记工具制定了以下高级要求:
- 接受作为输入: 文本, 实体标签, 关系标签及 分类标签.
- 可选择接受带有前面标签和关系注释的预注释数据作为输入.
- 向注释者提供未注释或预先注释的文本。
- 允许注释者使用实体标签突出显示和注释任意文本。
- 允许注释者在两个实体注释之间创建关系。
- 允许注释者轻松导航大量实体标签。
- 支持将实体标签分组。
- 允许重叠关系,这意味着同一带注释的文本段可以与多个其他带注释的文本段相关。
- 允许重叠实体标签注释,这意味着两个注释可以重叠同一段文本。例如,文本“西雅图太空针塔”可以同时具有注释“西雅图”→“位置”和“西雅图太空针塔”→“景点”。
- 输出格式与输入格式兼容,可以反馈到后续的标注任务中。
- 支持包含表情符号和其他多字节字符的 UTF-8 编码文本。
- 支持从左到右的语言。
示例注释
考虑以下文档:
我们喜欢这家酒店的位置!屋顶休息室为我们提供了太空针塔的完美视野。距派克市场和海滨也只有很短的车程。
食物只能通过客房服务提供,这有点令人失望,但在这个大流行后的世界是有意义的。
总的来说,这是一次价格合理的体验。
将此文档加载到新的 NER 注释中将为工作人员提供以下界面:
在这种情况下,工人的工作是:
- 标记与房产相关的实体(位置、价格、食物等)
- 标记与情绪相关的实体(积极、消极或中性)
- 将与酒店相关的命名实体链接到与情感相关的关键字,以准确捕捉宾客体验
注释速度是该工具的一个重要考虑因素。使用一系列直观的键盘快捷键和鼠标手势,注释者可以驱动界面并且:
- 添加和删除命名实体注释
- 添加命名实体之间的关系
- 跳转到文档的开头和结尾
- 提交文件
此外,还支持重叠标签。例如, Seattle Space Needle
: 在这句话中, Seattle
既可以单独注释为位置,也可以注释为景点名称的一部分。
完成的注释提供了更完整、更细致的数据分析:
可以在多个级别上配置关系,从实体类别到其他实体类别(例如,从“食物”到“情感”),或者在各个实体类型之间。关系是定向的,因此注释者可以将食物等方面与情感联系起来,但反之则不然(除非明确启用)。绘制关系时,标注工具会自动推导出关系标签和方向。
配置 NER 注释工具
在本节中,我们将介绍如何针对特定于客户的用例自定义 NER 注释工具。这包括配置:
- 要注释的输入文本
- 实体标签
- 关系标签
- 分类标签
- 预注释数据
- 工人指示
我们将介绍输入和输出文档格式的细节,并提供每种格式的一些示例。
输入文档格式
NER 注释工具需要以下 JSON 格式的输入文档(名称旁边带有问号的字段是可选的)。
简而言之,输入格式具有以下特征:
- 或
entityLabels
orclassificationLabels
(或两者)都需要注释。 - If
entityLabels
给出,那么relationshipLabels
可以添加。 - 不同实体/类别标签或它们的混合之间可以允许存在关系。
- 关系的“源”是有向箭头开始的实体,而“目标”是它的前进方向。
领域 | Type | 产品描述 |
文本 | 绳子 | 必需的。输入注释文本。 |
令牌行 | 细绳[][] | 选修的。输入文本的自定义标记。字符串数组的数组。顶级数组表示每行文本(换行符),第二级数组表示每行上的标记。输入文本中的所有字符/符文都必须在 tokenRows 中考虑,包括任何空格。 |
文档ID | 绳子 | 选修的。可供客户跟踪正在注释的文档的可选值。 |
实体标签 | 目的[] | 如果分类标签为空,则为必需。实体标签数组。 |
实体标签[].名称 | 绳子 | 必需的。实体标签显示名称。 |
实体标签[].category | 绳子 | 选修的。实体标签类别名称。 |
实体标签[].shortName | 绳子 | 选修的。在带注释的实体而不是全名上显示此文本。 |
实体标签[].shortCategory | 绳子 | 选修的。在实体注释选择下拉列表中显示此文本,而不是类别名称的前四个字母。 |
实体标签.颜色 | 绳子 | 选修的。带“#”前缀的十六进制颜色代码。如果为空,则会自动为实体标签分配颜色。 |
关系标签 | 目的[] | 选修的。关系标签数组。 |
关系标签[].name | 绳子 | 必需的。关系标签显示名称。 |
关系标签[].allowedRelationships | 目的[] | 选修的。限制可以将此关系分配给哪些类型的源实体标签和目标实体标签的值数组。数组中的每个项目都是“或”在一起的。 |
关系标签[].allowedRelationships[].sourceEntityLabelCategories | 细绳[] | 需要设置 sourceEntityLabelCategories 或 sourceEntityLabels(或两者)。此关系的合法来源实体标签类别类型列表。 |
关系Labels[].allowedRelationships[].targetEntityLabelCategories | 细绳[] | 需要设置 targetEntityLabelCategories 或 targetEntityLabels(或两者)。此关系的合法目标实体标签类别类型列表。 |
关系标签[].allowedRelationships[].sourceEntityLabels | 细绳[] | 需要设置 sourceEntityLabelCategories 或 sourceEntityLabels(或两者)。此关系的合法来源实体标签类型列表。 |
关系标签[].allowedRelationships[].sourceEntityLabels | 细绳[] | 需要设置 targetEntityLabelCategories 或 targetEntityLabels(或两者)。此关系的合法目标实体标签类型列表。 |
分类标签 | 细绳[] | 如果entityLabels 为空,则为必需。文档级别分类标签列表。 |
实体注释 | 目的[] | 选修的。用于预先注释输入文本的实体注释数组。 |
实体注释[].id | 绳子 | 必需的。该实体注释的唯一标识符。用于在关系注释中引用该实体。 |
实体注释[].start | 数 | 必需的。该实体注释的起始符文偏移量。 |
实体注释[].end | 数 | 必需的。该实体注释的结束符文偏移量。 |
实体注释[].text | 绳子 | 必需的。开始和结束符文偏移之间的文本内容。 |
实体注释[].label | 绳子 | 必需的。关联的实体标签名称(来自实体标签中的名称)。 |
实体注释[].labelCategory | 绳子 | 可选。关联的实体标签类别(来自实体标签中的类别)。 |
关系注释 | 目的[] | 选修的。关系注释数组。 |
关系Annotations[].sourceEntityAnnotationId | 绳子 | 必需的。此关系的源实体注释 ID。 |
关系Annotations[].targetEntityAnnotationId | 绳子 | 必需的。此关系的目标实体注释 ID。 |
关系注释[].label | 绳子 | 必需的。关联关系标签名称。 |
分类注释 | 细绳[] | 选修的。用于预先注释文档的分类数组。 |
目标 | 对象 | 选修的。附加配置参数。 |
元指令 | 绳子 | 选修的。 Markdown 格式的标签注释器说明。 |
元.disableSubmitConfirmation | 布尔 | 选修的。设置为 true 以禁用提交确认模式。 |
元多分类 | 布尔 | 选修的。设置为 true 以启用分类标签的多标签模式。 |
以下是一些示例文档,可以更好地了解这种输入格式
遵循此架构的文档将作为输入清单中的单独行项目提供给 Ground Truth。
输出文档格式
输出格式旨在轻松反馈到新的注释任务中。如果输入文档中也设置了可选字段,则输出文档中的可选字段也会被设置。输入和输出格式之间的唯一区别是 meta
目的。
领域 | Type | 产品描述 |
元拒绝 | 布尔 | 如果注释者拒绝此文档,则设置为 true。 |
元.rejectedReason | 绳子 | 注释者给出拒绝该文档的理由。 |
元符文 | 细绳[] | 包含输入文本中所有字符的符文数组。用于计算实体注释开始和结束偏移。 |
以下是已注释的示例输出文档:
符文注意事项:
在这种情况下,“符文”是文本中单个可突出显示的字符,包括表情符号等多字节字符。
- 由于不同的编程语言以不同的方式表示多字节字符,因此使用“符文”将每个可突出显示的字符定义为单个原子元素意味着我们有一种明确的方式来描述任何给定的文本选择。
- 例如,Python 将瑞典国旗视为四个字符:
但 JavaScript 将相同的表情符号视为两个字符
为了消除任何歧义,我们将把瑞典国旗(以及所有其他表情符号和多字节字符)视为单个原子元素。
- 偏移量:符文相对于输入文本的位置(从索引 0 开始)
使用 Ground Truth 执行 NER 注释
作为完全托管的数据标记服务,Ground Truth 为 ML 构建训练数据集。对于此用例,我们使用 Ground Truth 将文本文档集合发送给工作人员池进行注释。最后,我们审查质量。
可以将 Ground Truth 配置为使用新的 NER 工具作为自定义模板来构建数据标记作业。
具体来说,我们将:
- 创建私人标签员工队伍来执行注释任务
- 使用我们想要注释的文档创建一个 Ground Truth 输入清单,然后将其上传到 亚马逊简单存储服务(Amazon S3)
- 创建预标记任务和后标记任务 Lambda 函数
- 使用自定义 NER 模板创建 Ground Truth 标记作业
- 注释文档
- 审查结果
NER 工具资源
参考资源和示例文档的完整列表可以在下图中找到:
标记劳动力创建
Ground Truth 使用 SageMaker 标记劳动力来管理工人和分配任务。创建一个私人劳动力,一个名为 ner-worker-team 的工人团队,并使用以下中的说明将您自己分配到该团队 创建私人劳动力(Amazon SageMaker Console).
将自己添加到私人员工队伍并确认电子邮件后,请记下 AWS 管理控制台中的员工门户 URL:
- 导航
SageMaker
- 导航
Ground Truth → Labeling workforces
- 点击
Private
标签 - 记下网址
Labeling portal sign-in URL
登录工作人员门户以查看并开始处理标签任务。
输入清单
Ground Truth 输入数据清单是一个 JSON 行文件,其中每行包含一个工作任务。在我们的例子中,每一行将包含一个 JSON 编码的输入文档,其中包含我们要注释的文本和 NER 注释模式。
下载示例输入清单 reviews.manifest
止 https://assets.solutions-lab.ml/NER/0.2.1/sample-data/reviews.manifest
备注:输入清单中的每一行都需要一个顶级密钥 source
or source-ref
. 您可以在 使用输入清单文件 在 Amazon SageMaker 开发人员指南中。
将输入清单上传到 Amazon S3
使用 AWS 管理控制台或从命令行将此输入清单上传到 S3 存储桶,从而替换 your-bucket
具有实际的存储桶名称。
下载自定义工作人员模板
从以下位置下载 NER 工具自定义工作模板 https://assets.solutions-lab.ml/NER/0.2.1/worker-template.liquid.html 通过查看源代码并在本地保存内容,或从命令行:
创建预标记任务和后标记任务 Lambda 函数
下载示例预标记任务 Lambda 函数: smgt-ner-pre-labeling-task-lambda.py
止 https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-pre-labeling-task-lambda.py
下载示例预标记任务 Lambda 函数: smgt-ner-post-labeling-task-lambda.py
止 https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-post-labeling-task-lambda.py
- 从 AWS 管理控制台创建预标记任务 Lambda 函数:
- 导航
Lambda
- 选择
Create function
- 指定
Function name
assmgt-ner-pre-labeling-task-lambda
- 选择
Runtime
→Python 3.6
- 选择
Create function
- In
Function code
→lambda_hanadler.py
,粘贴内容smgt-ner-pre-labeling-task-lambda.py
- 选择
Deploy
- 导航
- 从 AWS 管理控制台创建标记后任务 Lambda 函数:
- 导航
Lambda
- 选择
Create function
- 指定
Function name
assmgt-ner-post-labeling-task-lambda
- 选择
Runtime
→Python 3.6
- 扩大
Change default execution role
- 选择
Create a new role from AWS policy templates
- 输入
Role name
:smgt-ner-post-labeling-task-lambda-role
- 选择
Create function
- 点击
Permissions
标签 - 点击
Role name
:smgt-ner-post-labeling-task-lambda-role
打开 IAM 控制台 - 向角色添加两个策略
- 选择
Attach policies
- 附上
AmazonS3FullAccess
政策 - 选择
Add inline policy
- 点击
JSON
标签 - 粘贴以下内联策略:
- 选择
- 导航回
smgt-ner-post-labeling-task-lambda
Lambda函数配置页面 - 点击
Configuration
标签 - In
Function code
→ 升ambda_hanadler.py
,粘贴内容smgt-ner-post-labeling-task-lambda.py
- 选择
Deploy
- 导航
创建 Ground Truth 标记作业
从 AWS 管理控制台:
- 导航到
Amazon SageMaker
服务 - 导航
Ground Truth
→Labeling Jobs
. - 选择
Create labeling job
- 指定一个
Job Name
- 选择
Manual Data Setup
- 指定您之前上传输入清单的输入数据集位置(例如,s
3://your-bucket/ner-input/sample-smgt-input-manifest.jsonl
) - 指定输出数据集位置以指向同一存储桶中的不同文件夹(例如,
s3://your-bucket/ner-output/
) - 指定一个
IAM Role
通过选择Create new role
- 通过选择允许此角色访问任何 S3 存储桶
S3 buckets you specify
→Any S3 bucket
创建策略时 - 在新的 AWS 管理控制台窗口中,打开
IAM
控制台并选择Roles
- 搜索您刚刚创建的角色的名称(例如,
AmazonSageMaker-ExecutionRole-20210301T154158
) - 选择角色名称即可在控制台中打开角色
- 附上以下三项政策:
- 选择附加策略
- 附上
AWSLambda_FullAccess
到角色 - 选择
Trust Relationships
→Edit Trust Relationships
- 编辑信任关系 JSON,
- 更换
YOUR_ACCOUNT_NUMBER
与您的数字 AWS 帐号,以读取: - 保存信任关系
- 通过选择允许此角色访问任何 S3 存储桶
- 返回上一个 AWS 管理控制台窗口中的新 Ground Truth 作业:下
Task Category
, 选择Custom
- 选择
Next
- 选择
Worker types
:Private
- 点击
Private team
:ner-worker-team
在上一节中创建的 - 在
Custom labeling task setup
文本区域,清除默认内容并粘贴worker-template.liquid.html
之前获得的文件 - 指定
Pre-labeling task Lambda function
与之前创建的函数:smgt-ner-pre-labeling
- 指定
Post-labeling task Lambda function
使用之前创建的函数:smgt-ner-post-labeling
- 选择
Create
注释文档
一旦创建了 Ground Truth 作业,我们就可以开始注释文档。打开之前创建的员工队伍的员工门户(在 AWS 管理控制台中,导航到 SageMaker
, Ground Truth → Labeling workforces
, Private
,然后打开 Labeling portal sign-in URL
)
登录并选择表中的第一个标注任务,然后选择“开始工作”以打开注释器。对所有三个示例文档执行注释并选择提交。
审查结果
当 Ground Truth 注释器完成任务时,结果将在输出 S3 存储桶中提供:
标签作业的所有任务完成后,综合输出可在 output.manifest
文件位于此处:
此输出清单是一个 JSON 行文件,每行一个带注释的文本文档,采用之前指定的“输出文档格式”。该文件与“输入文档格式”兼容,可以直接将其输入到后续的 Ground Truth 作业中以进行另一轮注释。或者,可以对其进行解析并将其发送到 ML 训练作业。我们可能使用第二轮注释的一些场景是:
- 将注释过程分为两个步骤,第一个注释器识别实体注释,第二个注释器绘制关系
- 采取我们的样本
output.manifest
并将其发送给第二个更有经验的注释者进行审查作为质量控制检查
自定义地面实况注释模板
本文档中描述的 NER 注释工具是作为自定义 Ground Truth 注释模板实现的。 AWS 客户可以使用此处的说明构建自己的自定义注释界面:
结论
通过合作,Booking.com 和 Amazon MLSL 能够开发出功能强大的文本注释工具,能够创建复杂的命名实体识别和关系注释。
我们鼓励具有 NER 文本注释用例的 AWS 客户尝试本文中描述的工具。如果您需要帮助加速 ML 在您的产品和服务中的使用,请联系 亚马逊机器学习解决方案实验室.
作者简介
丹诺布尔 是亚马逊的一名软件开发工程师,他帮助建立令人愉快的用户体验。 在业余时间,他喜欢阅读、锻炼和与家人一起冒险。
普诺尼斯 是 Amazon ML 解决方案实验室的一名深度学习架构师,他与各个垂直领域的客户合作,帮助他们加快云迁移之旅,并使用最先进的解决方案和技术解决他们的 ML 问题。
尼哈里卡·贾扬蒂 是 AWS 的前端工程师,她为 Amazon SageMaker 客户开发自定义注释解决方案。工作之余,她喜欢参观博物馆和锻炼身体。
阿米特·贝卡 是一名机器学习经理 Booking.com,在软件开发和机器学习方面拥有超过 15 年的经验。他对人类和语言着迷,而计算机仍然对这两者感到困惑。
- '
- 100
- 11
- 7
- 关于
- ACCESS
- 账号管理
- 基本会计和财务报表
- 横过
- 操作
- 增加
- 额外
- 所有类型
- Amazon
- 亚马逊机器学习
- 亚马逊SageMaker
- 歧义
- 分析
- 国家 / 地区
- 可使用
- 适用于所有人
- AWS
- 开始
- 作为
- 建立
- 建筑物
- 关心
- 例
- 分类
- 云端技术
- 码
- 采集
- 复杂
- 电脑
- 配置
- 考虑
- 安慰
- 内容
- Contents
- 可以
- 创造
- 危急
- 客户体验
- 合作伙伴
- data
- 深入学习
- 开发
- 开发商
- 研发支持
- 不同
- 文件
- 不会
- 容易
- 效果
- 邮箱地址
- 表情符号
- 鼓励
- 工程师
- 等
- 例子
- 执行
- 预计
- 体验
- 体验
- 家庭
- 美联储
- 反馈
- 字段
- 终于
- 姓氏:
- 运动健身
- 食品
- 格式
- 发现
- ,
- 功能
- GIF
- 去
- 客人
- 指南
- 帮助
- 帮助
- 此处
- 近期亮点
- 饭店
- 创新中心
- How To
- HTTPS
- IAM
- 实施
- 重要
- 包含
- 指数
- 个人
- IT
- JavaScript的
- 工作
- 旅程
- 键
- 标签
- 标签
- 语言
- 语言
- 大
- 领导
- 学习用品
- 学习
- 法律咨询
- Level
- 各级
- Line
- 友情链接
- 液体肥产线
- 清单
- 房源
- 当地
- 圖書分館的位置
- 寻找
- 机器学习
- 颠覆性技术
- 标记
- 市场
- 匹配
- 元
- 介意
- ML
- 模型
- 更多
- 博物馆
- 名称
- 自然语言
- 自然语言处理
- 打印车票
- NLP
- 数字
- 优惠精选
- 抵消
- 在线
- 打开
- 打开
- ZAP优势
- 其他名称
- 员工
- 短语
- 平台
- 平台
- 政策
- 政策
- 池
- 门户网站
- 大流行后
- 强大
- 车资
- 校长
- 私立
- 过程
- 热销产品
- 代码编程
- 编程语言
- 财产
- 提供
- 提供
- 蟒蛇
- 质量
- 题
- 阅读
- 关系
- 岗位要求
- 资源
- 资源
- RESTAURANT
- 成果
- 检讨
- 评论
- 房间数
- sagemaker
- 保存
- 鳞片
- 感
- 情绪
- 特色服务
- 集
- 短
- 简易
- So
- 软件
- 软件开发
- 解决方案
- 解决
- 太空
- 速度
- 开始
- 个人陈述
- 留
- 存储
- SUPPORT
- 目标
- 技术
- 次
- 一起
- 符号化
- 令牌
- 工具
- 最佳
- 顶级
- 跟踪时
- 传统
- 产品培训
- 旅行
- 治疗
- 对待
- 信任
- us
- 用户
- 折扣值
- 版本
- 查看
- 什么是
- 中
- 工作
- 工作
- 工人
- 劳动力
- 加工
- 锻炼
- 合作
- 世界
- 世界
- 将
- 年