Analisar news feeds com a análise quase em tempo real usando o processamento de imagem e linguagem natural

Azure Cosmos DB
Funções do Azure
Barramento de Serviço do Azure
Tradução de Texto do Azure
Detecção Facial do Azure

Este cenário de exemplo descreve um pipeline para ingestão em massa e análise quase em tempo real de documentos provenientes de RSS news feeds públicos. Ele usa os Serviços Cognitivos do Azure para fornecer insights úteis com base na tradução de texto, reconhecimento facial e detecção de sentimentos. Especificamente, as etapas de processamento de imagem e linguagem natural são conectadas juntas em um pipeline de mensagens baseado no Barramento de Serviço do Azure. A saída do pipeline é uma notificação que contém o insight ou a análise.

Arquitetura

Architecture diagram: ingest and analyze RSS feeds using image and text processing and send notifications.Baixe um Arquivo Visio dessa arquitetura.

Fluxo de dados

Os dados fluem pela solução da seguinte maneira:

  1. Um RSS news feed funciona como o gerador que obtém dados de um documento ou de um artigo. Por exemplo, com um artigo, os dados normalmente incluem um título, um resumo do corpo original do item de notícia e, às vezes, imagens.

  2. Um gerador ou um processo de ingestão insere o artigo e todas as imagens associadas em uma coleção do Azure Cosmos DB.

  3. Uma notificação dispara uma função de ingestão no Azure Functions que armazena o texto do artigo no Azure Cosmos DB e as imagens do artigo (se houver) no Armazenamento de Blobs do Azure. Em seguida, o artigo é passado para a próxima fila.

  4. Uma função de tradução é disparada pelo evento de fila. Ela usa a API de Tradução de Texto dos Serviços Cognitivos do Azure para detectar o idioma, traduzir o conteúdo, se necessário, e coletar o sentimento, as frases-chave e as entidades do corpo e do título. Em seguida, ela passa o artigo para a próxima fila.

  5. Uma função de detecção é disparada do artigo na fila. Ela usa o serviço Pesquisa Visual Computacional para detectar objetos, pontos de referência e palavras escritas na imagem associada e passa o artigo para a próxima fila.

  6. Uma função de reconhecimento do rosto é disparada do artigo na fila. Ela usa o serviço API de Detecção Facial do Azure para detectar rostos para gênero e idade na imagem associada e passa o artigo para a próxima fila.

  7. Quando todas as funções são concluídas, a função de notificação é disparada. Ela carrega os registros processados no artigo e os examina em busca dos resultados desejados. Se ele for encontrado, o conteúdo será sinalizado e uma notificação será enviada ao sistema de sua escolha.

Em cada etapa de processamento, a função grava os resultados no Azure Cosmos DB. Por fim, os dados podem ser usados conforme desejado. Por exemplo, você pode usá-los para aprimorar processos de negócios, localizar novos clientes ou identificar problemas de satisfação do cliente.

Componentes

A lista de componentes do Azure a seguir é usada neste exemplo.

  • O Armazenamento do Azure é usado para manter os arquivos brutos de imagem e vídeo associados a um artigo. Uma conta de armazenamento secundária é criada com o Serviço de Aplicativo do Azure e é usada para hospedar o código e os logs de função do Azure.

  • O Azure Cosmos DB mantém informações de texto, imagem e acompanhamento de vídeo do artigo. Os resultados das etapas de Serviços Cognitivos também são armazenados aqui.

  • O Azure Functions executa o código de função usado para responder às mensagens da fila e transformar o conteúdo recebido. O Serviço de Aplicativo do Azure hospeda o código de função e processa os registros em série. Esse cenário inclui cinco funções: ingestão, transformação, detecção de objeto, detecção facial e notificação.

  • O Barramento de Serviço do Azure hospeda as filas do Barramento de Serviço do Azure usadas pelas funções.

  • Os Serviços Cognitivos do Azure fornecem a IA para o pipeline com base nas implementações do serviço Pesquisa Visual Computacional, da API de Detecção Facial e do serviço de tradução automática de Tradução de Texto.

  • O Azure Application Insights fornece análise para ajudar você a diagnosticar problemas e a compreender a funcionalidade do seu aplicativo.

Alternativas

  • Em vez de usar um padrão baseado em notificação de fila e o Azure Functions, você pode usar um padrão de tópico e assinatura para esse fluxo de dados. Os tópicos do Barramento de Serviço do Azure podem ser usados para processar as várias partes do artigo em paralelo, em vez do processamento serial feito neste exemplo. Para obter mais informações, compare filas e tópicos.

  • Use os Aplicativos Lógicos do Azure para implementar o código de função e implementar o bloqueio de nível de registro, como aquele fornecido pelo algoritmo Redlock (que é necessário para o processamento paralelo até que o Azure Cosmos DB dê suporte às atualizações parciais de documento). Para obter mais informações, compare Funções e aplicativos lógicos.

  • Implemente essa arquitetura usando componentes personalizados de IA, em vez dos serviços existentes do Azure. Por exemplo, estenda o pipeline usando um modelo personalizado que detecta determinadas pessoas em uma imagem em oposição à contagem de pessoas genéricas, ao gênero e aos dados de idade coletados neste exemplo. Para usar modelos personalizados de IA ou de machine learning com essa arquitetura, crie os modelos como pontos de extremidade RESTful de modo que eles possam ser chamados por meio do Azure Functions.

  • Use um mecanismo de entrada diferente em vez de RSS feeds. Use vários geradores ou processos de ingestão para alimentar o Azure Cosmos DB e o Armazenamento do Azure.

  • O Azure Cognitive Search é um recurso de IA do Azure Search que também pode ser usado para extrair texto de imagens, blobs e outras fontes de dados não estruturados.

Detalhes do cenário

Esse cenário contém exemplos de news feeds em inglês, russo e alemão, mas você pode ampliá-los com facilidade para outros RSS feeds e idiomas. Para facilitar a implantação, a coleta de dados, o processamento e a análise são baseados inteiramente nos serviços do Azure.

Possíveis casos de uso

Embora esse cenário se baseie no processamento de RSS feeds, ele é relevante para qualquer documento, site ou artigo em que você precise:

  • Traduzir um texto para um idioma de sua escolha.
  • Encontrar frases-chave, entidades e sentimentos do usuário no conteúdo digital.
  • Detectar objetos, texto e pontos de referência em imagens associadas a um artigo digital.
  • Detectar pessoas por gênero e idade em imagens associadas a um conteúdo digital.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Para simplificar, este cenário de exemplo usa apenas algumas das APIs e serviços disponíveis dos Serviços Cognitivos do Azure. Por exemplo, o texto das imagens pode ser analisado por meio da API de Análise de Texto. O idioma de destino nesse cenário é considerado como sendo o inglês, mas você pode alterar a entrada para qualquer idioma com suporte.

Escalabilidade

A escala do Azure Functions depende do plano de hospedagem usado. Essa solução pressupõe um plano de Consumo, no qual o poder de computação é automaticamente alocado para as funções quando necessário. Você paga somente quando suas funções estão em execução. Outra opção é usar um plano Dedicado, que permite que você escale seus aplicativos entre as camadas para alocar uma quantidade diferente de recursos.

Com o Azure Cosmos DB, o segredo é distribuir sua carga de trabalho quase que de maneira uniforme entre um número suficientemente grande de chaves de partição. Não há limite para o volume total de dados que um contêiner pode armazenar ou para a quantidade total de taxa de transferência a qual um contêiner pode dar suporte.

Gerenciamento e log

Essa solução usa o Application Insights para coletar informações de desempenho e log. Uma instância do Application Insights é criada com a implantação no mesmo grupo de recursos dos outros serviços necessários para essa implantação.

Para ver os logs gerados pela solução:

  1. Acesse o portal do Azure e navegue até o grupo de recursos criado para a implantação.

  2. Selecione a instância do Application Insights.

  3. Na seção Application Insights, navegue até Investigar\Pesquisar e faça uma pesquisa dos dados.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

O Azure Cosmos DB usa uma conexão segura e uma assinatura de acesso compartilhado por meio do SDK do C# fornecido pela Microsoft. Não há outras áreas de superfície externas. Saiba mais sobre as melhores práticas de segurança do Azure Cosmos DB.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

O Azure Cosmos DB é eficiente, mas gera o maior custo nessa implantação. Você pode usar outra solução de armazenamento refatorando o código do Azure Functions fornecido.

Os preços do Azure Functions variam de acordo com o plano em que ele é executado.

Implantar este cenário

Observação

Você deve ter uma conta do Azure já criada. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Todo o código deste cenário está disponível no repositório do GitHub. Esse repositório contém o código-fonte usado para criar o aplicativo gerador que alimenta o pipeline para esta demonstração.

Próximas etapas

Arquiteturas de análise adicionais: