使用 Amazon Comprehend 自定义分类器 PlatoBlockchain 数据智能自动对 IT 服务请求进行分类。 垂直搜索。 人工智能。

使用 Amazon Comprehend 自定义分类器自动分类 IT 服务请求

企业经常处理大量的 IT 服务请求。 传统上,请求者有责任为每个问题选择正确的类别。 工单的手动错误或错误分类通常意味着延迟解决 IT 服务请求。 这可能会导致生产力下降、客户满意度下降、对服务水平协议 (SLA) 的影响以及更广泛的运营影响。 随着企业的发展,将正确的服务请求发送给正确的团队的问题变得更加重要。 使用基于机器学习 (ML) 和人工智能的方法可以帮助您满足企业不断变化的需求。

监督机器学习是一个使用标记数据集和输出来训练学习算法如何分类数据或预测结果的过程。 亚马逊领悟 是一种自然语言处理 (NLP) 服务,它使用 ML 来发现文本中有价值的见解和联系。 它提供由 ML 提供支持的 API 来提取关键短语、实体、情绪分析等。

在这篇文章中,我们将向您展示如何实现一个有监督的 ML 模型,该模型可以帮助自动分类 IT 服务请求,使用 Amazon Comprehend 自定义分类. Amazon Comprehend 自定义分类可帮助您针对您的特定要求自定义 Amazon Comprehend,而无需具备构建基于 ML 的 NLP 解决方案所需的技能。 借助自动 ML 或 AutoML,Amazon Comprehend 自定义分类使用您提供的训练数据代表您构建自定义 NLP 模型。

解决方案概述

为了说明 IT 服务请求分类,此解决方案使用 SEOSS 数据集. 该数据集是一个系统检索的数据集,由 33 个开源软件项目组成,其中包含大量类型化的工件和它们之间的跟踪链接。 该解决方案使用来自最终用户报告的这 33 个开源项目的问题数据、摘要和描述来使用 Amazon Comprehend 构建自定义分类器模型。

这篇文章演示了如何使用 AWS云开发套件 (AWS CDK) 在一个隔离的 亚马逊虚拟私有云 (Amazon VPC) 环境,仅包含私有子网。 我们还使用代码来演示如何使用 AWS CDK 提供者框架, 一个用于实现提供者的迷你框架 AWS CloudFormation 用于创建、更新或删除自定义资源的自定义资源,例如 Amazon Comprehend 终端节点。 Amazon Comprehend 终端节点包括使您的自定义模型可用于对客户端计算机或第三方应用程序进行实时推理的托管资源。 这 此解决方案的代码 可以在 Github 上找到。

您使用 AWS CDK 为解决方案部署基础设施、应用程序代码和配置。 您还需要一个 AWS 账户和创建 AWS 资源的能力。 您使用 AWS CDK 创建 AWS 资源,例如具有私有子网的 VPC, Amazon VPC 终端节点, 亚马逊弹性文件系统 (亚马逊 EFS),一个 亚马逊简单通知服务 (Amazon SNS) 主题,一个 亚马逊简单存储服务 (Amazon S3) 存储桶, Amazon S3 事件通知AWS Lambda 功能。 这些 AWS 资源共同构成了训练堆栈,您可以使用它来构建和训练自定义分类器模型。

创建这些 AWS 资源后,您下载 SEOSS 数据集并将数据集上传到解决方案创建的 S3 存储桶。 如果您在 AWS 区域 us-east-2 中部署此解决方案,则 S3 存储桶名称的格式为 comprehendcustom--us-east-2-s3stack. 该解决方案使用 Amazon S3 分段上传触发器调用 Lambda 函数,该函数开始对输入数据进行预处理,并使用预处理后的数据训练 Amazon Comprehend 自定义分类器以创建自定义分类器模型。 然后,您使用自定义分类器模型的 Amazon 资源名称 (ARN) 创建推理堆栈,从而使用 AWS CDK 创建一个 Amazon Comprehend 终端节点 提供者框架,然后您可以将其用于来自第三方应用程序或客户端计算机的推理。

下图说明了训练堆栈的架构。

工作流程步骤如下:

  1. 将 SEOSS 数据集上传到作为训练堆栈部署过程的一部分创建的 S3 存储桶。 这将创建一个事件触发器,该触发器调用 etl_lambda 功能。
  2. etl_lambda 函数将原始数据集从 Amazon S3 下载到 Amazon EFS。
  3. etl_lambda 函数执行 SEOSS 数据集的数据预处理任务。
  4. 当函数执行完成时,它会上传转换后的数据 prepped_data S3 存储桶的前缀。
  5. 转换后的数据上传完成后,将向 Amazon SNS 发送成功的 ETL 完成消息。
  6. 在 Amazon Comprehend 中,您可以使用两种模式对文档进行分类:多类或多标签。 多类模式为每个文档识别一个且仅一个类,多标签模式为每个文档识别一个或多个标签。 因为我们想为每个文档识别一个类,所以我们在多类模式下训练自定义分类器模型。 Amazon SNS 触发 train_classifier_lambda 函数,它以多类模式启动 Amazon Comprehend 分类器训练。
  7. train_classifier_lambda 函数启动 Amazon Comprehend 自定义分类器训练。
  8. Amazon Comprehend 从 prepped_data Amazon S3 中的前缀来训练自定义分类器模型。
  9. 模型训练完成后,Amazon Comprehend 会上传 model.tar.gz 文件到 output_data S3 存储桶的前缀。 训练此自定义分类器模型的平均完成时间约为 10 小时。
  10. Amazon S3 上传触发器调用 extract_comprehend_model_name_lambda 函数,用于检索自定义分类器模型 ARN。
  11. 该函数从 S3 事件负载和响应中提取自定义分类器模型 ARN list-document-classifiers 呼叫。
  12. 该函数将自定义分类器模型 ARN 发送到您之前在训练堆栈创建过程中订阅的电子邮件地址。 然后,您使用此 ARN 部署推理堆栈。

此部署创建推理堆栈,如下图所示。 推理堆栈为您提供了一个 REST API,由 AWS身份和访问管理 (IAM) 授权方,然后您可以使用它根据第三方应用程序或客户端计算机提供的输入文本生成标签的置信度分数。

推理堆栈架构

先决条件

对于此演示,您应该具备以下先决条件:

  • An AWS账户.
  • Python 3.7 或更高版本, Node.js的混帐 在开发机器中。 AWS CDK 使用特定版本的 Node.js(>=10.13.0,版本 13.0.0 – 13.6.0 除外)。 建议使用有效长期支持 (LTS) 版本。
    要安装 Node.js 的活动 LTS 版本,您可以使用以下命令 安装脚本 nvm 并使用 nvm安装 Node.js LTS 版本。 您还可以通过包管理器安装当前活动的 LTS Node.js,具体取决于您选择的操作系统。

    对于 macOS,您可以使用以下命令通过包管理器安装 Node.js 说明.

    对于 Windows,您可以使用以下命令通过包管理器安装 Node.js 说明.

  • 如果您使用的是预装 AWS CDK v2 AWS 云9 IDE。 如果您使用的是 AWS Cloud9 IDE,则可以跳过此步骤。如果您没有在开发机器中安装 AWS CDK,请使用 Node Package Manager 命令全局安装 AWS CDK v2 npm install -g aws-cdk. 此步骤需要在开发机器中安装 Node.js。
  • 配置您的 AWS 凭证以使用 AWS CDK 访问和创建 AWS 资源。 有关说明,请参阅 指定凭据和区域.
  • 下载 SEOSS 数据集 由 33 个开源软件项目的需求、错误报告、代码历史记录和跟踪链接组成。 保存文件 dataverse_files.zip 在本地计算机上。

SEOSS 数据集

部署 AWS CDK 训练堆栈

对于 AWS CDK 部署,我们从训练堆栈开始。 完成以下步骤:

  1. 克隆GitHub仓库:
$ git clone https://github.com/aws-samples/amazon-comprehend-custom-automate-classification-it-service-request.git

  1. 导航到 amazon-comprehend-custom-automate-classification-it-service-request 文件夹:
$ cd amazon-comprehend-custom-automate-classification-it-service-request/

以下所有命令都在 amazon-comprehend-custom-automate-classification-it-service-request 目录。

  1. 在 amazon-comprehend-custom-automate-classification-it-service-request 目录中,初始化 Python 虚拟环境并使用 pip 安装 requirements.txt:
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt

  1. 如果您是第一次在特定 AWS 账户和区域中使用 AWS CDK,请参阅相关说明 引导您的 AWS CDK 环境:
$ cdk bootstrap aws:///

  1. 使用此解决方案合成 CloudFormation 模板 cdk synth 并使用 cdk deploy 创建前面提到的 AWS 资源:
$ cdk synth
$ cdk deploy VPCStack EFSStack S3Stack SNSStack ExtractLoadTransformEndPointCreateStack --parameters SNSStack:emailaddressarnnotification=

进入后 cdk deploy,AWS CDK 会提示您是否要为在 cdk deploy 命令中调用的每个堆栈部署更改。

  1. 输入 y 对于每个堆栈创建提示,cdk deploy 步骤会创建这些堆栈。 将您提供的电子邮件地址订阅到作为 cdk 部署的一部分创建的 SNS 主题。
  2. cdk deploy 成功完成后,创建一个名为 raw_data 在 S3 存储桶中 comprehendcustom---s3stack.
  3. 上传 SEOSS 数据集 dataverse_files.zip 您之前下载到此文件夹的文件。

上传完成后,解决方案调用 etl_lambda 函数使用 Amazon S3 事件触发器来启动提取、转换和加载 (ETL) 过程。 ETL 过程成功完成后,将向 SNS 主题发送一条消息,该主题调用 train_classifier_lambda 功能。 此函数触发 Amazon Comprehend 自定义分类器模型训练。 根据您是否在完整的 SEOSS 数据集上训练模型,训练可能需要长达 10 小时。 训练过程完成后,Amazon Comprehend 会上传 model.tar.gz 文件到 output_data S3 存储桶中的前缀。

此上传触发 extract_comprehend_model_name_lambda 函数使用 S3 事件触发器提取自定义分类器模型 ARN 并将其发送到您之前订阅的电子邮件地址。 然后使用此自定义分类器模型 ARN 创建推理堆栈。 模型训练完成后,您可以通过导航到 Amazon Comprehend 控制台中的版本详细信息部分(参见以下屏幕截图)或使用 Amazon Comprehend 查看自定义分类器模型的性能指标 Boto3 SDK.

绩效指标

部署 AWS CDK 推理堆栈

现在您已准备好部署推理堆栈。

  1. 从您收到的电子邮件中复制自定义分类器模型 ARN 并使用以下内容 cdk deploy 命令来创建推理堆栈。

此命令部署由 IAM 授权方保护的 API Gateway REST API,您可以使用该 API 与仅具有 execute-api:Invoke IAM 权限的 AWS 用户 ID 或 IAM 角色进行推理。 以下 cdk deploy 命令部署推理堆栈。 此堆栈使用 AWS CDK 提供者框架 将 Amazon Comprehend 终端节点创建为自定义资源,以便使用 cdk deploy 和 cdk destroy 命令在推理堆栈生命周期中创建、删除和更新 Amazon Comprehend 终端节点。

因为您需要在模型训练完成后运行以下命令,这可能需要长达 10 个小时,所以请确保您处于您在前面的步骤中初始化的 Python 虚拟环境中,并且在 amazon-comprehend-custom-automate-classification-it-service-request 目录:

$ cdk deploy APIGWInferenceStack --parameters APIGWInferenceStack:documentclassifierarn=

例如:

$ cdk deploy APIGWInferenceStack --parameters APIGWInferenceStack:documentclassifierarn=arn:aws:comprehend:us-east-2:111122223333:document-classifier/ComprehendCustomClassifier-11111111-2222-3333-4444-abc5d67e891f/version/v1

  1. 之后 cdk deploy 命令成功完成,复制 APIGWInferenceStack.ComprehendCustomClassfierInvokeAPI 来自控制台输出的值,并使用此 REST API 从客户端机器或第三方应用程序生成推论 execute-api:Invoke IAM 特权。 如果您在 us-east-2 中运行此解决方案,则此 REST API 的格式为 https://.execute-api.us-east-2.amazonaws.com/prod/invokecomprehendV1.

或者,您可以使用测试客户端 apiclientinvoke.py 从 GitHub 存储库向自定义分类器模型发送请求。 在使用 apiclientinvoke.py 之前,请确保满足以下先决条件:

  • 你有 boto3requests 在客户端机器上使用 pip 安装的 Python 包。
  • 您已配置 Boto3 凭据。 默认情况下,测试客户端假定存在名为 default 的配置文件,并且它具有 execute-api:Invoke 对 REST API 的 IAM 权限。
  • SigV4Auth 指向部署 REST API 的区域。 更新 价值 us-east-2 in apiclientinvoke.py 如果您的 REST API 部署在 us-east-2 中。
  • 您已分配 raw_data 带有您要对其进行类预测或分类请求的文本的变量:
raw_data="""Spark is a unified analytics engine for large-scale data processing. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis."""

  • 您已分配 restapi 使用之前复制的 REST API 的变量:

restapi="https://.execute-api.us-east-2.amazonaws.com/prod/invokecomprehendV1"

  1. 运行 apiclientinvoke.py 在前面的更新之后:
$ python3 apiclientinvoke.py

您会从自定义分类器模型中获得以下响应:

{
 "statusCode": 200,
 "body": [
	{
	 "Name": "SPARK",
	 "Score": 0.9999773502349854
	},
	{
	 "Name": "HIVE",
	 "Score": 1.1613215974648483e-05
	},
	{
	 "Name": "DROOLS",
	 "Score": 1.1110682862636168e-06
	}
   ]
}

Amazon Comprehend 返回其正确归因的每个标签的置信度分数。 如果服务对某个标签的置信度很高,则分数会更接近 1。因此,对于使用 SEOSS 数据集训练的 Amazon Comprehend 自定义分类器模型,自定义分类器模型预测文本属于 SPARK 类。 然后,Amazon Comprehend 自定义分类器模型返回的该分类可用于对 IT 服务请求进行分类或预测 IT 服务请求的正确类别,从而减少人工错误或服务请求的错误分类。

清理

要清理本文中创建的作为训练堆栈和推理堆栈的一部分创建的所有资源,请使用以下命令。 此命令删除作为先前 cdk deploy 命令的一部分创建的所有 AWS 资源:

$ cdk destroy --all

结论

在这篇文章中,我们向您展示了企业如何使用 Amazon Comprehend 自定义分类来实施受监督的 ML 模型,以根据最终用户提交的请求的主题或描述来预测 IT 服务请求的类别。 构建和训练自定义分类器模型后,您可以通过创建端点运行自定义分类的实时分析。 将此模型部署到 Amazon Comprehend 终端节点后,它可用于运行第三方应用程序或其他客户端机器(包括 IT 服务管理工具)的实时推理。 然后,您可以使用此推断来预测缺陷类别并减少人工错误或故障单的错误分类。 这有助于减少故障单解决的延迟,提高解决方案的准确性和客户工作效率,最终提高客户满意度。

您可以将本文中的概念扩展到其他用例,例如将业务或 IT 工单路由到各种内部团队,例如业务部门、客户服务代理和 2/3 层 IT 支持,由最终用户或通过自动化创建方法。

参考资料

  • 拉斯,迈克尔; Mäder, Patrick,2019,“SEOSS 数据集——整个项目的需求、错误报告、代码历史和跟踪链接”, https://doi.org/10.7910/DVN/PDDZ4Q,哈佛数据宇宙,V1

作者简介

使用 Amazon Comprehend 自定义分类器 PlatoBlockchain 数据智能自动对 IT 服务请求进行分类。 垂直搜索。 人工智能。阿纳卜·查克拉博蒂 是 AWS 的高级解决方案架构师,位于俄亥俄州辛辛那提市。 他对企业和解决方案架构、数据分析、无服务器和机器学习等主题充满热情。 在业余时间,他喜欢看电影、旅游节目和运动。

病毒使用 Amazon Comprehend 自定义分类器 PlatoBlockchain 数据智能自动对 IT 服务请求进行分类。 垂直搜索。 人工智能。 德赛 是 AWS 的首席解决方案架构师。 他拥有超过 25 年的信息技术经验,一直在帮助客户采用 AWS 并对其架构进行现代化改造。 他喜欢徒步旅行,喜欢与客户深入探讨 AWS 的所有问题。

时间戳记:

更多来自 AWS机器学习