arrow_back

Classificar texto em categorias 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

Classificar texto em categorias com a API Natural Language

Lab 1 hora 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

GSP063

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. Este laboratório tem como foco a classificação de textos. Com um banco de dados de mais de 700 categorias, esse recurso de API facilita a classificação de um grande conjunto de dados de texto.

Conteúdo do laboratório

  • Como criar uma solicitação da API Natural Language e chamar a API com curl
  • Como usar o recurso de classificação de texto da API NL
  • Como usar a classificação de texto para entender um conjunto de dados de artigos de notícias

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

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

  2. A saída será parecida com esta:

Saída:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = <project_ID>

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: para conferir a documentação completa da gcloud, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.

Tarefa 1: ativar a API Cloud Natural Language

  1. Expanda o Menu de navegação (Ícone do menu de navegação) na parte superior esquerda da tela.

  2. Selecione APIs e serviços > APIs e serviços ativados.

  1. Clique em Ativar APIs e serviços.
  1. Em seguida, digite language na caixa de pesquisa.

  2. Clique em API Cloud Natural Language:

O botão Ativar vai aparecer se a API não estiver ativada.

  1. Clique em Ativar para ativar a API Cloud Natural Language.

Quando a API está ativada, o Google Cloud exibe informações sobre ela da seguinte forma:

Detalhes da API, que incluem os dois botões &quot;Gerenciar&quot; e &quot;Experimentar esta API&quot;, bem como a marca de seleção &quot;API ativada&quot;.

Tarefa 2: crie uma chave de API

Já que você usa curl para enviar uma solicitação à API Natural Language, é necessário gerar uma chave de API para transmitir o URL da solicitação.

  1. Para criar uma chave de API, acesse o console e clique em Menu de navegação > APIs e serviços > Credenciais.

  2. Em seguida, clique em Criar credenciais.

  3. No menu suspenso, selecione Chave de API.

  4. Depois, copie a chave gerada e clique em Fechar.

Clique em Verificar meu progresso para conferir o objetivo.

Crie uma chave de API

Agora salve a chave de API como uma variável de ambiente para não precisar digitá-la em cada solicitação.

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

  1. Abra o Menu de navegação e selecione Compute Engine > Instâncias de VM. Uma linux-instance provisionada será exibida.
  1. Clique no botão SSH. Um shell interativo será exibido.

  2. 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 3: classifique uma notícia

Com o método classifyText da API Natural Language, você pode classificar dados de texto em categorias com uma única chamada da API. Esse método retorna uma lista de categorias de conteúdo que se aplicam a um documento de texto.

As categorias variam de amplas, como /Computers & Electronics, a altamente específicas, como /Computers & Electronics/Programming/Java (Programming Language). A lista completa das mais de 700 categorias possíveis está disponível na página Categorias de conteúdo.

Você vai começar classificando um único artigo e descobrindo como usar esse método para entender um grande conjunto de notícias.

  1. Confira esta manchete e esta descrição de um artigo do New York Times na seção de alimentos:

A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes.

  1. Crie um arquivo chamado request.json e adicione o código abaixo. É possível criar o arquivo usando um dos seus editores de linha de comando preferenciais (nano, vim, emacs).
{ "document":{ "type":"PLAIN_TEXT", "content":"A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes." } } Create a request to classify a news article
  1. Agora você pode enviar este texto para o método classifyText da API Natural Language com o seguinte comando curl:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Confira a resposta:

{ categories: [ { name: '/Food & Drink/Cooking & Recipes', confidence: 0.85 }, { name: '/Food & Drink/Food/Meat & Seafood', confidence: 0.63 } ] }

Você criou uma solicitação da API Speech e chamou a API Speech.

  1. Execute este comando para salvar a resposta em um arquivo result.json:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json Verifique a resposta da análise de entidade

A API retornou duas categorias para o texto:

  • /Food & Drink/Cooking & Recipes
  • /Food & Drink/Food/Meat & Seafood

O texto não menciona explicitamente que se trata de uma receita ou mesmo que inclui frutos do mar, mas a API é capaz de categorizá-lo. Classificar um único artigo é interessante. No entanto, para conhecer toda a capacidade desse recurso, classifique muitos dados de texto.

Tarefa 4: classificar um grande conjunto de dados de texto

Para conferir como o método classifyText pode ajudar você a entender um grande conjunto de dados de texto, use este conjunto de dados públicos baseado em matérias da BBC. O conjunto de dados é composto por 2.225 artigos em cinco áreas temáticas (negócios, entretenimento, política, esportes e tecnologia) de 2004 a 2005. Um subconjunto desses artigos está armazenado em um bucket público do Cloud Storage. Cada um dos artigos está em um arquivo .txt.

Para examinar os dados e enviá-los para a API Natural Language, você escreverá um script do Python para ler cada arquivo de texto do Cloud Storage, enviá-lo para o endpoint classifyText e armazenar os resultados em uma tabela do BigQuery. O BigQuery é a ferramenta de data warehouse para Big Data do Google Cloud. Com ele, você pode armazenar e analisar facilmente grandes conjuntos de dados.

  • Execute o comando a seguir para conferir um dos artigos com que você vai trabalhar. O gsutil é uma interface de linha de comando para o Cloud Storage.
gsutil cat gs://spls/gsp063/bbc_dataset/entertainment/001.txt

Em seguida, você vai criar uma tabela do BigQuery para os dados.

Tarefa 5: criar uma tabela do BigQuery para dados de texto categorizados

Antes de enviar o texto para a API Natural Language, você precisa de um local para armazenar o texto e a categoria de cada artigo.

  1. Acesse Menu de navegação > BigQuery no console.

  2. Clique em Concluído.

  3. Para criar um conjunto de dados, clique no ícone Exibir ações ao lado do ID do projeto e selecione Criar conjunto de dados:

A opção &quot;Criar conjunto de dados&quot; destacada no menu &quot;Exibir ações&quot;.

  1. Dê o nome news_classification_dataset ao conjunto de dados e clique em Criar conjunto de dados.

  2. Para criar uma tabela, clique no ícone Exibir ações ao lado de news_classification_dataset e selecione Criar tabela.

  1. Use as configurações abaixo para a nova tabela:
  • Criar tabela de: Tabela em branco
  • Dê o nome article_data à tabela.
  1. Em "Esquema", clique em Adicionar campo e adicione os três seguintes campos:
Nome do campo Tipo Modo
article_text STRING ANULÁVEL
category STRING ANULÁVEL
confidence FLUTUAÇÃO ANULÁVEL

Uma lista de campos na seção &quot;Esquema&quot; da página &quot;Criar tabela&quot;, incluindo &quot;article-text&quot;, &quot;category&quot; e &quot;confidence&quot;.

  1. Clique em Criar tabela.

A tabela está vazia por enquanto. Na próxima etapa, você vai ler artigos do Cloud Storage, enviar o texto para a classificação da API Natural Language e armazenar o resultado no BigQuery.

Clique em Verificar meu progresso para conferir o objetivo.

Crie um conjunto de dados e uma tabela para dados de texto categorizados

Tarefa 6: classificar dados de notícias e armazenar o resultado no BigQuery

Para realizar as próximas etapas, conecte-se ao Cloud Shell. Se for solicitado, clique em Continuar.

Antes de escrever um script para enviar os dados de notícias para a API Natural Language, você precisa criar uma conta de serviço. Ela será usada para autenticar a API Natural Language e o BigQuery com um script do Python.

  1. Exporte o ID do projeto como uma variável de ambiente:
export PROJECT={{{project_0.project_id | Project ID}}}
  1. Execute os seguintes comandos para criar uma conta de serviço:
gcloud iam service-accounts create my-account --display-name my-account gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/bigquery.admin gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/serviceusage.serviceUsageConsumer gcloud iam service-accounts keys create key.json --iam-account=my-account@$PROJECT.iam.gserviceaccount.com export GOOGLE_APPLICATION_CREDENTIALS=key.json

Você já pode enviar os dados de texto para a API Natural Language.

  1. Escreva um script em Python usando o módulo do Python para Google Cloud.

Você pode fazer o mesmo em qualquer linguagem. Existem muitas bibliotecas de clientes de nuvem.

  1. Crie um arquivo chamado classify-text.py e copie o código a seguir nele. É possível criar o arquivo usando um dos seus editores de linha de comando preferenciais (nano, vim, emacs).
from google.cloud import storage, language, bigquery # Set up your GCS, NL, and BigQuery clients storage_client = storage.Client() nl_client = language.LanguageServiceClient() bq_client = bigquery.Client(project='{{{project_0.project_id | Project ID}}}') dataset_ref = bq_client.dataset('news_classification_dataset') dataset = bigquery.Dataset(dataset_ref) table_ref = dataset.table('article_data') table = bq_client.get_table(table_ref) # Send article text to the NL API's classifyText method def classify_text(article): response = nl_client.classify_text( document=language.Document( content=article, type_=language.Document.Type.PLAIN_TEXT ) ) return response rows_for_bq = [] files = storage_client.bucket('qwiklabs-test-bucket-gsp063').list_blobs() print("Got article files from GCS, sending them to the NL API (this will take ~2 minutes)...") # Send files to the NL API and save the result to send to BigQuery for file in files: if file.name.endswith('txt'): article_text = file.download_as_bytes() nl_response = classify_text(article_text) if len(nl_response.categories) > 0: rows_for_bq.append((str(article_text), nl_response.categories[0].name, nl_response.categories[0].confidence)) print("Writing NL API article data to BigQuery...") # Write article text + category data to BQ errors = bq_client.insert_rows(table, rows_for_bq) assert errors == []

Você já pode classificar artigos e importá-los para o BigQuery.

  1. Execute o script a seguir:
python3 classify-text.py

O script leva cerca de dois minutos para ser concluído. Enquanto ele está em execução, vamos discutir o que está acontecendo.

Você está usando a biblioteca de cliente do Python para Google Cloud a fim de acessar o Cloud Storage, a API Natural Language e o BigQuery. Primeiro, um cliente é criado para cada serviço. Em seguida, são criadas referências para a tabela do BigQuery. O código files é uma referência para cada um dos arquivos do conjunto de dados da BBC no bucket público. Os arquivos são analisados, é feito o download dos artigos como strings e cada um deles é enviado à API Natural Language na função classify_text. Os artigos em que a API Natural Language retorna uma categoria são salvos em uma lista rows_for_bq com os respectivos dados de categoria. Depois de classificar cada artigo, os dados são inseridos no BigQuery usando insert_rows().

Observação: a API Natural Language pode retornar mais de uma categoria para um documento. No entanto, a fim de simplificar o processo, você armazena apenas a primeira categoria retornada neste laboratório.

Quando a execução do script terminar, verifique se os dados do artigo foram salvos no BigQuery.

  1. No BigQuery, acesse a tabela article_data na guia "Explorer" e clique em Consulta > Em uma nova guia para consultá-la:

A opção &quot;Em uma nova guia&quot; destacada no menu suspenso &quot;Consulta&quot;.

  1. Edite os resultados na caixa Consulta não salva adicionando um asterisco entre SELECT e FROM:
SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data`
  1. Clique em Executar.

Os dados serão exibidos quando a consulta for concluída.

  1. Role para a direita para acessar a coluna da categoria.

A coluna "category" tem o nome da primeira categoria que a API Natural Language retornou para o artigo. Além disso, confidence é um valor entre 0 e 1 que indica o grau de confiança da API na categorização correta do artigo.

Na próxima etapa, você vai aprender a realizar consultas mais complexas nos dados.

Tarefa 7: analisar os dados de notícias categorizados no BigQuery

Primeiro confira quais categorias foram mais comuns no conjunto de dados.

  1. No console do BigQuery, clique em + Criar consulta.

  2. Digite a seguinte consulta:

SELECT category, COUNT(*) c FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` GROUP BY category ORDER BY c DESC
  1. Clique em Executar.

Os resultados da consulta devem ser parecidos com estes:

Os resultados da consulta, em que diversas categorias são listadas, como /Notícias/Política e /Negócios e Indústria.

Se você quiser encontrar o artigo classificado em uma categoria mais obscura como /Arts & Entertainment/Music & Audio/Classical Music, é possível usar a seguinte consulta:

SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"

Ou você pode exibir apenas os artigos que tiveram um índice de confiança maior que 90% retornado pela API Natural Language:

SELECT article_text, category FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE cast(confidence as float64) > 0.9

Para realizar mais consultas nos dados, confira a documentação do BigQuery. O BigQuery também se integra a várias ferramentas de visualização. Para criar visualizações com os dados de notícias categorizados, confira o Guia de início rápido do Data Studio para BigQuery.

Parabéns!

Você aprendeu a usar o método de classificação de texto da API Natural Language para classificar artigos de notícias. Você começou classificando um artigo e, em seguida, aprendeu a classificar e analisar um grande conjunto de dados de notícias usando a API NL com o BigQuery.

Conteúdo abordado

  • Como criar uma solicitação classifyText da API Natural Language e chamar a API com curl
  • Como usar o módulo do Python no Google Cloud para analisar um grande conjunto de dados de notícias
  • Como importar e analisar dados no BigQuery

Termine a Quest

Este laboratório autoguiado faz parte das Quests Machine Learning APIs, Data Engineering 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 o catálogo do Google Cloud Ensina para conferir todas as Quests disponíveis.

Comece o próximo laboratório

Faça o laboratório Prever compras de visitantes com um modelo de classificação no BQML para continuar a Quest ou confira uma destas sugestões:

Próximas etapas / Saiba mais

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 20 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.