Automatize a classificação de solicitações de serviços de TI com um classificador personalizado PlatoBlockchain Data Intelligence do Amazon Comprehend. Pesquisa vertical. Ai.

Automatize a classificação de solicitações de serviço de TI com um classificador personalizado do Amazon Comprehend

As empresas geralmente lidam com grandes volumes de solicitações de serviços de TI. Tradicionalmente, o ônus é colocado no solicitante para escolher a categoria correta para cada problema. Um erro manual ou classificação incorreta de um ticket geralmente significa um atraso na resolução da solicitação de serviço de TI. Isso pode resultar em produtividade reduzida, diminuição na satisfação do cliente, impacto nos acordos de nível de serviço (SLAs) e impactos operacionais mais amplos. À medida que sua empresa cresce, o problema de obter a solicitação de serviço certa para a equipe certa se torna ainda mais importante. Usar uma abordagem baseada em aprendizado de máquina (ML) e inteligência artificial pode ajudar com as necessidades em constante evolução de sua empresa.

O ML supervisionado é um processo que usa conjuntos de dados e saídas rotulados para treinar algoritmos de aprendizado sobre como classificar dados ou prever um resultado. Amazon Comprehend é um serviço de processamento de linguagem natural (NLP) que usa ML para descobrir informações e conexões valiosas no texto. Ele fornece APIs com tecnologia de ML para extrair frases-chave, entidades, análise de sentimentos e muito mais.

Neste post, mostramos como implementar um modelo de ML supervisionado que pode ajudar a classificar solicitações de serviço de TI automaticamente usando Classificação personalizada Amazon Comprehend. A classificação personalizada do Amazon Comprehend ajuda você a personalizar o Amazon Comprehend para seus requisitos específicos sem o conjunto de habilidades necessário para criar soluções de NLP baseadas em ML. Com ML automático, ou AutoML, a classificação personalizada do Amazon Comprehend cria modelos de NLP personalizados em seu nome, usando os dados de treinamento que você fornece.

Visão geral da solução

Para ilustrar a classificação da solicitação de serviço de TI, esta solução usa o Conjunto de dados SEOSS. Esse conjunto de dados é um conjunto de dados recuperado sistematicamente que consiste em 33 projetos de software de código aberto que contém um grande número de artefatos tipados e links de rastreamento entre eles. Esta solução usa os dados de problemas desses 33 projetos de código aberto, resumos e descrições conforme relatados pelos usuários finais para criar um modelo de classificador personalizado usando o Amazon Comprehend.

Este post demonstra como implementar e implantar a solução usando o Kit de desenvolvimento em nuvem da AWS (AWS CDK) de forma isolada Nuvem virtual privada da Amazon (Amazon VPC) que consiste apenas em sub-redes privadas. Também usamos o código para demonstrar como você pode usar o AWS CDK estrutura do provedor, um mini-framework para implementação de um provedor de Formação da Nuvem AWS recursos personalizados para criar, atualizar ou excluir um recurso personalizado, como um endpoint do Amazon Comprehend. O endpoint do Amazon Comprehend inclui recursos gerenciados que disponibilizam seu modelo personalizado para inferência em tempo real para uma máquina cliente ou aplicativos de terceiros. o código para esta solução está disponível no Github.

Você usa o AWS CDK para implantar a infraestrutura, o código do aplicativo e a configuração da solução. Você também precisa de uma conta da AWS e da capacidade de criar recursos da AWS. Você usa o AWS CDK para criar recursos da AWS, como uma VPC com sub-redes privadas, Endpoints da Amazon VPC, Sistema de arquivos elástico da Amazon (Amazon EFS), um Serviço de notificação simples da Amazon (Amazon SNS), um Serviço de armazenamento simples da Amazon (Amazon S3) balde, Notificações de eventos do Amazon S3 e AWS Lambda funções. Coletivamente, esses recursos da AWS constituem a pilha de treinamento, que você usa para criar e treinar o modelo de classificador personalizado.

Depois de criar esses recursos da AWS, você faz download do conjunto de dados SEOSS e carrega o conjunto de dados no bucket do S3 criado pela solução. Se você estiver implantando esta solução na região da AWS us-east-2, o formato do nome do bucket do S3 será comprehendcustom--us-east-2-s3stack. A solução usa o gatilho de multi-part upload do Amazon S3 para invocar uma função do Lambda que inicia o pré-processamento dos dados de entrada e usa os dados pré-processados ​​para treinar o classificador personalizado do Amazon Comprehend para criar o modelo de classificador personalizado. Em seguida, você usa o nome de recurso da Amazon (ARN) do modelo de classificador personalizado para criar a pilha de inferência, que cria um endpoint do Amazon Comprehend usando o AWS CDK estrutura do provedor, que você pode usar para inferências de um aplicativo de terceiros ou máquina cliente.

O diagrama a seguir ilustra a arquitetura da pilha de treinamento.

As etapas do fluxo de trabalho são as seguintes:

  1. Carregue o conjunto de dados SEOSS no bucket do S3 criado como parte do processo de implantação da pilha de treinamento. Isso cria um gatilho de evento que invoca o etl_lambda função.
  2. A etl_lambda A função baixa o conjunto de dados brutos do Amazon S3 para o Amazon EFS.
  3. A etl_lambda A função executa a tarefa de pré-processamento de dados do conjunto de dados SEOSS.
  4. Quando a execução da função é concluída, ela carrega os dados transformados com prepped_data prefixo para o bucket do S3.
  5. Após a conclusão do upload dos dados transformados, uma mensagem de conclusão de ETL bem-sucedida é enviada ao Amazon SNS.
  6. No Amazon Comprehend, você pode classificar seus documentos usando dois modos: multiclasse ou multirótulo. O modo multiclasse identifica uma e apenas uma classe para cada documento e o modo multi-rótulo identifica um ou mais rótulos para cada documento. Como queremos identificar uma única classe para cada documento, treinamos o modelo de classificador personalizado no modo multiclasse. O Amazon SNS aciona o train_classifier_lambda função, que inicia o treinamento do classificador do Amazon Comprehend em um modo multiclasse.
  7. A train_classifier_lambda A função inicia o treinamento do classificador personalizado do Amazon Comprehend.
  8. O Amazon Comprehend faz download dos dados transformados do prepped_data prefix no Amazon S3 para treinar o modelo de classificador personalizado.
  9. Quando o treinamento do modelo é concluído, o Amazon Comprehend carrega o model.tar.gz arquivo para o output_data prefixo do bucket do S3. O tempo médio de conclusão para treinar esse modelo de classificador personalizado é de aproximadamente 10 horas.
  10. O gatilho de upload do Amazon S3 invoca o extract_comprehend_model_name_lambda função, que recupera o ARN do modelo de classificador personalizado.
  11. A função extrai o ARN do modelo de classificador personalizado da carga útil do evento S3 e a resposta de list-document-classifiers ligar.
  12. A função envia o ARN do modelo de classificador personalizado para o endereço de e-mail que você assinou anteriormente como parte do processo de criação da pilha de treinamento. Em seguida, você usa esse ARN para implantar a pilha de inferência.

Essa implantação cria a pilha de inferência, conforme mostrado na figura a seguir. A pilha de inferência fornece uma API REST protegida por um Gerenciamento de acesso e identidade da AWS (IAM) autorizador, que você pode usar para gerar pontuações de confiança dos rótulos com base no texto de entrada fornecido de um aplicativo de terceiros ou máquina cliente.

Arquitetura de pilha de inferência

Pré-requisitos

Para esta demonstração, você deve ter os seguintes pré-requisitos:

  • An Conta da AWS.
  • Python 3.7 ou posterior, Node.js e Git na máquina de desenvolvimento. O AWS CDK usa versões específicas do Node.js (>=10.13.0, exceto para a versão 13.0.0 – 13.6.0). Uma versão em suporte ativo de longo prazo (LTS) é recomendada.
    Para instalar a versão LTS ativa do Node.js, você pode usar o seguinte instalar script para nvm E use nvm para instalar a versão LTS do Node.js. Você também pode instalar o LTS Node.js ativo atual por meio do gerenciador de pacotes, dependendo do sistema operacional de sua escolha.

    Para macOS, você pode instalar o Node.js por meio do gerenciador de pacotes usando o seguinte instruções.

    Para Windows, você pode instalar o Node.js por meio do gerenciador de pacotes usando o seguinte instruções.

  • O AWS CDK v2 é pré-instalado se você estiver usando um Nuvem AWS9 IDE. Se estiver usando o AWS Cloud9 IDE, pule esta etapa.Se você não tiver o AWS CDK instalado na máquina de desenvolvimento, instale o AWS CDK v2 globalmente usando o comando Node Package Manager npm install -g aws-cdk. Esta etapa requer que o Node.js seja instalado na máquina de desenvolvimento.
  • Configure suas credenciais da AWS para acessar e criar recursos da AWS usando o AWS CDK. Para obter instruções, consulte Especificando credenciais e região.
  • Faça o download do Conjunto de dados SEOSS consistindo de requisitos, relatórios de bugs, histórico de código e links de rastreamento de 33 projetos de software de código aberto. Salve o arquivo dataverse_files.zip em sua máquina local.

Conjunto de dados SEOSS

Implante a pilha de treinamento do AWS CDK

Para implantação do AWS CDK, começamos com a pilha de treinamento. Conclua as seguintes etapas:

  1. Clone o repositório GitHub:
$ git clone https://github.com/aws-samples/amazon-comprehend-custom-automate-classification-it-service-request.git

  1. Navegue até a amazon-comprehend-custom-automate-classification-it-service-request pasta:
$ cd amazon-comprehend-custom-automate-classification-it-service-request/

Todos os comandos a seguir são executados dentro do amazon-comprehend-custom-automate-classification-it-service-request diretório.

  1. No diretório amazon-comprehend-custom-automate-classification-it-service-request, inicialize o ambiente virtual Python e instale requirements.txt com pip:
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt

  1. Se você estiver usando o AWS CDK em uma conta e região específica da AWS pela primeira vez, consulte as instruções para inicializando seu ambiente AWS CDK:
$ cdk bootstrap aws:///

  1. Sintetize os modelos do CloudFormation para esta solução usando cdk synth E use cdk deploy para criar os recursos da AWS mencionados anteriormente:
$ cdk synth
$ cdk deploy VPCStack EFSStack S3Stack SNSStack ExtractLoadTransformEndPointCreateStack --parameters SNSStack:emailaddressarnnotification=

Depois de entrar cdk deploy, o AWS CDK perguntará se você deseja implantar alterações para cada uma das pilhas chamadas no comando cdk deploy.

  1. Entrar y para cada um dos prompts de criação de pilha, a etapa de implantação do cdk cria essas pilhas. Assine o endereço de e-mail fornecido por você no tópico SNS criado como parte da implantação do cdk.
  2. Depois que a implantação do cdk for concluída com êxito, crie uma pasta chamada raw_data no balde S3 comprehendcustom---s3stack.
  3. Carregar o conjunto de dados SEOSS dataverse_files.zip que você baixou anteriormente para esta pasta.

Após a conclusão do upload, a solução invoca o etl_lambda função usando um gatilho de evento do Amazon S3 para iniciar o processo de extração, transformação e carregamento (ETL). Após o processo ETL ser concluído com sucesso, uma mensagem é enviada ao tópico SNS, que invoca o train_classifier_lambda função. Essa função aciona um treinamento de modelo de classificador personalizado do Amazon Comprehend. Dependendo se você treina seu modelo no conjunto de dados SEOSS completo, o treinamento pode levar até 10 horas. Quando o processo de treinamento é concluído, o Amazon Comprehend carrega o model.tar.gz arquivo para o output_data prefixo no bucket do S3.

Este carregamento aciona o extract_comprehend_model_name_lambda função usando um gatilho de evento do S3 que extrai o ARN do modelo de classificador personalizado e o envia para o endereço de e-mail que você assinou anteriormente. Esse ARN de modelo de classificador personalizado é usado para criar a pilha de inferência. Quando o treinamento do modelo estiver concluído, você poderá visualizar as métricas de desempenho do modelo de classificador personalizado navegando até a seção de detalhes da versão no console do Amazon Comprehend (consulte a captura de tela a seguir) ou usando o Amazon Comprehend SDK do Boto3.

Métricas de desempenho

Implantar a pilha de inferência do AWS CDK

Agora você está pronto para implantar a pilha de inferência.

  1. Copie o ARN do modelo de classificador personalizado do e-mail que você recebeu e use o seguinte cdk deploy comando para criar a pilha de inferência.

Esse comando implanta uma API REST do API Gateway protegida por um autorizador do IAM, que você usa para inferência com um ID de usuário da AWS ou uma função do IAM que tenha apenas o privilégio execute-api:Invoke IAM. O comando cdk deploy a seguir implanta a pilha de inferência. Esta pilha usa o AWS CDK estrutura do provedor para criar o endpoint do Amazon Comprehend como um recurso personalizado, para que a criação, exclusão e atualização do endpoint do Amazon Comprehend possam ser feitas como parte do ciclo de vida da pilha de inferência usando os comandos cdk deploy e cdk destroy.

Como você precisa executar o comando a seguir após a conclusão do treinamento do modelo, o que pode levar até 10 horas, verifique se você está no ambiente virtual do Python inicializado em uma etapa anterior e no amazon-comprehend-custom-automate-classification-it-service-request diretório:

$ cdk deploy APIGWInferenceStack --parameters APIGWInferenceStack:documentclassifierarn=

Por exemplo:

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

  1. Após cdk deploy comando for concluído com sucesso, copie o APIGWInferenceStack.ComprehendCustomClassfierInvokeAPI valor da saída do console e use esta API REST para gerar inferências de uma máquina cliente ou de um aplicativo de terceiros que tenha execute-api:Invoke Privilégio do IAM. Se você estiver executando esta solução em us-east-2, o formato desta API REST é https://.execute-api.us-east-2.amazonaws.com/prod/invokecomprehendV1.

Como alternativa, você pode usar o cliente de teste apiclientinvoke.py do repositório do GitHub para enviar uma solicitação ao modelo de classificador personalizado. Antes de usar o apiclientinvoke.py, certifique-se de que os seguintes pré-requisitos estejam em vigor:

  • Você tem a boto3 e requests Pacote Python instalado usando pip na máquina cliente.
  • Você configurou as credenciais do Boto3. Por padrão, o cliente de teste assume que um perfil chamado default está presente e tem a execute-api:Invoke Privilégio do IAM na API REST.
  • SigV4Auth aponta para a região onde a API REST está implantada. Atualize o valor para us-east-2 in apiclientinvoke.py se sua API REST estiver implantada em us-east-2.
  • Você atribuiu o raw_data variável com o texto no qual você deseja fazer a previsão de classe ou a solicitação de classificação:
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."""

  • Você atribuiu o restapi variável com a API REST copiada anteriormente:

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

  1. execute o apiclientinvoke.py após as atualizações anteriores:
$ python3 apiclientinvoke.py

Você obtém a seguinte resposta do modelo de classificador personalizado:

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

O Amazon Comprehend retorna pontuações de confiança para cada rótulo atribuído corretamente. Se o serviço tiver muita confiança em um rótulo, a pontuação será mais próxima de 1. Portanto, para o modelo de classificador personalizado do Amazon Comprehend que foi treinado usando o conjunto de dados SEOSS, o modelo de classificador personalizado prevê que o texto pertence à classe SPARK. Essa classificação retornada pelo modelo de classificador personalizado do Amazon Comprehend pode ser usada para classificar as solicitações de serviço de TI ou prever a categoria correta das solicitações de serviço de TI, reduzindo assim erros manuais ou classificação incorreta de solicitações de serviço.

limpar

Para limpar todos os recursos criados nesta postagem que foram criados como parte da pilha de treinamento e pilha de inferência, use o comando a seguir. Este comando exclui todos os recursos da AWS criados como parte dos comandos cdk deploy anteriores:

$ cdk destroy --all

Conclusão

Nesta postagem, mostramos como as empresas podem implementar um modelo de ML supervisionado usando a classificação personalizada do Amazon Comprehend para prever a categoria de solicitações de serviço de TI com base no assunto ou na descrição da solicitação enviada pelo usuário final. Depois de criar e treinar um modelo de classificador personalizado, você pode executar análises em tempo real para classificação personalizada criando um endpoint. Depois de implantar esse modelo em um endpoint do Amazon Comprehend, ele pode ser usado para executar inferência em tempo real por aplicativos de terceiros ou outras máquinas clientes, incluindo ferramentas de gerenciamento de serviços de TI. Você pode usar essa inferência para prever a categoria do defeito e reduzir erros manuais ou classificações incorretas de tickets. Isso ajuda a reduzir atrasos na resolução de tickets e aumenta a precisão da resolução e a produtividade do cliente, o que resulta em maior satisfação do cliente.

Você pode estender os conceitos desta postagem para outros casos de uso, como rotear tíquetes de negócios ou de TI para várias equipes internas, como departamentos de negócios, agentes de atendimento ao cliente e suporte de TI de nível 2/3, criados por usuários finais ou por meio de significa.

Referências

  • Rath, Michael; Mäder, Patrick, 2019, “O conjunto de dados SEOSS – Requisitos, relatórios de bugs, histórico de código e links de rastreamento para projetos inteiros”, https://doi.org/10.7910/DVN/PDDZ4Q, Harvard Dataverso, V1

Sobre os autores

Automatize a classificação de solicitações de serviços de TI com um classificador personalizado PlatoBlockchain Data Intelligence do Amazon Comprehend. Pesquisa vertical. Ai.Arnab Chakraborty é arquiteto de soluções sênior na AWS, com sede em Cincinnati, Ohio. Ele é apaixonado por tópicos em arquitetura corporativa e de soluções, análise de dados, sem servidor e aprendizado de máquina. Nas horas vagas, gosta de assistir filmes, programas de viagens e esportes.

ViralAutomatize a classificação de solicitações de serviços de TI com um classificador personalizado PlatoBlockchain Data Intelligence do Amazon Comprehend. Pesquisa vertical. Ai. desai é um arquiteto de soluções principal na AWS. Com mais de 25 anos de experiência em tecnologia da informação, ele tem ajudado clientes a adotar a AWS e modernizar suas arquiteturas. Ele gosta de caminhadas e gosta de mergulhar fundo com os clientes em todas as coisas da AWS.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS