arrow_back

Análise de entidades e sentimento com a API Natural Language

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Análise de entidades e sentimento com a API Natural Language

Lab 45 minutos universal_currency_alt 5 créditos show_chart Intermediário
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP038

Laboratórios autoguiados do Google Cloud

Visão geral

Com a API Cloud Natural Language, é possível extrair entidades do texto, fazer análises sintáticas e de sentimento e classificar o texto em categorias.

Neste laboratório, você aprenderá a usar a API Natural Language para analisar entidades, sentimento e sintaxe.

Neste curso, você vai aprender a:

  • Criar uma solicitação da API Natural Language e chamar a API com curl
  • Extrair entidades e fazer análises de sentimento no texto com a API Natural Language
  • Realizar análise linguística no texto com a API Natural Language
  • Criar uma solicitação da API Natural Language em outro idioma

Configuração e requisitos

Antes de clicar no botão Start Lab

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você verá o seguinte:

    • O botão Abrir Console do Cloud
    • Tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações se forem necessárias
  2. Clique em Abrir Console do Google. O laboratório ativa recursos e depois abre outra guia com a página Fazer login.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Caso seja preciso, copie o Nome de usuário no painel Detalhes do laboratório e cole esse nome na caixa de diálogo Fazer login. Clique em Avançar.

  4. Copie a Senha no painel Detalhes do laboratório e a cole na caixa de diálogo Olá. Clique em Avançar.

    Importante: você precisa usar as credenciais do painel à esquerda. Não use suas credenciais do Google Cloud Ensina. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  5. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do GCP vai ser aberto nesta guia.

Observação: para ver uma lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo. Ícone do menu de navegação

Tarefa 1: crie uma chave de API

Como você usa curl para enviar solicitações para a API Natural Language, é preciso uma chave de API para transmitir o URL da solicitação.

  1. Para criar uma chave de API, no console do Cloud, selecione Menu de navegação > APIs e serviços > Credenciais.

  2. Clique em Criar credenciais e selecione Chave de API.

  3. Copie a chave de API criada e clique em Fechar.

Clique em Verificar meu progresso para conferir o objetivo.

Crie uma chave de API

Para realizar as próximas etapas, conecte-se à instância provisionada para você por SSH.

  1. Clique em Menu de navegação > Compute Engine. Aqui vai aparecer a instância do Linux provisionada, linux-instance, na lista de instâncias de VM.

  2. Clique no botão SSH. Você verá um shell interativo.

  3. Na linha de comando, digite as seguintes informações e substitua <YOUR_API_KEY> pela chave que você copiou:

export API_KEY=<YOUR_API_KEY>

Tarefa 2: envie uma solicitação de análise de entidades

O primeiro método da API Natural Language a ser usado é o analyzeEntities. Com esse método, a API poderá extrair entidades (como pessoas, lugares e eventos) do texto. Para testar a análise de entidades da API, use a seguinte frase:

Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series.

Você cria sua solicitação à API Natural Language no arquivo request.json.

  1. Use o nano (um editor de código) para criar o arquivo request.json:
nano request.json
  1. Digite ou cole o seguinte código no request.json:
{ "document":{ "type":"PLAIN_TEXT", "content":"Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series." }, "encodingType":"UTF8" }
  1. Pressione CTRL+X para sair do nano, Y para salvar o arquivo e ENTER para confirmar.

Na solicitação, você está dando informações à API Natural Language sobre o texto enviado. Os valores de tipo com suporte são PLAIN_TEXT ou HTML. No conteúdo, você transmite o texto que será enviado à API Natural Language para análise.

A API Natural Language também aceita o envio de arquivos armazenados no Cloud Storage para processamento de texto. Para enviar um arquivo do Cloud Storage, é necessário substituir content por gcsContentUri e atribuir a ele o valor do URI do arquivo de texto no Cloud Storage.

encodingType informa à API qual tipo de codificação usar no processamento do texto. A API vai usar essa informação para calcular onde determinadas entidades aparecem no texto.

Clique em Verificar meu progresso para ver o objetivo.

Envie uma solicitação de análise de entidades

Tarefa 3: chame a API Natural Language

  1. Agora é possível transmitir o corpo da solicitação para a API Natural Language, junto com a variável de ambiente da chave de API que você salvou antes, usando o comando curl abaixo (em uma única linha):
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json
  1. Para verificar a resposta, execute:
cat result.json

O início da sua resposta será semelhante a:

"content": "Joanne Rowling", "beginOffset": 0 }, "type": "PROPER" }, { "text": { "content": "Rowling", "beginOffset": 53 }, "type": "PROPER" }, { "text": { "content": "novelist", "beginOffset": 96 }, "type": "COMMON" }, { "text": { "content": "Robert Galbraith", "beginOffset": 65 }, "type": "PROPER" } ] }, ... ] }

Para cada entidade na resposta, você recebe o respectivo campo type, o URL da Wikipédia associado (se houver), salience e os índices de onde essa entidade apareceu no texto. A saliência é um número no intervalo [0,1] que se refere à centralidade da entidade no texto como um todo.

A API Natural Language também reconhece a mesma entidade mencionada de maneiras diferentes. Confira a lista de mentions na resposta: a API consegue identificar que "Joanne Rowling", "Rowling", "novelist" e "Robert Galbraith" apontam para a mesma coisa.

Clique em Verificar meu progresso para ver o objetivo.

Verifique a resposta da análise de entidades

Tarefa 4: análise de sentimento com a API Natural Language

Além de extrair entidades, é possível executar análise de sentimento em um bloco de texto com a API Natural Language. Essa solicitação JSON incluirá os mesmos parâmetros da solicitação acima, mas você precisará alterar o texto para incluir algo com um sentimento mais intenso desta vez.

  1. Use o nano para substituir o código em request.json pelo seguinte e, se quiser, substitua o content abaixo por um texto próprio:
{ "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter is the best book. I think everyone should read it." }, "encodingType": "UTF8" }
  1. Pressione CTRL+X para sair do nano, Y para salvar o arquivo e ENTER para confirmar.

  2. Em seguida, você vai enviar a solicitação ao endpoint analyzeSentiment da API:

curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Sua resposta será semelhante a esta:

{ "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "en", "sentences": [ { "text": { "content": "Harry Potter is the best book.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "I think everyone should read it.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } Observação: não se assuste se suas pontuações forem um pouco diferentes da saída no exemplo.

Chegamos a dois tipos de valores de sentimento: o do documento como um todo e o detalhado por frase. O método "sentiment" retorna dois valores:

  • score: um número entre -1,0 e 1,0 que indica o quanto a declaração é positiva ou negativa.
  • magnitude: um número que varia de 0 a infinito e representa o peso do sentimento expresso na declaração, sem importar se ele é positivo ou negativo.

Blocos mais longos de texto com declarações ponderadas têm valores de magnitude mais altos. A pontuação da primeira frase é positiva (0,7) e a da segunda é neutra (0,1).

Tarefa 5: como analisar o sentimento de uma entidade

Além de identificar detalhes de sentimento em todo o documento de texto, a API Natural Language também pode dividir o sentimento pelas entidades. Use esta frase como exemplo:

I liked the sushi but the service was terrible.

Nesse caso, calcular uma pontuação de sentimento para a frase inteira como você fez acima pode não ser tão útil. Se houvesse outras centenas de avaliações para o mesmo restaurante, seria interessante saber exatamente do que as pessoas gostaram ou não gostaram nas avaliações. Felizmente, a API Natural Language tem um método para extrair o sentimento de cada entidade contida no texto. Esse método é chamado de analyzeEntitySentiment. Vamos conferir como isso funciona.

  1. Use o nano para atualizar o request.json com a frase abaixo:
{ "document":{ "type":"PLAIN_TEXT", "content":"I liked the sushi but the service was terrible." }, "encodingType": "UTF8" }
  1. Pressione CTRL+X para sair do nano, Y para salvar o arquivo e ENTER para confirmar.

  2. Em seguida, chame o endpoint analyzeEntitySentiment com o seguinte comando curl:

curl "https://language.googleapis.com/v1/documents:analyzeEntitySentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Na resposta, você extrai dois objetos de entidade: um para "sushi" e outro para "service". Esta é a resposta completa do JSON:

{ "entities": [ { "name": "sushi", "type": "CONSUMER_GOOD", "metadata": {}, "salience": 0.51064336, "mentions": [ { "text": { "content": "sushi", "beginOffset": 12 }, "type": "COMMON", "sentiment": { "magnitude": 0, "score": 0 } } ], "sentiment": { "magnitude": 0, "score": 0 } }, { "name": "service", "type": "OTHER", "metadata": {}, "salience": 0.48935664, "mentions": [ { "text": { "content": "service", "beginOffset": 26 }, "type": "COMMON", "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "language": "en" }

A pontuação retornada para "sushi" foi 0, ou seja, neutra, e a de "service", -0,7. Ótimo! Você também deve ter percebido que dois objetos de sentimento foram retornados para cada entidade. Se qualquer um desses termos fosse mencionado mais de uma vez, a API retornaria uma pontuação de sentimento e magnitude diferentes para cada menção, além de um sentimento agregado para a entidade.

Observação: não se assuste se suas pontuações forem um pouco diferentes da saída no exemplo.

Tarefa 6: como analisar a sintaxe e as classes gramaticais

Use a análise sintática, um dos outros métodos da API Natural Language, para conferir os detalhes linguísticos do texto. analyzeSyntax extrai informações linguísticas ao dividir o texto em uma série de frases e tokens (geralmente, limites de palavra) e apresentar uma análise mais detalhada desses tokens. A API vai informar a classe gramatical de cada palavra do texto (substantivo, verbo, adjetivo etc.) e como ela se relaciona com outras palavras da frase (se é o radical do verbo, um modificador de substantivo etc.).

Faça um teste com uma frase simples. Esta solicitação JSON será semelhante às anteriores e incluirá uma chave de atributos. Isso dirá para a API fazer as anotações de sintaxe.

  1. Use o nano para substituir o código no request.json pelo seguinte:
{ "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling is a British novelist, screenwriter and film producer." }, "encodingType": "UTF8" }
  1. Pressione CTRL+X para sair do nano, Y para salvar o arquivo e ENTER para confirmar.

  2. Em seguida, chame o método analyzeSyntax da API:

curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

A resposta vai retornar um objeto como o seguinte para cada token da frase:

{ "text": { "content": "is", "beginOffset": 15 }, "partOfSpeech": { "tag": "VERB", "aspect": "ASPECT_UNKNOWN", "case": "CASE_UNKNOWN", "form": "FORM_UNKNOWN", "gender": "GENDER_UNKNOWN", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "proper": "PROPER_UNKNOWN", "reciprocity": "RECIPROCITY_UNKNOWN", "tense": "PRESENT", "voice": "VOICE_UNKNOWN" }, "dependencyEdge": { "headTokenIndex": 2, "label": "ROOT" }, "lemma": "be" },

Analise a resposta:

  • partOfSpeech informa que "Joanne" é um substantivo.
  • dependencyEdge inclui dados que você pode usar para criar uma árvore de dependência sintática do texto. Basicamente, é um diagrama que mostra como as palavras de uma frase se relacionam umas com as outras. Uma árvore de dependência sintática da frase acima ficaria assim:

Árvore de dependência sintática

Observação: é possível criar suas próprias árvores de dependência sintática no navegador com a demonstração da Natural Language disponibilizada no Guia da API Natural Language
  • headTokenIndex é o índice do token com um arco que aponta para "Joanne". Pense em cada token da frase como uma palavra de uma matriz.
  • headTokenIndex igual a 1 para "Joanne" refere-se à palavra "Rowling", à qual está ligada na árvore. O rótulo NN (abreviação de modificador composto por substantivo) descreve o papel da palavra na frase. "Joanne" modifica "Rowling", o sujeito da frase.
  • lemma é a forma canônica da palavra. Por exemplo, as palavras executar, executa, executou e executando têm todas o lema executar. O valor do "lemma" é útil para rastrear ocorrências de uma palavra em um texto longo.

Tarefa 7: processamento de linguagem natural multilíngue

A API Natural Language também oferece suporte a idiomas diferentes do inglês (uma lista completa pode ser conferida no Guia de suporte a idiomas).

  1. Modifique o código em request.json com uma frase em japonês:
{ "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
  1. Pressione CTRL+X para sair do nano, Y para salvar o arquivo e ENTER para confirmar.

Você não informou à API em qual idioma o texto está, mas ela detectou o idioma automaticamente.

  1. Depois, você vai enviar o arquivo ao endpoint analyzeEntities:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

E vai receber a seguinte resposta:

{ "entities": [ { "name": "日本", "type": "LOCATION", "metadata": { "mid": "/m/03_3d", "wikipedia_url": "https://en.wikipedia.org/wiki/Japan" }, "salience": 0.23854347, "mentions": [ { "text": { "content": "日本", "beginOffset": 0 }, "type": "PROPER" } ] }, { "name": "グーグル", "type": "ORGANIZATION", "metadata": { "mid": "/m/045c7b", "wikipedia_url": "https://en.wikipedia.org/wiki/Google" }, "salience": 0.21155767, "mentions": [ { "text": { "content": "グーグル", "beginOffset": 9 }, "type": "PROPER" } ] }, ... ] "language": "ja" }

Os URLs da Wikipédia apontam para as páginas da Wikipédia em japonês. Bacana, não é?

Parabéns!

Você aprendeu a realizar uma análise de texto com a API Cloud Natural Language extraindo entidades, analisando sentimento e fazendo anotações de sintaxe. Você fez o seguinte:

  • Criou uma solicitação da API Natural Language e chamou a API com curl
  • Extraiu entidades e fez análises de sentimento no texto com a API Natural Language
  • Realizou uma análise linguística no texto para criar árvores de dependência sintática
  • Criou uma solicitação da API Natural Language em japonês

Termine a Quest

Este laboratório autoguiado é parte das Quests Intro to ML: Language Processing e Language, Speech, Text & Translation with Google Cloud APIs. Uma Quest é uma série de laboratórios relacionados que formam um programa de aprendizado. Ao concluir uma Quest, você ganha um selo como reconhecimento da sua conquista. É possível publicar os selos e incluir um link para eles no seu currículo on-line ou nas redes sociais. Inscreva-se em qualquer Quest que tenha este laboratório para receber os créditos de conclusão na mesma hora. Confira outras Quests disponíveis.

Comece o próximo laboratório

Faça outro laboratório sobre APIs de Machine Learning, como o Vertex AI Workbench Notebook: Qwik Start ou um destes:

Próximas etapas

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 19 de setembro de 2023

Laboratório testado em 13 de outubro de 2023

Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.