Crie um sistema de alerta em tempo real baseado em notícias com Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Crie um sistema de alerta em tempo real baseado em notícias com Twitter, Amazon SageMaker e Hugging Face

Hoje, as redes sociais são uma grande fonte de notícias. Os usuários contam com plataformas como Facebook e Twitter para consumir notícias. Para certos setores, como companhias de seguros, primeiros respondentes, autoridades policiais e agências governamentais, a capacidade de processar rapidamente notícias sobre eventos relevantes que ocorrem pode ajudá-los a agir enquanto esses eventos ainda estão se desenrolando.

Não é incomum que as organizações que tentam extrair valor dos dados de texto procurem uma solução que não envolva o treinamento de um modelo complexo de NLP (processamento de linguagem natural). Para essas organizações, usar um modelo de PNL pré-treinado é mais prático. Além disso, se o modelo escolhido não satisfizer suas métricas de sucesso, as organizações querem poder escolher facilmente outro modelo e reavaliar.

Atualmente, é mais fácil do que nunca extrair informações de dados de texto graças ao seguinte:

  • O surgimento de arquiteturas de PNL de uso geral de última geração, como transformadores
  • A capacidade que desenvolvedores e cientistas de dados têm para criar, treinar e implantar rapidamente modelos de aprendizado de máquina (ML) em escala na nuvem com serviços como Amazon Sage Maker
  • A disponibilidade de milhares de modelos de PNL pré-treinados em centenas de idiomas e com suporte para vários frameworks fornecidos pela comunidade em plataformas como Abraçando o Face Hub

Neste post, mostramos como construir um sistema de alerta em tempo real que consome notícias do Twitter e classifica os tweets usando um modelo pré-treinado do Hugging Face Hub. Você pode usar esta solução para classificação de tiro zero, o que significa que você pode classificar tweets em praticamente qualquer conjunto de categorias e implantar o modelo com o SageMaker para inferência em tempo real.

Como alternativa, se você estiver procurando informações sobre as conversas de seus clientes e aprofundar o reconhecimento da marca analisando as interações nas mídias sociais, recomendamos que você confira o Painel de mídia social baseado em IA. A solução utiliza Amazon Comprehend, um serviço de PNL totalmente gerenciado que revela informações e conexões valiosas em texto sem exigir experiência em aprendizado de máquina.

Aprendizagem Zero-shot

Os campos de PNL e compreensão de linguagem natural (NLU) evoluíram rapidamente para abordar casos de uso envolvendo classificação de texto, resposta a perguntas, resumo, geração de texto e muito mais. Essa evolução foi possível, em parte, graças ao surgimento de arquiteturas de uso geral de última geração, como transformadores, mas também à disponibilidade de mais corpora de texto e de melhor qualidade disponíveis para o treinamento de tais modelos.

A arquitetura do transformador é uma rede neural complexa que requer conhecimento de domínio e uma enorme quantidade de dados para ser treinada do zero. Uma prática comum é usar um transformador de última geração pré-treinado como BERT, RoBERTa, T5, GPT-2 ou DistilBERT e ajustar (transferência de aprendizado) o modelo para um caso de uso específico.

No entanto, mesmo realizar o aprendizado de transferência em um modelo de PNL pré-treinado pode ser uma tarefa desafiadora, exigindo grandes quantidades de dados de texto rotulados e uma equipe de especialistas para organizar os dados. Essa complexidade impede que a maioria das organizações use esses modelos de forma eficaz, mas o aprendizado de tiro zero ajuda os profissionais e organizações de ML a superar essa deficiência.

O aprendizado zero-shot é uma tarefa de ML específica na qual um classificador aprende em um conjunto de rótulos durante o treinamento e, durante a inferência, é avaliado em um conjunto diferente de rótulos que o classificador nunca viu antes. Em NLP, você pode usar um classificador de sequência zero-shot treinado em uma tarefa de inferência de linguagem natural (NLI) para classificar texto sem qualquer ajuste fino. Neste post, usamos o popular NLI BART modelo bart-large-mnli para classificar tweets. Este é um modelo grande pré-treinado (1.6 GB), disponível no hub do modelo Hugging Face.

A Hugging Face é uma empresa de IA que gerencia uma plataforma de código aberto (Hugging Face Hub) com milhares de modelos (transformadores) de PNL pré-treinados em mais de 100 idiomas diferentes e com suporte para diferentes frameworks como TensorFlow e PyTorch. A biblioteca de transformadores ajuda desenvolvedores e cientistas de dados a iniciarem tarefas complexas de NLP e NLU, como classificação, extração de informações, resposta a perguntas, resumo, tradução e geração de texto.

AWS e cara de abraço têm colaborado para simplificar e acelerar a adoção de modelos de PNL. Um conjunto de Deep Learning Containers (DLCs) para treinamento e inferência em PyTorch ou TensorFlow, e estimadores e preditores Hugging Face para o SageMaker Python SDK estão agora disponíveis. Esses recursos ajudam os desenvolvedores com todos os níveis de experiência a começarem com a PNL facilmente.

Visão geral da solução

Fornecemos uma solução funcional que busca tweets em tempo real de contas selecionadas do Twitter. Para a demonstração de nossa solução, usamos três contas, Amazon Web Services (@awscloud), Segurança AWS (@AWSSecurityInfo) e Ciências Amazônicas (@AmazonScience) e classifique seu conteúdo em uma das seguintes categorias: segurança, banco de dados, computação, armazenamento e aprendizado de máquina. Se o modelo retornar uma categoria com pontuação de confiança maior que 40%, uma notificação será enviada.

No exemplo a seguir, o modelo classificou um tweet da Amazon Web Services na categoria machine learning, com pontuação de confiança de 97%, gerando um alerta.

A solução se baseia em um modelo de transformador pré-treinado Hugging Face (do Hugging Face Hub) para classificar os tweets com base em um conjunto de rótulos fornecidos no momento da inferência – o modelo não precisa ser treinado. As capturas de tela a seguir mostram mais exemplos e como eles foram classificados.
Alguns exemplos relevantes
Nós encorajamos você a tentar a solução por si mesmo. Basta baixar o código-fonte do Repositório GitHub e siga as instruções de implantação no arquivo README.

Arquitetura da solução

A solução mantém uma conexão aberta com o endpoint do Twitter e, quando chega um novo tweet, envia uma mensagem para uma fila. Um consumidor lê mensagens da fila, chama o endpoint de classificação e, dependendo dos resultados, notifica o usuário final.

A seguir está o diagrama de arquitetura da solução.
Escopo da solução
O fluxo de trabalho da solução consiste nos seguintes componentes:

  1. A solução conta com a API Stream do Twitter para obter tweets que correspondam às regras configuradas (tweets das contas de interesse) em tempo real. Para fazer isso, um aplicativo executado dentro de um contêiner mantém uma conexão aberta com o endpoint do Twitter. Referir-se API do Twitter para mais detalhes.
  2. O recipiente funciona em Serviço Amazon Elastic Container (Amazon ECS), um serviço de orquestração de contêiner totalmente gerenciado que facilita a implantação, o gerenciamento e o dimensionamento de aplicativos em contêiner. Uma única tarefa é executada em uma infraestrutura sem servidor gerenciada por AWS Fargate.
  3. O token de portador do Twitter é armazenado com segurança em Armazenamento de parâmetros do AWS Systems Manager, uma capacidade de Gerente de Sistemas AWS que fornece armazenamento seguro e hierárquico para dados e segredos de configuração. A imagem do contêiner está hospedada em Registro do Amazon Elastic Container (Amazon ECR), um registro de contêiner totalmente gerenciado que oferece hospedagem de alto desempenho.
  4. Sempre que um novo tweet chega, o aplicativo de contêiner coloca o tweet em um Serviço de fila simples da Amazon (Amazon SQS). O Amazon SQS é um serviço de enfileiramento de mensagens totalmente gerenciado que permite desacoplar e dimensionar microsserviços, sistemas distribuídos e aplicativos sem servidor.
  5. A lógica da solução reside em um AWS Lambda função. O Lambda é um serviço de computação sem servidor e orientado a eventos. A função consome novos tweets da fila e os classifica chamando um endpoint.
  6. O endpoint depende de um modelo Hugging Face e está hospedado no SageMaker. O endpoint executa a inferência e gera a classe do tweet.
  7. Dependendo da classificação, a função gera uma notificação por meio de Serviço de notificação simples da Amazon (Amazon SNS), um serviço de mensagens totalmente gerenciado. Você pode se inscrever no tópico SNS e vários destinos podem receber essa notificação (consulte Destinos de eventos do Amazon SNS). Por exemplo, você pode entregar a notificação nas caixas de entrada como mensagens de e-mail (consulte Receber notificações por email).

Implante modelos de rosto abraçado com o SageMaker

Você pode selecionar qualquer um dos mais de 10,000 modelos disponíveis publicamente no Hub de modelo de rosto de abraço e implantá-los com o SageMaker usando Abraçando DLCs de inferência de rosto.

Ao usar Formação da Nuvem AWS, você seleciona um dos disponíveis publicamente Abraçando contêineres de inferência de rosto e configurar o modelo e a tarefa. Esta solução utiliza o facebook/bart-grande-mnli modelo e a tarefa de classificação zero-shot, mas você pode escolher qualquer um dos modelos em Classificação Zero-Shot no Hub do Modelo de Rosto Abraçado. Você os configura definindo as variáveis ​​de ambiente HF_MODEL_ID e HF_TASK em seu modelo do CloudFormation, como no código a seguir:

SageMakerModel:
  Type: AWS::SageMaker::Model
  Properties:
    ExecutionRoleArn: !GetAtt SageMakerModelRole.Arn
    PrimaryContainer:
      Image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:1.7-transformers4.6-cpu-py36-ubuntu18.04
      Environment:
        HF_MODEL_ID: facebook/bart-large-mnli
        HF_TASK: zero-shot-classification
        SAGEMAKER_CONTAINER_LOG_LEVEL: 20
        SAGEMAKER_REGION: us-east-1

Como alternativa, se você não estiver usando o AWS CloudFormation, poderá obter os mesmos resultados com poucas linhas de código. Referir-se Implantar modelos no Amazon SageMaker para mais detalhes.

Para classificar o conteúdo, basta chamar o endpoint SageMaker. O seguinte é um trecho de código Python:

endpoint_name = os.environ['ENDPOINT_NAME']
labels = os.environ['ENDPOINT_NAME']

data = {
    'inputs': tweet,
    'parameters': {
        'candidate_labels': labels,
        'multi_class': False
    }
}

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name,
                                     ContentType='application/json',
                                     Body=json.dumps(data))

response_body = json.loads(response['Body'].read())

Note o Falso valor para o multi_classe parâmetro para indicar que a soma de todas as probabilidades para cada classe somará 1.

Melhorias na solução

Você pode aprimorar a solução proposta aqui armazenando os tweets e os resultados do modelo. Serviço de armazenamento simples da Amazon (Amazon S3), um serviço de armazenamento de objetos, é uma opção. Você pode gravar tweets, resultados e outros metadados como objetos JSON em um bucket do S3. Você pode então realizar consultas ad hoc nesse conteúdo usando Amazona atena, um serviço de consulta interativa que facilita a análise de dados no Amazon S3 usando SQL padrão.

Você pode usar o histórico não apenas para extrair insights, mas também para treinar um modelo personalizado. Você pode usar o suporte do Hugging Face para treinar um modelo com seus próprios dados com o SageMaker. Saiba mais em Executar treinamento no Amazon SageMaker.

Casos de uso do mundo real

Os clientes já estão experimentando os modelos Hugging Face no SageMaker. Seguro Bolívar, uma empresa financeira e de seguros colombiana fundada em 1939, é um exemplo.

“Desenvolvemos uma solução de notificação de ameaças para clientes e corretores de seguros. Usamos modelos de PNL pré-treinados do Hugging Face para classificar tweets de contas relevantes para gerar notificações para nossos clientes quase em tempo real como uma estratégia de prevenção para ajudar a mitigar reclamações. Uma reclamação ocorre porque os clientes não estão cientes do nível de risco a que estão expostos. A solução nos permite gerar consciência em nossos clientes, transformando o risco em algo mensurável em situações concretas.”

– Julian Rico, Chefe de Pesquisa e Conhecimento da Seguros Bolívar.

A Seguros Bolívar trabalhou com a AWS para rearquitetar sua solução; ele agora depende do SageMaker e se assemelha ao descrito neste post.

Conclusão

A classificação zero-shot é ideal quando você tem poucos dados para treinar um classificador de texto personalizado ou quando não pode treinar um modelo de NLP personalizado. Para casos de uso especializados, quando o texto é baseado em palavras ou termos específicos, é melhor usar um modelo de classificação supervisionado com base em um conjunto de treinamento personalizado.

Neste post, mostramos como construir um classificador de notícias usando um modelo de tiro zero Hugging Face na AWS. Usamos o Twitter como nossa fonte de notícias, mas você pode escolher uma fonte de notícias mais adequada às suas necessidades específicas. Além disso, você pode alterar facilmente o modelo, basta especificar o modelo escolhido no modelo do CloudFormation.

Para o código-fonte, consulte o Repositório GitHub Inclui as instruções de configuração completas. Você pode clonar, alterar, implantar e executá-lo você mesmo. Você também pode usá-lo como ponto de partida e personalizar as categorias e a lógica de alerta ou criar outra solução para um caso de uso semelhante.

Por favor, experimentá-lo, e deixe-nos saber o que você pensa. Como sempre, estamos ansiosos pelo seu feedback. Você pode enviá-lo para seus contatos habituais do AWS Support ou no Fórum da AWS para SageMaker.


Sobre os autores

Crie um sistema de alerta em tempo real baseado em notícias com Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.David Laredo é arquiteto de prototipagem na AWS Envision Engineering na América Latina, onde ajudou a desenvolver vários protótipos de aprendizado de máquina. Anteriormente, ele trabalhou como engenheiro de aprendizado de máquina e faz aprendizado de máquina há mais de 5 anos. Suas áreas de interesse são PNL, séries temporais e ML de ponta a ponta.

Crie um sistema de alerta em tempo real baseado em notícias com Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Rafael Werneck é Arquiteto de Prototipagem Sênior na AWS Envision Engineering, com sede no Brasil. Anteriormente, trabalhou como engenheiro de desenvolvimento de software na Amazon.com.br e Amazon RDS Performance Insights.

Crie um sistema de alerta em tempo real baseado em notícias com Twitter, Amazon SageMaker e Hugging Face PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Vikram Elango é um arquiteto de soluções especialista em IA/ML na Amazon Web Services, com sede na Virgínia, EUA. A Vikram ajuda os clientes do setor financeiro e de seguros com liderança em design e pensamento para criar e implantar aplicativos de aprendizado de máquina em escala. Atualmente, ele está focado em processamento de linguagem natural, IA responsável, otimização de inferência e dimensionamento de ML em toda a empresa. Em seu tempo livre, ele gosta de viajar, fazer caminhadas, cozinhar e acampar com sua família.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS