使用 Amazon Comprehend 自定义分类构建分类管道(第 I 部分)


“对于知道如何使用这些数据的公司来说,锁定在文本、音频、社交媒体和其他非结构化来源中的数据可以成为竞争优势”

仅有 18% 的组织 德勤 2019 年调查 据报道能够利用非结构化数据。 80% 和 90% 之间的大部分数据都是非结构化数据。这是一个巨大的未开发资源,如果企业能够找到如何使用它,就有可能为企业带来竞争优势。从这些数据中找到见解可能很困难,特别是在需要对其进行分类、标记或标记的情况下。 Amazon Comprehend 自定义分类在这种情况下会很有用。 Amazon Comprehend 是一项自然语言处理 (NLP) 服务,它使用机器学习来发现文本中有价值的见解和联系。

文档分类或分级在整个业务领域具有显着的好处 –

  • 改进的搜索和检索 – 通过将文档分类为相关主题或类别,用户可以更轻松地搜索和检索所需的文档。他们可以在特定类别内搜索以缩小结果范围。
  • 知识管理 – 以系统的方式对文档进行分类有助于组织组织的知识库。它可以更轻松地查找相关信息并查看相关内容之间的联系。
  • 简化的工作流程 – 自动文档排序可以帮助简化许多业务流程,例如处理发票、客户支持或法规遵从性。文档可以自动发送给正确的人员或工作流程。
  • 节省成本和时间 – 手动文档分类繁琐、耗时且昂贵。人工智能技术可以接管这项平凡的任务,并在短时间内以低得多的成本对数千份文档进行分类。
  • 洞察力一代 – 分析文档类别的趋势可以提供有用的业务见解。例如,某个产品类别中客户投诉的增加可能表明存在一些需要解决的问题。
  • 治理和政策执行 – 设置文档分类规则有助于确保根据组织的策略和治理标准对文档进行正确分类。这可以更好地进行监控和审计。
  • 个性化体验 – 在网站内容等上下文中,文档分类允许根据用户的浏览行为确定的兴趣和偏好向用户显示定制内容。这可以提高用户参与度。

开发定制分类机器学习模型的复杂性取决于数据质量、算法、可扩展性和领域知识等多个方面。必须从清晰的问题定义、干净且相关的数据开始,然后逐步完成模型开发的不同阶段。不过,企业可以使用 Amazon Comprehend 自定义分类创建自己独特的机器学习模型,自动将文本文档分类为类别或标签,以满足业务特定要求并映射到业务技术和文档类别。由于不再需要人工标记或分类,这可以为企业节省大量时间、金钱和劳动力。我们通过自动化整个训练流程使这个过程变得简单。

在这篇多系列博客文章的第一部分中,您将学习如何创建可扩展的训练管道并为 Comprehend 自定义分类模型准备训练数据。我们将引入一个自定义分类器训练管道,只需单击几下即可将其部署在您的 AWS 账户中。我们正在使用 BBC 新闻数据集,并将训练一个分类器来识别文档所属的类别(例如政治、体育)。该管道将使您的组织能够快速响应变化并训练新模型,而不必每次都从头开始。您可以根据您的需求轻松扩展和训练多个模型。

先决条件

  • 一个有效的 AWS 账户(单击此处创建新的 AWS 账户)
  • 访问 Amazon Comprehend、Amazon S3、Amazon Lambda、Amazon Step Function、Amazon SNS 和 Amazon CloudFormation
  • 下一节准备的训练数据(半结构或文本)
  • 有关 Python 和机器学习的一般基础知识

准备训练数据

该解决方案可以将输入作为 文本格式 (例如 CSV)或 半结构化格式 (例如 PDF)。

文字输入

Amazon Comprehend 自定义分类支持两种模式:多类和多标签。

在多类模式下,每个文档只能分配一个类。训练数据应准备为两列 CSV 文件,文件的每一行包含一个类和演示该类的文档文本。

类别,文档 1 的文本 类别,文档 2 的文本 ...

示例 BBC 新闻数据集:

商业、欧洲因美元疲软而归咎于美国……科技、出租车收集了大量手机……

在多标签模式下,每个文档至少分配有一个类,但可以有更多类。训练数据应为两列 CSV 文件,文件的每一行包含一个或多个类以及训练文档的文本。应通过在每个类之间使用分隔符来指示多个类。

CLASS,文档 1 的文本 CLASS|CLASS|CLASS,文档 2 的文本 ...

对于任何一种训练模式,CSV 文件中均不应包含任何标头。

半结构化输入

从 2023 年开始,Amazon Comprehend 现在支持使用半结构化文档的训练模型。半结构输入的训练数据由一组标记文档组成,这些文档可以是您已有权访问的文档存储库中预先识别的文档。以下是训练所需的注释文件 CSV 数据的示例(样本数据):

类,文档1.pdf,1 类,文档1.pdf,2 ...

注释 CSV 文件包含三列:第一列包含文档的标签,第二列是文档名称(即文件名),最后一列是要包含在文档中的页码。训练数据集。在大多数情况下,如果注释 CSV 文件与所有其他文档位于同一文件夹中,则您只需在第二列中指定文档名称。但是,如果 CSV 文件位于不同位置,则您需要在第二列中指定位置路径,例如 路径/到/前缀/document1.pdf.

有关如何准备训练数据的详细信息,请参阅此处。

解决方案概述

ML14789 1 张图片 1

  1. 当训练数据(用于文本输入的 .csv 文件和用于半结构输入的注释 .csv 文件)上传到专用的 Amazon Simple Storage Service (Amazon S3) 存储桶时,Amazon Comprehend 训练管道启动。
  2. AWS Lambda 函数由 Amazon S3 触发器调用,以便每次将对象上传到指定的 Amazon S3 位置时,AWS Lambda 函数都会检索源存储桶名称和上传对象的键名称,并将其传递到训练步骤函数工作流程。
  3. 在训练步骤函数中,收到训练数据存储桶名称和对象键名称作为输入参数后,自定义模型训练工作流程将作为一系列 lambda 函数启动,如下所述:
    1. 开始理解训练:此 AWS Lambda 函数定义了一个 理解分类器 对象,具体取决于输入文件的类型(即文本或半结构化),然后通过调用启动 Amazon Comprehend 自定义分类训练任务 创建文档分类器 应用程序编程接口 (API),返回训练作业 Amazon 资源名称 (ARN) 。随后,该函数通过调用来检查训练作业的状态 描述文档分类器 API。最后,它返回训练作业 ARN 和作业状态,作为训练工作流程下一阶段的输出。
    2. 获取培训工作状态:此 AWS Lambda 每 15 分钟检查一次训练作业的作业状态,方法是调用 描述文档分类器 API,直到训练作业状态更改为“完成”或“失败”。
    3. 生成多类 或者 生成多标签: 如果您选择 是的 对于启动堆栈时的性能报告,这两个 AWS Lambda 之一将根据您的 Amazon Comprehend 模型输出运行分析,生成每个类的性能分析并将其保存到 Amazon S3。
    4. 生成多类:如果您的输入是,则将调用此 AWS Lambda 多类 然后你选择 是的 用于绩效报告。
    5. 生成多标签:如果您的输入是,则将调用此 AWS Lambda 多标签 然后你选择 是的 用于绩效报告。
  4. 训练成功完成后,解决方案会生成以下输出:
    1. 自定义分类模型:您的帐户中将提供经过训练的模型 ARN,用于将来的推理工作。
    2. 混淆矩阵 [选项l]:混淆矩阵(混淆矩阵.json) 将在用户定义的输出 Amazon S3 路径中可用,具体取决于用户选择。
    3. Amazon Simple Notification Service 通知 [选项l]:根据初始用户选择,将向订阅者发送有关培训作业状态的通知电子邮件。

演练

启动解决方案

要部署管道,请完成以下步骤:

  1. 选择 启动堆栈 按钮:

ML14789 1 图片 3

  1. 选择下一步

ML14789 1 张图片 4

  1. 使用适合您的用例的选项指定管道详细信息:

ML14789 1 张图片 5

每个堆栈详细信息的信息:

  • 堆栈名称(必填) – 您为此 AWS CloudFormation 堆栈指定的名称。该名称在您创建它的区域中必须是唯一的。
  • Q01ClassifierInputBucketName(必填) – 用于存储输入数据的 Amazon S3 存储桶名称。它应该是全局唯一的名称,AWS CloudFormation 堆栈可帮助您在启动存储桶时创建存储桶。
  • Q02ClassifierOutputBucketName(必填) – 用于存储 Amazon Comprehend 和管道输出的 Amazon S3 存储桶名称。它也应该是一个全球唯一的名称。
  • Q03输入格式 – 下拉选择,您可以选择 文本 (如果您的训练数据是 csv 文件)或 半结构 (如果您的训练数据是半结构的[例如PDF文件])基于您的数据输入格式。
  • Q04语言 – 下拉选项,从支持的列表中选择文档的语言。请注意,如果您的输入格式是半结构化的,目前仅支持英语。
  • Q05多类别 – 下拉选择,选择 是的 如果您的输入是 MultiClass 模式。否则,选择 .
  • Q06标签分隔符 – 仅当您的 Q05MultiClass 答案是时才需要 。该分隔符在训练数据中用于分隔每个类别。
  • Q07验证数据集 – 下拉选择,将答案更改为 是的 如果您想用自己的测试数据测试经过训练的分类器的性能。
  • Q08S3验证路径 – 仅当您的 Q07ValidationDataset 答案是时才需要 是的.
  • Q09业绩报告 – 下拉选择,选择 是的 如果您想在模型训练后生成班级级别的绩效报告。该报告将保存在您在 Q02ClassifierOutputBucketName 中指定的输出存储桶中。
  • Q10邮件通知 – 下拉选择。选择 是的 如果您想在模型训练后收到通知。
  • Q11邮箱ID – 输入用于接收绩效报告通知的有效电子邮件地址。请注意,启动 AWS CloudFormation 堆栈后,您必须通过电子邮件确认订阅,然后才能在培训完成时收到通知。
  1. 在 Amazon 配置堆栈选项部分中,添加可选标签、权限和其他高级设置。

ML14789 1 张图片 6

  1. 选择 下一个
  2. 查看堆栈详细信息并选择我确认 AWS CloudFormation 可能会创建 AWS IAM 资源。

ML14789 1 张图片 7

  1. 选择 提交。这将在您的 AWS 账户中启动管道部署。
  2. 堆栈部署成功后,就可以开始使用管道了。创建一个 /训练数据 您指定的 Amazon S3 位置下的文件夹用于输入。注意:除非您指定不同的加密选项,否则 Amazon S3 会自动为每个新对象应用服务器端加密 (SSE-S3)。有关 Amazon S3 中的数据保护和加密的更多详细信息,请参阅 Amazon S3 中的数据保护。

ML14789 1 张图片 8 1

  1. 将您的训练数据上传到该文件夹。 (如果训练数据是半结构化数据,则先上传所有PDF文件,然后再上传.csv格式标签信息)。

你完成了!您已成功部署管道,您可以在已部署的步骤函数中检查管道状态。 (您的 Amazon Comprehend 自定义分类面板中将有一个经过训练的模型)。

ML14789 1 张图片 9 1

如果您在 Amazon Comprehend 控制台中选择模型及其版本,那么您现在可以查看有关刚刚训练的模型的更多详细信息。它包括您选择的模式(对应于选项 Q05MultiClass)、标签数量以及训练数据中训练和测试文档的数量。您还可以检查下面的整体表现;但是,如果您想检查每个类的详细性能,请参阅已部署管道生成的性能报告。

服务配额

如果输入采用半结构格式,您的 AWS 账户具有 Amazon Comprehend 和 AmazonTextract 的默认配额。要查看服务配额,请参阅此处的 Amazon Comprehend 和此处的 AmazonTextract。

清理

为避免产生持续费用,请在完成后删除您在此解决方案中创建的资源。

  1. 在 Amazon S3 控制台上,手动删除您为输入和输出数据创建的存储桶内的内容。
  2. 在 AWS CloudFormation 控制台上,选择 堆栈 在导航窗格中。
  3. 选择主堆栈并选择 删除.

ML14789 1 张图片 10 1

这会自动删除已部署的堆栈。

  1. 您经过训练的 Amazon Comprehend 自定义分类模型将保留在您的账户中。如果您不再需要它,请在 Amazon Comprehend 控制台中删除创建的模型。

结论

在这篇文章中,我们向您展示了 Amazon Comprehend 自定义分类模型的可扩展训练管道的概念,并提供了有效训练新模型的自动化解决方案。提供的 AWS CloudFormation 模板使您可以轻松创建自己的文本分类模型,以满足需求规模。该解决方案采用最近宣布的 Euclid 功能,并接受文本或半结构化格式的输入。

现在,我们鼓励您,我们的读者,测试这些工具。您可以找到有关训练数据准备的更多详细信息并了解自定义分类器指标。尝试一下,亲眼看看它如何简化模型训练过程并提高效率。请与我们分享您的反馈!


关于作者

斯格格夫桑迪普·辛格 是 AWS 专业服务的高级数据科学家。他热衷于通过开发最先进的人工智能/机器学习驱动的解决方案来帮助客户创新并实现其业务目标。他目前专注于生成式人工智能、法学硕士、即时工程以及跨企业扩展机器学习。他带来了最新的人工智能进步,为客户创造价值。

扎尼亚尼 100张艳艳 是 AWS 专业服务能源交付团队的高级数据科学家。她热衷于利用人工智能/机器学习知识帮助客户解决实际问题。最近,她的重点是探索生成式人工智能和法学硕士的潜力。工作之余,她喜欢旅行、锻炼和探索新事物。

克里克塔鲁克达尔瑞克·塔卢克达尔 是 Amazon Comprehend Service 团队的高级架构师。他与 AWS 客户合作,帮助他们大规模采用机器学习。工作之余,他喜欢阅读和摄影。



来源链接

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

zh_CNChinese