Neste tutorial, demonstramos como criar um modelo personalizado de classificação de conteúdo com o AutoML Natural Language. No aplicativo, um modelo personalizado é treinado com um conjunto de "momentos felizes" do banco de dados de código aberto HappyDB do Kaggle. No modelo resultante, os momentos felizes são classificados em categorias que refletem as causas da felicidade.
Os dados são disponibilizados por meio de uma licença Creative Commons CCO de domínio público.
No tutorial, explicamos o treinamento do modelo personalizado, a avaliação do desempenho dele e a classificação de novo conteúdo.
Pré-requisitos
Configurar o ambiente do projeto
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs AutoML Natural Language.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs AutoML Natural Language.
- Instale a Google Cloud CLI.
- Siga as instruções para criar uma conta de serviço e fazer o download de um arquivo de chave.
- Defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
para o caminho até o arquivo de chave da conta de serviço que você salvou quando criou essa conta. Exemplo:export GOOGLE_APPLICATION_CREDENTIALS=key-file
- Adicione a nova conta de serviço ao papel do IAM Editor do AutoML com os comandos a seguir. Substitua project-id pelo nome do seu
projeto do Google Cloud e service-account-name pelo nome da
nova conta de serviço, por exemplo,
service-account1@myproject.iam.gserviceaccount.com
.gcloud auth login gcloud config set project project-id gcloud projects add-iam-policy-binding project-id
--member=serviceAccount:service-account-name
--role='roles/automl.editor' - Permita que a conta de serviço do AutoML Natural Language acesse os recursos do seu projeto do Google Cloud.
gcloud projects add-iam-policy-binding project-id
--member="serviceAccount:custom-vision@appspot.gserviceaccount.com"
--role="roles/storage.admin" - Instale a biblioteca de cliente.
- Defina as variáveis de ambiente PROJECT_ID e REGION_NAME.
Substitua project-id pelo ID do projeto do seu projeto do Google Cloud Platform. Atualmente, o AutoML Natural Language requer o localus-central1
.export PROJECT_ID="project-id" export REGION_NAME="us-central1"
- Crie um bucket do Google Cloud Storage para armazenar os documentos que serão usados para treinar o modelo personalizado.
O nome do bucket precisa estar no formato:$PROJECT_ID-lcm
. O comando a seguir cria um intervalo de armazenamento na regiãous-central1
denominada$PROJECT_ID-lcm
.gsutil mb -p $PROJECT_ID -c regional -l $REGION_NAME gs://$PROJECT_ID-lcm/
- Copie o arquivo
happiness.csv
do bucket público para o bucket do Google Cloud Storage.
O arquivohappiness.csv
está na pasta NL-classification no bucket público cloud-ml-data.
Locais dos arquivos de código-fonte
O código-fonte pode ser encontrado aqui. É possível copiar os arquivos de código-fonte para a pasta do projeto do Google Cloud Platform. Como alternativa, recomendamos que você copie diretamente o código desta página conforme atinge cada etapa.
Python
O tutorial consiste nestes arquivos do Python:
language_text_classification_create_dataset.py
: inclui a funcionalidade para criar um conjunto de dados.import_dataset.py
: inclui a funcionalidade para importar um conjunto de dados.language_text_classification_create_model.py
: inclui a funcionalidade para criar um modelo.list_model_evaluations.py
: inclui a funcionalidade para listar avaliações de modelos.language_text_classification_predict.py
: inclui a funcionalidade relacionada à previsão.delete_model.py
: inclui a funcionalidade para excluir um modelo.
Java
O tutorial consiste nestes arquivos do Java:
LanguageTextClassificationCreateDataset.java
: inclui a funcionalidade para criar um conjunto de dados.ImportDataset.java
: inclui a funcionalidade para importar um conjunto de dados.LanguageTextClassificationCreateModel.java
: inclui a funcionalidade para criar um modelo.ListModelEvaluations.java
: inclui a funcionalidade para listar avaliações de modelos.LanguageTextClassificationPredict.java
: inclui a funcionalidade relacionada à previsão.DeleteModel.java
: inclui a funcionalidade para excluir um modelo.
Node.js
O tutorial consiste nestes programas do Node.js:
language_text_classification_create_dataset.js
: inclui a funcionalidade para criar um conjunto de dados.import_dataset.js
: inclui a funcionalidade para importar um conjunto de dados.language_text_classification_create_model.js
: inclui a funcionalidade para criar um modelo.list_model_evaluations.js
: inclui a funcionalidade para listar avaliações de modelos.language_text_classification_predict.js
: inclui a funcionalidade relacionada à previsão.delete_model.js
: inclui a funcionalidade para excluir um modelo.
Como executar o aplicativo
Etapa 1: criar um conjunto de dados
A primeira etapa na criação de um modelo personalizado é criar um conjunto de dados vazio que vai armazenar os dados de treinamento do modelo. Ao criar um conjunto de dados, você especifica o tipo de classificação que quer que seu modelo personalizado execute:
- MULTICLASS atribui uma única etiqueta a cada documento classificado
- MULTILABEL permite que um documento seja atribuído a vários rótulos
Neste tutorial, você criará um conjunto de dados chamado '"happydb" e usará o MULTICLASS.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Execute a função create_dataset
para criar um conjunto de dados vazio. Você precisará modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. Defina o
display_name
do conjunto de dados (happydb
).
Python
python language_text_classification_create_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationCreateDataset"
Node.js
node language_text_classification_create_dataset.js
Resposta
A resposta inclui os detalhes do conjunto de dados recém-criado, como o ID do conjunto de dados que você usará para se referir a ele em solicitações futuras. Recomendamos definir uma variável de ambiente DATASET_ID
como o valor do código do conjunto de dados.
Dataset name: projects/216065747626/locations/us-central1/datasets/TCN7372141011130533778 Dataset id: TCN7372141011130533778 Dataset display name: happydb Text classification dataset specification: classification_type: MULTICLASS Dataset example count: 0 Dataset create time: seconds: 1530251987 nanos: 216586000
Etapa 2: importar itens de treinamento para o conjunto de dados
A próxima etapa é preencher o conjunto de dados com uma lista de itens de conteúdo de treinamento rotulados com as categorias de destino.
A interface da função import_dataset
usa como entrada um arquivo .csv que lista os locais de todos os documentos de treinamento e o rótulo adequado a cada documento.
Consulte Como preparar os dados de treinamento para ver detalhes sobre o formato exigido. Neste tutorial, happiness.csv
será usado. Você fez upload dele para o Google Cloud Storage nas etapas anteriores.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Execute a função import_data
para importar o conteúdo de treinamento. A primeira parte do código a ser alterada é o ID do conjunto de dados da etapa anterior, enquanto a segunda é o URI de happiness.csv
. Você precisará modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. - Defina o
dataset_id
do conjunto de dados usando a saída da etapa anterior. Defina o
path
, que é o URI degs://YOUR_PROJECT_ID-lcm/csv/happiness.csv
.
Python
python import_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ImportDataset"
Node.js
node import_dataset.js
Resposta
Processing import... Dataset imported.
Etapa 3: criar (treinar) o modelo
Agora que você tem um conjunto de dados de documentos de treinamento rotulados, é possível treinar um novo modelo.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Chame a função create_model
para criar um modelo. Use o ID do conjunto de dados conseguido nas etapas anteriores. Você precisará modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. - Defina o
dataset_id
do conjunto de dados usando a saída da etapa anterior. Defina
display_name
do modelo (happydb_model)
Python
python language_text_classification_create_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationCreateModel"
Node.js
node language_text_classification_create_model.js
Resposta
A função create_model
inicia uma operação de treinamento e imprime o nome da operação. O treinamento é realizado de modo assíncrono e pode levar um tempo para ser concluído. Portanto, é possível usar o ID da operação para verificar o status do treinamento.
Quando o treinamento for concluído, create_model
retornará o ID do modelo. Assim como você fez com o ID do conjunto de dados, defina uma variável de ambiente MODEL_ID
como o valor do ID do modelo retornado.
Training operation name: projects/216065747626/locations/us-central1/operations/TCN3007727620979824033 Training started... Model name: projects/216065747626/locations/us-central1/models/TCN7683346839371803263 Model id: TCN7683346839371803263 Model display name: happydb_model Model create time: seconds: 1529649600 nanos: 966000000 Model deployment state: deployed
Etapa 4: avaliar o modelo
Após o treinamento, avalie a prontidão do modelo analisando a precisão, o recall e a pontuação F1 dele.
A função display_evaluation
considera o ID do modelo como um parâmetro.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Faça a solicitação a seguir para exibir o desempenho geral da avaliação do modelo. Você precisará modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. Defina o
model_id
como o ID do modelo.
Python
python list_model_evaluations.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations"
Node.js
node list_model_evaluations.js
Resposta
Se as pontuações de precisão e recall forem muito baixas, você poderá fortalecer o conjunto de dados de treinamento e treinar novamente seu modelo. Para mais informações, consulte Como avaliar modelos.
Precision and recall are based on a score threshold of 0.5 Model Precision: 96.3% Model Recall: 95.7% Model F1 score: 96.0% Model Precision@1: 96.33% Model Recall@1: 95.74% Model F1 score@1: 96.04%
Etapa 5: implantar o modelo
Quando seu modelo personalizado atende aos padrões de qualidade, você pode implantá-lo e, depois, fazer uma solicitação de previsões.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Para a função deploy_model
, você precisará modificar as linhas de código
a seguir:
- Defina o
project_id
como o PROJECT_ID. Defina o
model_id
como o ID do modelo.
Python
python deploy_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeployModel.java"
Node.js
node deploy_model.js
Resposta
Model deployment finished.
Etapa 6: usar o modelo para fazer uma previsão
Depois de implantar o modelo, é possível usá-lo para classificar novos conteúdos.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Para a função predict
, você precisará modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. - Defina o
model_id
como o ID do modelo. Defina o
content
que você quer prever.
Python
python language_text_classification_predict.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationPredict"
Node.js
node language_text_classification_predict.js
Resposta
A resposta é a pontuação de classificação que mostra quanto o conteúdo corresponde a cada categoria.
Prediction results: Predicted class name: affection Predicted class score: 0.9702693223953247
Etapa 7: excluir um modelo
Quando terminar de usar esse modelo de amostra, basta excluí-lo permanentemente. Não será mais possível usá-lo para previsão.
Copiar o código
Python
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Python.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Java.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para o AutoML Natural Language, consulte Bibliotecas de cliente do AutoML Natural Language. Para mais informações, consulte a documentação de referência da API AutoML Natural Language Node.js.
Para se autenticar no Natural Language do AutoML, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solicitação
Faça uma solicitação com uma operação do tipo delete_model
para excluir um modelo criado. Será necessário modificar as linhas de código a seguir:
- Defina o
project_id
como o PROJECT_ID. Defina o
model_id
como o ID do modelo.
Python
python delete_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel"
Node.js
node delete_model.js
Resposta
Model deleted.