Organizações em setores como varejo, bancos, finanças, saúde, manufatura e empréstimos geralmente precisam lidar com grandes quantidades de documentos de texto não estruturados provenientes de várias fontes, como notícias, blogs, análises de produtos, canais de suporte ao cliente e mídias sociais. Esses documentos contêm informações críticas que são essenciais para a tomada de importantes decisões de negócios. À medida que uma organização cresce, torna-se um desafio extrair informações críticas desses documentos. Com o avanço das técnicas de processamento de linguagem natural (NLP) e aprendizado de máquina (ML), podemos descobrir informações e conexões valiosas desses documentos textuais rapidamente e com alta precisão, ajudando assim as empresas a tomar decisões de negócios de qualidade no prazo. Os serviços de NLP totalmente gerenciados também aceleraram a adoção do NLP. Amazon Comprehend é um serviço totalmente gerenciado que permite criar modelos de NLP personalizados específicos para suas necessidades, sem a necessidade de nenhum conhecimento de ML.
Nesta postagem, demonstramos como utilizar técnicas de ML de última geração para resolver cinco tarefas diferentes de NLP: resumo de documentos, classificação de texto, resposta a perguntas, reconhecimento de entidade nomeada e extração de relacionamento. Para cada uma dessas tarefas de PNL, demonstramos como usar Amazon Sage Maker para realizar as seguintes ações:
- Implante e execute inferência em um modelo pré-treinado
- Ajuste o modelo pré-treinado em um novo conjunto de dados personalizado
- Melhore ainda mais o desempenho de ajuste fino com SageMaker ajuste automático do modelo
- Avalie o desempenho do modelo nos dados de teste de espera com várias métricas de avaliação
Embora abordemos cinco tarefas específicas de NLP nesta postagem, você pode usar esta solução como modelo para generalizar o ajuste fino de modelos pré-treinados com seu próprio conjunto de dados e, subsequentemente, executar a otimização de hiperparâmetros para melhorar a precisão.
Modelos de solução JumpStart
JumpStart do Amazon SageMaker fornece soluções completas com um clique para muitos casos de uso comuns de ML. Explore os seguintes casos de uso para obter mais informações sobre os modelos de solução disponíveis:
Os modelos de solução JumpStart cobrem uma variedade de casos de uso, em cada um dos quais vários modelos de solução diferentes são oferecidos (esta solução de Compreensão de Documentos está no caso de uso “Extrair e analisar dados de documentos”).
Escolha o modelo de solução que melhor se adapta ao seu caso de uso na página inicial do JumpStart. Para obter mais informações sobre soluções específicas em cada caso de uso e como iniciar uma solução JumpStart, consulte Modelos de solução.
Visão geral da solução
A imagem a seguir demonstra como você pode usar esta solução com componentes do SageMaker. Os trabalhos de treinamento do SageMaker são usados para treinar os vários modelos de NLP, e os endpoints do SageMaker são usados para implantar os modelos em cada estágio. Nós usamos Serviço de armazenamento simples da Amazon (Amazon S3) ao lado do SageMaker para armazenar os dados de treinamento e os artefatos do modelo, e Amazon CloudWatch para registrar as saídas de treinamento e endpoint.
Abra a solução Document Understanding
Navegue até a solução Document Understanding no JumpStart.
Agora podemos examinar mais de perto alguns dos recursos incluídos nesta solução, começando pelo notebook de demonstração.
Caderno de demonstração
Você pode usar o bloco de anotações de demonstração para enviar dados de exemplo para terminais de modelo já implantados para o resumo de documentos e tarefas de resposta a perguntas. O notebook de demonstração permite que você obtenha experiência prática consultando os dados de exemplo.
Depois de iniciar a solução Document Understanding, abra o notebook de demonstração escolhendo Usar endpoint no notebook.
Vamos nos aprofundar em cada um dos cinco notebooks principais para esta solução.
Pré-requisitos
In Estúdio Amazon SageMaker, verifique se você está usando o PyTorch 1.10 Python 3.8 CPU Optimized
image/kernel para abrir os notebooks. O treinamento usa cinco instâncias ml.g4dn.2xlarge, então você deve gerar um solicitação de aumento de limite de serviço se sua conta exigir limites maiores para esse tipo.
Classificação de texto
A classificação de texto refere-se à classificação de uma frase de entrada para um dos rótulos de classe do conjunto de dados de treinamento. Este notebook demonstra como usar o API JumpStart para classificação de texto.
Implante e execute inferência no modelo pré-treinado
O modelo de classificação de texto que escolhemos usar é construído sobre uma incorporação de texto (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2
) modelo de Hub do TensorFlow, que é pré-treinado nos conjuntos de dados Wikipedia e BookCorpus.
O modelo disponível para implantação é criado anexando uma camada de classificação binária à saída do modelo de incorporação de texto e, em seguida, ajustando todo o modelo no SST-2 conjunto de dados, que é composto por críticas positivas e negativas de filmes.
Para executar a inferência neste modelo, primeiro precisamos baixar o contêiner de inferência (deploy_image_uri
), script de inferência (deploy_source_uri
) e modelo pré-treinado (base_model_uri
). Em seguida, os passamos como parâmetros para instanciar um objeto de modelo do SageMaker, que podemos implantar:
O código a seguir mostra nossas respostas:
Ajuste o modelo pré-treinado em um conjunto de dados personalizado
Acabamos de passar pela execução da inferência em um modelo BERT pré-treinado, que foi ajustado no SST-2
conjunto de dados.
Em seguida, discutimos como ajustar um modelo em um conjunto de dados personalizado com qualquer número de classes. O conjunto de dados que usamos para o ajuste fino ainda é o SST-2
conjunto de dados. Você pode substituir esse conjunto de dados por qualquer conjunto de dados de seu interesse.
Recuperamos o contêiner do Docker de treinamento, a fonte do algoritmo de treinamento e o modelo pré-treinado:
Para hiperparâmetros específicos do algoritmo, começamos buscando um dicionário Python dos hiperparâmetros de treinamento que o algoritmo aceita com seus valores padrão. Você pode substituí-los por valores personalizados, conforme mostrado no código a seguir:
O conjunto de dados (SST-2
) é dividido em conjuntos de treinamento, validação e teste, em que o conjunto de treinamento é usado para ajustar o modelo, o conjunto de validação é usado para calcular métricas de avaliação que podem ser usadas para HPO e o conjunto de teste é usado como dados de retenção para avaliar o desempenho do modelo. Em seguida, o conjunto de dados de treinamento e validação é carregado no Amazon S3 e usado para iniciar o trabalho de treinamento de ajuste fino:
Após a conclusão do trabalho de ajuste fino, implantamos o modelo, executamos a inferência no conjunto de dados de teste de retenção e calculamos as métricas de avaliação. Por ser uma tarefa de classificação binária, usamos o pontuação de precisão e Pontuação F1 como as métricas de avaliação. Um valor maior indica o melhor desempenho. A captura de tela a seguir mostra nossos resultados.
Melhore ainda mais o desempenho do ajuste fino com o ajuste automático de modelos do SageMaker
Nesta etapa, demonstramos como você pode melhorar ainda mais o desempenho do modelo ajustando o modelo com o ajuste automático de modelo do SageMaker. O ajuste automático de modelo, também conhecido como otimização de hiperparâmetros (HPO), encontra a melhor versão de um modelo executando vários trabalhos de treinamento em seu conjunto de dados com uma variedade de hiperparâmetros que você especifica. Em seguida, ele escolhe os valores de hiperparâmetros que resultam em um modelo com melhor desempenho, conforme medido por uma métrica escolhida por você, no conjunto de dados de validação.
Primeiro, definimos o objetivo como a pontuação de precisão nos dados de validação (val_accuracy
) e métricas definidas para o trabalho de ajuste especificando o nome da métrica objetiva e uma expressão regular (regex). A expressão regular é usada para corresponder à saída de log do algoritmo e capturar os valores numéricos das métricas. Em seguida, especificamos intervalos de hiperparâmetros para selecionar os melhores valores de hiperparâmetros. Definimos o número total de tarefas de ajuste como seis e distribuímos essas tarefas em três diferentes Amazon Elastic Compute Nuvem (Amazon EC2) instâncias para executar tarefas de ajuste paralelo. Veja o seguinte código:
Passamos esses valores para instanciar um objeto SageMaker Estimator, semelhante ao que fizemos na etapa anterior de ajuste fino. Em vez de ligar para o fit
função do Estimator
objeto, passamos o Estimator
objeto como um parâmetro para o HiperparâmetroTuner construtor e chame o fit
função dele para iniciar tarefas de ajuste:
Após a conclusão dos trabalhos de ajuste, implantamos o modelo que fornece a melhor pontuação de métrica de avaliação no conjunto de dados de validação, realizamos inferência no mesmo conjunto de dados de teste de validação que fizemos na seção anterior e calculamos as métricas de avaliação.
Os resultados mostram que o modelo selecionado pelo ajuste automático de modelo supera significativamente o modelo ajustado na seção anterior em um conjunto de dados de teste de validação.
Reconhecimento de entidade nomeada
Reconhecimento de entidade nomeada (NER) é o processo de detecção e classificação de entidades nomeadas em categorias predefinidas, como nomes de pessoas, organizações, locais e quantidades. Existem muitos casos de uso do mundo real para o NER, como mecanismos de recomendação, categorização e atribuição de tíquetes de suporte ao cliente ao departamento certo, extração de informações essenciais de relatórios de pacientes na área da saúde e classificação de conteúdo de notícias e blogs.
Implante e execute inferência no modelo pré-treinado
Nós implantamos o En_core_web_md modelo do ESPAÇO biblioteca. spaCy é uma biblioteca NLP de código aberto que pode ser usada para várias tarefas e possui métodos integrados para NER. Usamos um AWS PyTorch Deep Learning Container (DLC) com um modo de script e instalamos a biblioteca spaCy como uma dependência na parte superior do contêiner.
Em seguida, um ponto de entrada para o script (argumento entry_point.py
) é especificado, contendo todo o código para baixar e carregar o En_core_web_md
modele e execute inferência nos dados que são enviados para o endpoint. Finalmente, ainda precisamos fornecer model_data
como o modelo pré-treinado para inferência. Porque o pré-treinado En_core_web_md
modelo é baixado em tempo real, que é especificado no script de entrada, fornecemos um arquivo vazio. Após a implantação do endpoint, você pode invocá-lo diretamente do notebook usando o SageMaker Python SDK Predictor
. Veja o seguinte código:
Os dados de entrada para o modelo são um documento textual. O modelo de entidade nomeada extrai blocos de substantivos e entidades nomeadas no documento textual e os classifica em vários tipos diferentes (como pessoas, lugares e organizações). A entrada e a saída de exemplo são mostradas no código a seguir. o start_char
parâmetro indica o deslocamento de caractere para o início do intervalo e end_char
indica o fim do vão.
Ajuste o modelo pré-treinado em um conjunto de dados personalizado
Nesta etapa, demonstramos como ajustar modelos de linguagem pré-treinados para NER em seu próprio conjunto de dados. A etapa de ajuste fino atualiza os parâmetros do modelo para capturar a característica de seus próprios dados e melhorar a precisão. Nós usamos o WikiANN (PAN-X) conjunto de dados para ajustar o DestilBERT-base-uncased Modelo Transformer da Hugging Face.
O conjunto de dados é dividido em conjuntos de treinamento, validação e teste.
Em seguida, especificamos os hiperparâmetros do modelo e usamos um DLC AWS Hugging Face com um modo de script (argumento entry_point
) para acionar o trabalho de ajuste fino:
Após a conclusão do trabalho de ajuste fino, implantamos um endpoint e consultamos esse endpoint com os dados de teste de validação. Para consultar o endpoint, cada sequência de texto precisa ser tokenizada em um ou vários tokens e enviada ao modelo do transformador. Cada token recebe uma tag de entidade nomeada prevista. Como cada string de texto pode ser tokenizada em um ou vários tokens, precisamos duplicar a marca de entidade denominada verdade absoluta da string para todos os tokens associados a ela. O bloco de anotações fornecido orienta você nas etapas para fazer isso.
Por fim, usamos métricas de avaliação integradas do Hugging Face sequência para calcular pontuações de avaliação nos dados de teste de espera. As métricas de avaliação usadas são precisão geral, recall geral, F1 geral e precisão. A captura de tela a seguir mostra nossos resultados.
Melhore ainda mais o desempenho do ajuste fino com o ajuste automático de modelos do SageMaker
Semelhante à classificação de texto, demonstramos como você pode melhorar ainda mais o desempenho do modelo ajustando o modelo com o ajuste automático de modelo do SageMaker. Para executar o trabalho de ajuste, precisamos definir uma métrica objetiva que queremos usar para avaliar o desempenho do modelo no conjunto de dados de validação (pontuação F1 neste caso), intervalos de hiperparâmetros para selecionar os melhores valores de hiperparâmetros, bem como configurações de trabalho de ajuste, como número máximo de tarefas de ajuste e número de tarefas paralelas a serem iniciadas por vez:
Após a conclusão dos trabalhos de ajuste, implantamos o modelo que fornece a melhor pontuação de métrica de avaliação no conjunto de dados de validação, realizamos inferência no mesmo conjunto de dados de teste de validação que fizemos na seção anterior e calculamos as métricas de avaliação.
Podemos ver que o modelo com HPO atinge um desempenho significativamente melhor em todas as métricas.
Resposta de perguntas
A resposta a perguntas é útil quando você deseja consultar uma grande quantidade de texto para obter informações específicas. Ele permite que um usuário expresse uma pergunta em linguagem natural e obtenha uma resposta imediata e breve. Os sistemas de resposta a perguntas alimentados por NLP podem ser usados em mecanismos de pesquisa e interfaces de conversação telefônica.
Implante e execute inferência no modelo pré-treinado
Nosso modelo pré-treinado é o modelo de resposta a perguntas extrativas (EQA) bert-large-uncase-whole-word-masking-finetuned-squad construído em um modelo Transformer da Hugging Face. Usamos um AWS PyTorch DLC com um modo de script e instalamos o transformadores biblioteca como uma dependência na parte superior do contêiner. Semelhante à tarefa NER, fornecemos um arquivo compactado vazio no argumento model_data
porque o modelo pré-treinado é baixado em tempo real. Após a implantação do endpoint, você pode invocá-lo diretamente do notebook usando o SageMaker Python SDK Predictor
. Veja o seguinte código:
Tudo o que precisamos fazer é construir um objeto de dicionário com duas chaves. context
é o texto do qual desejamos recuperar informações. question
é a consulta de linguagem natural que especifica quais informações estamos interessados em extrair. Nós chamamos predict
em nosso preditor, e devemos obter uma resposta do endpoint que contém as respostas mais prováveis:
Temos a resposta e podemos imprimir as respostas mais prováveis que foram extraídas do texto anterior. Cada resposta tem uma pontuação de confiança usada para classificação (mas essa pontuação não deve ser interpretada como uma probabilidade real). Além da resposta literal, você também obtém os índices de caracteres iniciais e finais da resposta do contexto original:
Agora, ajustamos esse modelo com nosso próprio conjunto de dados personalizado para obter melhores resultados.
Ajuste o modelo pré-treinado em um conjunto de dados personalizado
Nesta etapa, demonstramos como ajustar modelos de linguagem pré-treinados para EQA em seu próprio conjunto de dados. A etapa de ajuste fino atualiza os parâmetros do modelo para capturar a característica de seus próprios dados e melhorar a precisão. Nós usamos o SQUAD2.0 conjunto de dados para ajustar um modelo de incorporação de texto bert-base-uncase de Abraçar o Rosto. O modelo disponível para ajuste fino anexa uma camada de extração de resposta ao modelo de incorporação de texto e inicializa os parâmetros da camada com valores aleatórios. A etapa de ajuste fino ajusta todos os parâmetros do modelo para minimizar o erro de previsão nos dados de entrada e retorna o modelo ajustado com precisão.
Semelhante à tarefa de classificação de texto, o conjunto de dados (SQuAD2.0) é dividido em conjunto de treinamento, validação e teste.
Em seguida, especificamos os hiperparâmetros do modelo e usamos o API JumpStart para acionar um trabalho de ajuste fino:
Após a conclusão do trabalho de ajuste fino, implantamos o modelo, executamos a inferência no conjunto de dados de teste de retenção e calculamos as métricas de avaliação. As métricas de avaliação usadas são a pontuação média exata de correspondência e a pontuação média da F1. A captura de tela a seguir mostra os resultados.
Melhore ainda mais o desempenho do ajuste fino com o ajuste automático de modelos do SageMaker
Semelhante às seções anteriores, usamos um HyperparameterTuner
objeto para iniciar tarefas de ajuste:
Após a conclusão dos trabalhos de ajuste, implantamos o modelo que fornece a melhor pontuação de métrica de avaliação no conjunto de dados de validação, realizamos inferência no mesmo conjunto de dados de teste de validação que fizemos na seção anterior e calculamos as métricas de avaliação.
Podemos ver que o modelo com HPO apresenta um desempenho significativamente melhor nos dados do teste hold-out.
Extração de relacionamento
A extração de relacionamento é a tarefa de extrair relacionamentos semânticos do texto, que geralmente ocorrem entre duas ou mais entidades. A extração de relacionamento desempenha um papel importante na extração de informações estruturadas de fontes não estruturadas, como texto bruto. Neste notebook, demonstramos dois casos de uso de extração de relacionamento.
Ajuste o modelo pré-treinado em um conjunto de dados personalizado
Usamos um modelo de extração de relacionamento construído em um BERT-base-uncase modelo usando transformadores da Transformadores de rosto abraçando biblioteca. O modelo para ajuste fino anexa uma camada de classificação linear que usa um par de incorporações de token geradas pelo modelo de incorporação de texto e inicializa os parâmetros da camada com valores aleatórios. A etapa de ajuste fino ajusta todos os parâmetros do modelo para minimizar o erro de previsão nos dados de entrada e retorna o modelo ajustado com precisão.
O conjunto de dados que ajustamos o modelo é SemEval-2010 Tarefa 8. O modelo retornado pelo ajuste fino pode ser implantado posteriormente para inferência.
O conjunto de dados contém conjuntos de treinamento, validação e teste.
Usamos o AWS PyTorch DLC com um modo de script do SageMaker Python SDK, onde o transformers
A biblioteca é instalada como a dependência na parte superior do contêiner. Nós definimos o SageMaker PyTorch
estimador e um conjunto de hiperparâmetros, como o modelo pré-treinado, taxa de aprendizado e números de época para realizar o ajuste fino. O código para ajuste fino do modelo de extração de relacionamento é definido no entry_point.py
. Veja o seguinte código:
Melhore ainda mais o desempenho do ajuste fino com o ajuste automático de modelos do SageMaker
Semelhante às seções anteriores, usamos um HyperparameterTuner
para interagir com as APIs de ajuste de hiperparâmetros do SageMaker. Podemos iniciar o trabalho de ajuste de hiperparâmetro chamando o fit
método:
Quando o trabalho de ajuste do hiperparâmetro é concluído, realizamos a inferência e verificamos a pontuação da avaliação.
Podemos ver que o modelo com HPO apresenta melhor desempenho nos dados do teste hold-out.
Resumo do documento
Resumo de documento ou texto é a tarefa de condensar grandes quantidades de dados de texto em um subconjunto menor de frases significativas que representam as informações mais importantes ou relevantes dentro do conteúdo original. A sumarização de documentos é uma técnica útil para destilar informações importantes de grandes quantidades de dados de texto para algumas frases. O resumo de texto é usado em muitos casos de uso, como processamento de documentos e extração de informações de blogs, artigos e notícias.
Este notebook demonstra a implantação do modelo de resumo de documentos Base T5 do Transformadores de rosto abraçando biblioteca. Também testamos os endpoints implantados usando um artigo de texto e avaliamos os resultados usando a métrica de avaliação integrada Hugging Face ROUGE.
Semelhante à resposta a perguntas e aos cadernos NER, usamos o PyTorchModel
do SageMaker Python SDK junto com um entry_point.py
script para carregar o modelo T5-base para um endpoint HTTPS. Após a implantação bem-sucedida do endpoint, podemos enviar um artigo de texto ao endpoint para obter uma resposta de previsão:
Em seguida, avaliamos e comparamos o artigo de texto e o resultado do resumo usando a métrica ROUGE. Três métricas de avaliação são calculadas: rougeN
, rougeL
e rougeLsum
. rougeN
mede o número de correspondência n-grams
entre o texto gerado pelo modelo (resultado do resumo) e um reference
(Entrada de texto). As métricas rougeL
e rougeLsum
meça as sequências de palavras correspondentes mais longas procurando as substrings comuns mais longas nos resumos gerados e de referência. Para cada métrica, são calculados intervalos de confiança para precisão, recall e pontuação F1. Veja o código a seguir:
limpar
Os recursos criados para esta solução podem ser excluídos usando o Excluir todos os recursos botão do SageMaker Studio IDE. Cada notebook também fornece uma seção de limpeza com o código para excluir os terminais.
Conclusão
Nesta postagem, demonstramos como utilizar técnicas de ML de última geração para resolver cinco tarefas diferentes de NLP: resumo de documento, classificação de texto, pergunta e resposta, reconhecimento de entidade nomeada e extração de relacionamento usando o Jumpstart. Comece agora com o Jumpstart!
Sobre os autores
Dr.Xin Huang é um cientista aplicado para algoritmos integrados Amazon SageMaker JumpStart e Amazon SageMaker. Ele se concentra no desenvolvimento de algoritmos de aprendizado de máquina escaláveis. Seus interesses de pesquisa estão na área de processamento de linguagem natural, aprendizado profundo explicável em dados tabulares e análise robusta de agrupamento não paramétrico de espaço-tempo. Ele publicou muitos artigos em conferências ACL, ICDM, KDD e Royal Statistical Society: Series A journal.
Vivek Gangasani é arquiteto sênior de soluções de aprendizado de máquina na Amazon Web Services. Ele ajuda as startups a criar e operacionalizar aplicativos AI/ML. Atualmente, ele está focado em combinar sua experiência em contêineres e aprendizado de máquina para fornecer soluções em MLOps, inferência de ML e ML de baixo código. Em seu tempo livre, ele gosta de experimentar novos restaurantes e explorar tendências emergentes em IA e aprendizado profundo.
Geremy Cohen é Arquiteto de Soluções da AWS, onde ajuda os clientes a criar soluções de ponta baseadas em nuvem. Em seu tempo livre, ele gosta de caminhadas curtas na praia, explorando a área da baía com sua família, consertando coisas em casa, quebrando coisas em casa e fazendo churrasco.
Neelam Koshiya é arquiteto de soluções corporativas da AWS. Seu foco atual é ajudar os clientes corporativos em sua jornada de adoção da nuvem para resultados de negócios estratégicos. Em seu tempo livre, ela gosta de ler e estar ao ar livre.
- Avançado (300)
- AI
- arte ai
- gerador de arte ai
- ai robô
- Amazon Sage Maker
- JumpStart do Amazon SageMaker
- inteligência artificial
- certificação de inteligência artificial
- inteligência artificial em bancos
- robô de inteligência artificial
- robôs de inteligência artificial
- software de inteligência artificial
- Aprendizado de máquina da AWS
- blockchain
- conferência blockchain ai
- Coingenius
- inteligência artificial conversacional
- conferência de criptografia ai
- dall's
- deep learning
- Especialista (400)
- google ai
- aprendizado de máquina
- platão
- platão ai
- Inteligência de Dados Platão
- Jogo de Platão
- PlatãoData
- jogo de platô
- escala ai
- sintaxe
- zefirnet