Este artigo mostra como criar um aplicativo básico que usa a API de Análise de Texto dos Serviços Cognitivos da Microsoft para analisar um texto. Mostraremos como configurar a API de Análise de Texto e se conectar a ela com o conector de Análise de Texto. Em seguida, mostraremos como criar um aplicativo que chama a API.

Observação: se você não estiver familiarizado com a criação de aplicativos no PowerApps, recomendamos ler Criar um aplicativo do zero antes de se aprofundar neste artigo.

Introdução aos Serviços Cognitivos da Microsoft

Os Serviços Cognitivos da Microsoft são um conjunto de APIs, SDKs e serviços disponíveis para tornar os aplicativos mais inteligentes, interessantes e detectáveis. Esses serviços permitem adicionar recursos inteligentes com facilidade – como detecção de emoção e vídeo, reconhecimento do rosto, de fala e visão, além de reconhecimento vocal – aos aplicativos.

Neste artigo, nos concentraremos no “reconhecimento vocal”, trabalhando com a API de Análise de Texto. Essa API possibilita detectar sentimentos, frases-chave, tópicos e idiomas do texto. Vamos começar fazendo uma demonstração da API e, depois, inscrevendo-se em uma versão prévia.

Experimentar a API de Análise de Texto

A API tem uma demonstração online – você pode ver como ela funciona e observar o JSON que o serviço retorna.

  1. Acesse a página da API de Análise de Texto.

  2. Na seção Vê-la em ação, use o texto de exemplo ou insira seu próprio texto. Depois, clique ou toque em Analisar.

    Demonstração da API de Análise de Texto

  3. A página mostra os resultados formatados na guia Texto analisado e a resposta do JSON na guia JSON. O JSON é uma forma de representar dados – nesse caso, os dados retornados pela API de Análise de Texto.

Inscreva-se para obter a API de Análise de Texto

A API está disponível como uma versão prévia gratuita e está associada a uma assinatura do Azure. A API é gerenciada por meio do portal do Azure.

  1. Caso você ainda não tenha uma assinatura do Azure, inscreva-se para obter uma assinatura gratuita.

  2. Entre em sua conta do Azure.

  3. Acesse a folha Criar Serviços Cognitivos no portal do Azure.

  4. Insira informações para a API de Análise de Texto, como na imagem a seguir. Selecione o tipo de preço F0 (gratuito).

    Criar a API de Análise de Texto

  5. No canto inferior esquerdo, clique ou toque em Criar.

  6. No Dashboard, clique ou toque na API que você acabou de criar.

    Dashboard do Azure

  7. Clique ou toque em Chaves.

    Menu do Azure

  8. Copie uma das chaves no lado direito da tela. Usaremos essa chave mais tarde quando criarmos uma conexão com a API.

    Chaves de API

Criar o aplicativo

Agora que a API de Análise de Texto está funcionando, podemos nos conectar a ela no PowerApps e criar um aplicativo que chama a API. Este é um aplicativo de tela única que fornece uma funcionalidade semelhante à demonstração na página da API de Análise de Texto. Vamos começar a criá-lo!

Criar o aplicativo e adicionar uma conexão

Primeiro, criaremos um aplicativo de telefone em branco e adicionaremos uma conexão com o conector Análise de Texto. Caso precise de mais informações sobre essas tarefas, consulte Criar um aplicativo do zero e Gerenciar as conexões no PowerApps.

  1. No PowerApps Studio, clique ou toque em Arquivo > Novo e, depois, em Aplicativo em branco, clique ou toque em Layout do telefone.

    Aplicativo em branco – layout do telefone

  2. No painel central, clique ou toque em Conectar-se aos dados.

  3. No painel direito, clique ou toque em Nova conexão > Análise de Texto.

    Fontes de dados do PowerApps

  4. Copie a chave para a Chave de Conta e, depois, clique ou toque em Criar.

    Conector de análise de texto

Adicionar controles ao aplicativo

A próxima etapa na criação do aplicativo é adicionar todos os controles. Normalmente, quando crio aplicativos, adiciono fórmulas aos controles durante a criação, mas nesse caso, nos concentraremos nos controles primeiro e, depois, adicionaremos algumas fórmulas na próxima seção. A imagem a seguir mostra o aplicativo com todos os controles.

Aplicativo concluído

Siga as etapas abaixo para criar esta tela. Se um nome de controle for especificado, esse nome será usado em uma fórmula na próxima seção.

  1. Na guia Início, clique ou toque em Nova Tela e, depois, em Tela Rolável.

  2. Em Screen2, selecione [Título] e altere-o para Análise de Texto.

  3. Adicione um controle Rótulo ao texto de introdução.

  4. Adicione um controle de Entrada de texto, de modo que possamos inserir um texto para ser analisado. Nomeie o controle tiTextToAnalyze. O aplicativo agora deve ser semelhante à imagem a seguir.

    Aplicativo com título, subtítulo e entrada de texto

  5. Adicione três controles Caixa de seleção, de modo que possamos escolher quais operações de API serão executadas. Nomeie os controles chkLanguage, chkPhrases e chkSentiment.

  6. Adicione um botão, de modo que possamos chamar a API depois de selecionar quais operações serão executadas. O aplicativo agora deve ser semelhante à imagem a seguir.

    Aplicativo com caixas de seleção e botão

  7. Adicione três controles de Rótulo. Os dois primeiros armazenarão os resultados das chamadas à API de idioma e sentimento; o terceiro é apenas uma introdução à galeria na parte inferior da tela.

  8. Adicione um controle de Galeria vertical em branco e, em seguida, adicione um controle de Rótulo à galeria. A galeria manterá os resultados da chamada à API de frases-chave. O aplicativo agora deve ser semelhante à imagem a seguir.

    Aplicativo com rótulos e galeria

  9. No painel esquerdo, selecione Screen1 > reticências (...) > Excluir (não precisamos desta tela em nosso aplicativo).

Estamos mantendo esse aplicativo simples para nos concentrarmos em chamar a API de Análise de Texto, mas você pode adicionar itens, como lógica para mostrar e ocultar os controles com base nas caixas de seleção marcadas, tratamento de erro se o usuário não selecionar nenhuma opção e assim por diante.

Adicionar lógica para fazer as chamadas certas à API

OK, temos um aplicativo atraente, mas ele ainda não faz nada. Corrigiremos isso em alguns instantes. Mas antes de nos aprofundarmos nos detalhes, vamos entender o padrão que o aplicativo segue:

  1. O aplicativo faz chamadas específicas à API com base nas caixas de seleção marcadas no aplicativo. Quando clicamos ou tocamos em Analisar texto, o aplicativo faz uma, duas ou três chamadas à API.

  2. Os dados retornados pela API são armazenados em três coleções diferentes: languageCollect, sentimentCollect e phrasesCollect.

  3. A propriedade Text de dois dos rótulos e a propriedade Items da galeria são atualizados de acordo com o que existe nas três coleções.

Com esse contexto, vamos adicionar a fórmula à propriedade OnSelect de nosso botão. É nesse momento que toda a mágica acontece.

If(chkLanguage.Value=true,

        ClearCollect(languageCollect, TextAnalytics.DetectLanguage({numberOfLanguagesToDetect:1, text:tiTextToAnalyze.Text}).detectedLanguages.name)

);

If(chkPhrases.Value=true,

        ClearCollect(phrasesCollect, TextAnalytics.KeyPhrases({language:"en", text:tiTextToAnalyze.Text}).keyPhrases)

);

If(chkSentiment.Value=true,

        ClearCollect(sentimentCollect, TextAnalytics.DetectSentiment({language:"en", text:tiTextToAnalyze.Text}).score)

)

Há algumas coisas acontecendo aqui, portanto, vamos analisá-las:

  • As instruções If são simples – se uma caixa de seleção específica for marcada, faça a chamada à API para essa operação.
  • Em cada chamada, especifique os parâmetros apropriados:
    • Em todas as três chamadas, especificamos tiTextToAnalyze.Text como o texto de entrada.
    • Em DetectLanguage(), embutimos numberOfLanguagesToDetect no código como 1, mas podemos passar esse parâmetro com base em alguma lógica no aplicativo.
    • Em KeyPhrases() e DetectSentiment(), embutimos o idioma em código como “en”, mas podemos passar esse parâmetro com base em alguma lógica no aplicativo. Por exemplo, podemos detectar o idioma primeiro e, depois, definir esse parâmetro de acordo com o que é retornado por DetectLanguage().
  • Para cada chamada feita, adicione os resultados à coleção apropriada:
    • Para languageCollect, adicionamos o name do idioma identificado no texto.
    • Para phrasesCollect, adicionamos as keyPhrases identificadas no texto.
    • Para sentimentCollect, adicionamos a score de sentimento para o texto, que é um valor de 0-1, com 1 sendo 100% positivo.

Exibir os resultados das chamadas à API

Para exibir os resultados das chamadas à API, referencie a coleção apropriada em cada controle:

  1. Defina a propriedade Text do rótulo de idioma como: "The language detected is " & First(languageCollect).name.

    A função First() retorna o primeiro (e, nesse caso, o único) registro em languageCollect e exibimos o name (o único campo) associado a esse registro.

  2. Defina a propriedade Text do rótulo de sentimento como: "The sentiment score is " & Round(First(sentimentCollect.Value).Value, 3)\*100 & "% positive.".

    Essa fórmula também usa a função First(), obtém o Value (0-1) do primeiro e único registro e, em seguida, formata-o como um percentual.

  3. Defina a propriedade Items da galeria de frases-chave como: phrasesCollect.

    Agora estamos trabalhando com uma galeria, de modo que não precisamos da função First() para extrair um único valor. Referenciamos a coleção e a galeria exibe as frases-chave como uma lista.

Executar o aplicativo

Agora que o aplicativo foi concluído, vamos executá-lo para ver como ele funciona. Na imagem a seguir, todas as três opções são selecionadas e o texto é o mesmo que o texto padrão na página da API de Análise de Texto.

Aplicativo concluído com os dados

Se você comparar o resultado desse aplicativo com a página da API de Análise de Texto no início deste artigo, verá que obtemos os mesmos resultados.

Esperamos que agora você entenda um pouco mais sobre a API de Análise de Texto e tenha gostado de ver como incorporá-la em um aplicativo. Não deixe de nos contatar caso existam outros Serviços Cognitivos (ou outros serviços em geral) que você deseja ver em nossos artigos. Como sempre, deixe comentários e perguntas nos comentários.