Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Azure AI Natural Language Understanding: do texto a insights acionáveis

By David SpenardFeb 6, 202511 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Foto de Elnur via Shutterstock

Introdução

Não há dúvida de que a IA está transformando a forma como as aplicações são desenvolvidas e como as empresas operam hoje. Na corrida das organizações para tirar proveito dos recursos de IA, o Microsoft Azure se firmou como uma plataforma robusta que democratiza o acesso a serviços avançados de IA. Com o Azure AI Services (antigo Cognitive Services), quem desenvolve aplicações já consegue implementar funcionalidades sofisticadas de IA, como compreensão de linguagem natural ou reconhecimento de imagens, sem precisar de conhecimento aprofundado em machine learning nem de uma infraestrutura computacional gigantesca.

O Azure AI Services traz uma série de recursos de IA. Neste artigo, vamos mostrar uma forma de integrar IA às aplicações para extrair informações, classificar texto, entender linguagem conversacional, responder perguntas e muito mais, usando o Azure AI Language Service.

Pré-requisitos

  1. Conta Azure, gratuita por até 30 dias caso você ainda não tenha uma.
  2. Conhecimento básico do Azure e de navegação no portal do Azure.
  3. Para rodar os exemplos em Python, é recomendado conhecimento básico de Python e pip, além de acesso ao Github para baixar o código de exemplo.
  4. Algum conhecimento de Docker e de containerização de aplicações também ajuda.

Visão geral das etapas

  1. Confirme as permissões e o acesso ao Azure AI Services.
  2. Crie um endpoint de API gerenciado para o Language Service.
  3. Teste a API com os exemplos de código em Python.
  4. Opcionalmente, teste a API hospedada localmente no Docker.
  5. Faça a limpeza dos recursos.

Passo a passo

Etapa 1: configuração inicial para confirmar o acesso ao AI Services

Abra o portal do Azure em https://portal.azure.com, vá até Microsoft Entra ID (antigo Azure Active Directory), pesquise pela sua conta de usuário e selecione-a. Em seguida, clique em Azure role assignment. A opção mais simples para este exercício é atribuir a função Owner ou Contributor no nível da Subscription ou do Resource Group, garantindo o acesso adequado aos recursos do Azure que serão criados. No meu caso, criei um Resource Group e atribuí ao meu usuário a função Owner sobre ele.

As atribuições de função do Azure estão explicadas aqui e, se você ainda não tem um Resource Group, há uma explicação completa do uso aqui.

Atribuições de função do Azure para um usuário específico

No portal do Azure, vá até Subscriptions e selecione Resource Providers. Localize Microsoft.CognitiveServices e clique em Register caso o recurso ainda não esteja registrado.

Esse processo está detalhado aqui, na documentação do Azure Resource Manager.

Resource Providers

Etapa 2: criar um endpoint de API gerenciado para o Language Service

Os Azure AI Services são serviços gerenciados, com uma API exposta para fácil consumo. Existe uma opção chamada Azure AI service multi-service account, que dá acesso a vários serviços de IA por um único endpoint, mas que exige implantação em container para expor a API. Por isso, neste exemplo usamos o Language Service gerenciado, que é um recurso dedicado apenas a funcionalidades de linguagem e mais simples de configurar.

No portal do Azure, vá até Azure AI Services, selecione Language Service e depois clique em Create Language.

O Azure AI service para Language já vem com vários recursos prontos, como análise de sentimento, extração de frases-chave e outros, suficientes para este exercício. Clique em Continue to create your resource.

Criar recurso do Language Service

Avance pelas páginas do assistente e configure os seguintes campos:

  • Subscription: vem preenchido com a sua assinatura atual.
  • Resource Group: use um grupo existente ou crie um para este exercício.
  • Region: padrão East US.
  • Name: escolha um nome único para o domínio do seu Language Service.
  • Pricing tier: escolha o nível gratuito, se disponível.
  • Marque a caixa referente ao uso responsável de IA.
  • Network: escolha todas as redes, a menos que queira reservar um tempo para restringir o acesso a uma rede específica, intervalo de IP ou endpoint privado. Neste exemplo, optei pelo acesso público para facilitar, mas isso não é recomendado a longo prazo.

Encontrei alguns bugs no portal do Azure em que mensagens de erro não correspondiam à realidade. Se isso acontecer com você, confirme antes que seguiu a etapa 1 acima para garantir o acesso ao AI Services, antes de presumir que se trata de um falso erro.

Na última página do assistente, revise as configurações e clique em Create para criar o recurso.

Tela de confirmação de criação do Language Service

A implantação leva alguns minutos. Depois, clique em Go to resource para ver as configurações. Aqui você pode explorar com mais profundidade os recursos e a configuração do Language Service. Selecione Keys and Endpoint para visualizar as duas informações necessárias para acessar a API na etapa 3 abaixo.

Repare que há duas chaves disponíveis para facilitar a rotação quando necessário, mas qualquer uma delas funciona para o acesso à API. As melhores práticas para gerenciamento de segredos no Azure estão aqui.

Chave e endpoint do Language Service

Etapa 3: testar a API com os exemplos em Python

Considerando que você tenha Python e pip instalados localmente e acesso ao Github, conforme explicado nos Pré-requisitos, é só usar o código de exemplo deste repositório, baixando o arquivo zip ou clonando o repositório.

git clone https://github.com/doitintl/azure-ai-services-demo.git

Com o código já disponível na sua máquina, edite o arquivo .env para informar a chave da API e o endpoint da etapa 3 acima. A versão 3.1 do text analytics era a vigente no momento da escrita deste artigo, então consulte a referência da Language REST API caso encontre algum problema com essa versão.

COGNITIVE_SERVICES_ENDPOINT=<your endpoint>
COGNITIVE_SERVICES_KEY=<your api key>
SENTIMENT_ANALYSIS_PATH=/text/analytics/v3.1/sentiment?
KEY_PHRASE_EXTRACTION_PATH=/text/analytics/v3.1/keyPhrases
LANGUAGE_DETECTION_PATH=/text/analytics/v3.1/languages?

Há uma dependência que precisa ser instalada antes da execução do código. Se você tiver problemas para instalar essa biblioteca ou rodar qualquer trecho de código Python, dá para usar um ambiente virtual Python e executar os exemplos em uma base limpa. Os ambientes virtuais estão explicados aqui e exigem só algumas etapas para configurar e usar com Python.

pip install python-dotenv

Há três arquivos Python disponíveis para testar alguns recursos do Language Service: análise de sentimento, extração de frases-chave e detecção de idioma. Use apenas um destes comandos para executar o arquivo Python correspondente.

python sentiment_analysis.py
python key_phrase_extraction.py
python language_detection.py

Na linha de comando, digite algum texto para análise, como mostrado abaixo para extração de frases-chave.

david@Mac azure-ai-services-demo % python key_phrase_extraction.py
Enter some text to extract its key phrases. Enter q to quit.

Language detection is one of the features offered by Azure AI Language,
a collection of machine learning and AI algorithms in the cloud for
developing intelligent applications that involve written language.
Language detection is able to detect more than 100 languages in their
primary script.

Request:
 {
  "documents": [\
    {\
      "id": 1,\
      "text": "Language detection is one of the features offered by\
Azure AI Language, a collection of machine learning and AI algorithms\
in the cloud for developing intelligent applications that involve written\
language. Language detection is able to detect more than 100 languages\
in their primary script."\
    }\
  ]
}

Response:
 {
  "documents": [\
    {\
      "id": "1",\
      "keyPhrases": [\
        "Azure AI Language",\
        "AI algorithms",\
        "Language detection",\
        "written language",\
        "machine learning",\
        "intelligent applications",\
        "primary script",\
        "features",\
        "collection",\
        "cloud",\
        "100 languages"\
      ],\
      "warnings": []\
    }\
  ],
  "errors": [],
  "modelVersion": "2022-10-01"
}

Key Phrases:
- Azure AI Language
- AI algorithms
- Language detection
- written language
- machine learning
- intelligent applications
- primary script
- features
- collection
- cloud
- 100 languages

Para testar a API com um comando CURL, veja um exemplo de análise de sentimento. Basta substituir my-endpoint e my-key no comando.

curl -X POST "https://my-endpoint/text/analytics/v3.1/sentiment" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: my-key" \
-d "{\"documents\":[{\"id\":\"1\",\"text\":\"The performance was amazing! The sound could have been clearer.\"},{\"id\":\"2\",\"text\":\"The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.\"}]}"
{
    "documents": [\
        {\
            "id": "1",\
            "sentiment": "mixed",\
            "confidenceScores": {\
                "positive": 0.5,\
                "neutral": 0.09,\
                "negative": 0.41\
            },\
            "sentences": [\
                {\
                    "sentiment": "positive",\
                    "confidenceScores": {\
                        "positive": 1.0,\
                        "neutral": 0.0,\
                        "negative": 0.0\
                    },\
                    "offset": 0,\
                    "length": 29,\
                    "text": "The performance was amazing! "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.17,\
                        "negative": 0.82\
                    },\
                    "offset": 29,\
                    "length": 34,\
                    "text": "The sound could have been clearer."\
                }\
            ],\
            "warnings": []\
        },\
        {\
            "id": "2",\
            "sentiment": "negative",\
            "confidenceScores": {\
                "positive": 0.0,\
                "neutral": 0.0,\
                "negative": 1.0\
            },\
            "sentences": [\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.0,\
                        "negative": 1.0\
                    },\
                    "offset": 0,\
                    "length": 40,\
                    "text": "The food and service were unacceptable. "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.0,\
                        "negative": 1.0\
                    },\
                    "offset": 40,\
                    "length": 63,\
                    "text": "While the host was nice, the waiter was rude and food was cold."\
                }\
            ],\
            "warnings": []\
        }\
    ],
    "errors": [],
    "modelVersion": "2024-03-01"
}

Etapa 4: hospedar a API no Docker

Como exercício opcional, se você tem familiaridade com Docker e quer hospedar a API do Language Service em um container Docker, a configuração é simples. Nesse cenário, há imagens disponíveis para recursos específicos do Language Service, como análise de sentimento.

Faça a implantação do container Docker localmente. Basta substituir my-endpoint e my-key no comando. Os detalhes sobre como configurar e executar o container de análise de sentimento estão aqui.

docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 mcr.microsoft.com/azure-cognitive-services/textanalytics/sentiment:latest Eula=accept Billing=https://my-endpoint ApiKey=my-key

Se tiver problemas com a porta 5000, escolha outra porta. No Mac OS, o AirPlay Receiver pode estar usando a porta 5000, e dá para desativá-lo em System Settings > General > AirDrop & Handoff > AirPlay Receiver.

Depois que a imagem for baixada e o container construído, você pode confirmar se ele está em execução acessando http://localhost:5000/

Container Docker local em execução

Há também uma página de status em http://localhost:5000/status e a documentação completa dos endpoints em http://localhost:5000/swagger

Página de status do container Docker local

Agora teste o container com um comando CURL, parecido com o usado para testar o serviço gerenciado hospedado no Azure AI Services, com a diferença de que agora a porta é especificada e não é preciso enviar a chave de API no cabeçalho.

 curl -X POST "http://localhost:5000/text/analytics/v3.1/sentiment" -H "Content-Type: application/json" --data-ascii "{'documents':[{'id':1,'text':'The performance was amazing! The sound could have been clearer.'},{'id':2,'text':'The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.'}]}"
{
    "documents": [\
        {\
            "id": "1",\
            "sentiment": "positive",\
            "confidenceScores": {\
                "positive": 0.99,\
                "neutral": 0.0,\
                "negative": 0.0\
            },\
            "sentences": [\
                {\
                    "sentiment": "positive",\
                    "confidenceScores": {\
                        "positive": 0.99,\
                        "neutral": 0.0,\
                        "negative": 0.0\
                    },\
                    "offset": 0,\
                    "length": 29,\
                    "text": "The performance was amazing! "\
                },\
                {\
                    "sentiment": "neutral",\
                    "confidenceScores": {\
                        "positive": 0.19,\
                        "neutral": 0.47,\
                        "negative": 0.34\
                    },\
                    "offset": 29,\
                    "length": 34,\
                    "text": "The sound could have been clearer."\
                }\
            ],\
            "warnings": []\
        },\
        {\
            "id": "2",\
            "sentiment": "negative",\
            "confidenceScores": {\
                            "positive": 0.0,\
                "neutral": 0.01,\
                "negative": 0.98\
            },\
            "sentences": [\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.01,\
                        "negative": 0.99\
                    },\
                    "offset": 0,\
                    "length": 40,\
                    "text": "The food and service were unacceptable. "\
                },\
                {\
                    "sentiment": "negative",\
                    "confidenceScores": {\
                        "positive": 0.0,\
                        "neutral": 0.02,\
                        "negative": 0.98\
                    },\
                    "offset": 40,\
                    "length": 63,\
                    "text": "While the host was nice, the waiter was rude and food was cold."\
                }\
            ],\
            "warnings": []\
        }\
    ],
    "errors": [],
    "modelVersion": "2022-11-01"
}

Implantando o container no Azure

Esse tema foge do escopo e do foco principal deste artigo, mas, já que demonstramos a hospedagem em Docker, vale mencionar que o Azure tem várias opções para construir e implantar aplicações nativo da nuvem e em containers. Conforme as necessidades específicas de escalabilidade, custo, alta disponibilidade, preferências de gerenciamento (caso você prefira não usar o serviço gerenciado do Azure AI) e outros pontos, algumas opções a considerar são Azure Container Instances, Azure Container Apps e Azure Kubernetes Service. Essas opções, entre outras, estão explicadas em mais detalhes aqui.

Etapa 5: limpeza dos recursos do Azure

A limpeza dos recursos do Azure usados neste exercício é simples, já que apenas o Language Service foi criado. Se você criou um Resource Group exclusivamente para este exercício, pode excluí-lo também, se preferir, mas ele não tem custo, pois é apenas uma forma de agrupar recursos do Azure.

Vá até Azure AI Services, selecione Language Service, marque a caixa do serviço que você criou, clique em Delete e prossiga com a exclusão.

Exclusão do Language Service

O Azure AI Language Service permite que as empresas extraiam insights relevantes de textos com análise de sentimento, extração de frases-chave e detecção de idioma. Mostramos como é simples integrar esses recursos a aplicações por meio de um endpoint gerenciado do Azure AI Services ou hospedando você mesmo um container, seja no Docker ou em qualquer ambiente que suporte aplicações em container.

Principais conclusões

Por que escolher o Azure AI Language Service?

  • Facilidade de uso: com modelos prontos e APIs simples, as empresas conseguem integrar rapidamente recursos avançados de Processamento de Linguagem Natural às suas aplicações sem precisar de conhecimento aprofundado em machine learning.
  • Integração sem atrito: o Azure AI Language Service se integra de forma fluida a outras ferramentas do Azure, como Azure Machine Learning, Power BI e Azure Synapse Analytics, possibilitando análise e visualização de dados de ponta a ponta.
  • Custo-benefício: o modelo pay-as-you-go e a infraestrutura escalável garantem que as empresas paguem apenas pelo que usam, tornando o serviço acessível a organizações de todos os portes.
  • Flexibilidade e escalabilidade: seja com endpoints gerenciados para uma integração rápida ou rodando os serviços em containers para mais controle, o Azure AI Language Service oferece a flexibilidade necessária para atender a diferentes necessidades de negócio. A escalabilidade desses serviços assegura que eles dão conta de workloads de qualquer porte, de pequenas startups a grandes empresas.
  • Segurança de nível corporativo: os robustos recursos de segurança e conformidade do Azure garantem que seus dados fiquem protegidos em cada etapa.

Exemplos de casos de uso

  • Análise de sentimento: ao entender o sentimento por trás de feedbacks de clientes, avaliações ou postagens em redes sociais, as empresas conseguem identificar pontos de melhoria, medir a satisfação do cliente e ajustar suas estratégias para aprimorar a experiência.
  • Extração de frases-chave: extrair frases-chave de documentos, e-mails ou tickets de suporte ajuda as empresas a identificar rapidamente os principais tópicos, tendências e dores. Isso resulta em respostas mais ágeis, melhor alocação de recursos e decisões mais bem informadas.
  • Detecção de idioma: a detecção automática do idioma do texto permite que as empresas otimizem fluxos multilíngues, melhorem a comunicação com públicos globais e garantam que o conteúdo seja localizado corretamente.

Comece agora

Da otimização de custos à automação de infraestrutura, do hardening de segurança ao design de arquitetura em nuvem, a DoiT International tem ampla expertise em diversos domínios de cloud. Para descobrir como a DoiT pode ajudar você a implementar IA e modernizar outros aspectos da sua infraestrutura em nuvem, entre em contato aqui e conheça nossas soluções de engenharia em nuvem.