Tutorial sull'API AutoML Natural Language

Questo tutorial mostra come creare un modello personalizzato per la classificazione dei contenuti utilizzando AutoML Natural Language. L'applicazione addestra un modello personalizzato utilizzando un corpus di "momenti felici" in crowdsourcing dal set di dati open source di Kaggle HappyDB. Il modello risultante classifica i momenti felici in categorie che riflettono le cause della felicità.

I dati sono resi disponibili tramite una licenza Creative Commons CCO: dominio pubblico.

Il tutorial illustra l'addestramento del modello personalizzato, la valutazione delle sue prestazioni e la classificazione di nuovi contenuti.

Prerequisiti

Configura l'ambiente del progetto

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API AutoML Natural Language.

    Abilita le API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Abilita le API AutoML Natural Language.

    Abilita le API

  8. Installa Google Cloud CLI.
  9. Segui le istruzioni per creare un account di servizio e scaricare un file di chiavi.
  10. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file di chiavi dell'account di servizio che hai scaricato al momento della creazione dell'account di servizio. Ad esempio:
         export GOOGLE_APPLICATION_CREDENTIALS=key-file
  11. Aggiungi il tuo nuovo account di servizio al ruolo IAM AutoML Editor con i comandi seguenti. Sostituisci project-id con il nome del tuo progetto Google Cloud e service-account-name con il nome del nuovo account di servizio, ad esempio 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'
  12. Consenti agli account di servizio AutoML Natural Language di accedere alle risorse del tuo progetto Google Cloud:
    gcloud projects add-iam-policy-binding project-id 
    --member="serviceAccount:custom-vision@appspot.gserviceaccount.com"
    --role="roles/storage.admin"
  13. Installa la libreria client.
  14. Imposta le variabili di ambiente PROJECT_ID e REGION_NAME.

    Sostituisci project-id con l'ID progetto del tuo progetto Google Cloud Platform. Al momento AutoML Natural Language richiede la località us-central1.
         export PROJECT_ID="project-id"
         export REGION_NAME="us-central1"
         
  15. Crea un bucket Google Cloud Storage per archiviare i documenti che utilizzerai per addestrare il tuo modello personalizzato.

    Il nome del bucket deve essere nel formato: $PROJECT_ID-lcm. Il seguente comando crea un bucket di archiviazione denominato $PROJECT_ID-lcm nella regione us-central1.
    gsutil mb -p $PROJECT_ID -c regional -l $REGION_NAME gs://$PROJECT_ID-lcm/
  16. Copia il file happiness.csv dal bucket pubblico al bucket Google Cloud Storage.

    Il file happiness.csv si trova nella cartella NL-classification nel bucket pubblico cloud-ml-data.

Posizioni dei file di codice sorgente

Se vuoi il codice sorgente, lo trovi qui. Copia pure i file di codice sorgente nella cartella del progetto della Google Cloud Platform. In caso contrario, ti consigliamo di copiare direttamente il codice da questa pagina man mano che raggiungi ogni passaggio.

Python

Il tutorial è costituito da questi programmi Python:

  • language_text_classification_create_dataset.py - Include la funzionalità per creare un set di dati
  • import_dataset.py - Include la funzionalità per importare un set di dati
  • language_text_classification_create_model.py - Include la funzionalità per creare un modello
  • list_model_evaluations.py – Include funzionalità per elencare le valutazioni dei modelli
  • language_text_classification_predict.py – Include funzionalità relative alla previsione
  • delete_model.py - Includi la funzionalità per eliminare un modello

Java

Il tutorial è costituito da questi file Java:

  • LanguageTextClassificationCreateDataset.java - Include la funzionalità per creare un set di dati
  • ImportDataset.java - Include la funzionalità per importare un set di dati
  • LanguageTextClassificationCreateModel.java - Include la funzionalità per creare un modello
  • ListModelEvaluations.java – Include funzionalità per elencare le valutazioni dei modelli
  • LanguageTextClassificationPredict.java – Include funzionalità relative alla previsione
  • DeleteModel.java - Include la funzionalità per eliminare un modello

Node.js

Il tutorial è costituito da questi programmi Node.js:

  • language_text_classification_create_dataset.js - Include la funzionalità per creare un set di dati
  • import_dataset.js - Include la funzionalità per importare un set di dati
  • language_text_classification_create_model.js - Include la funzionalità per creare un modello
  • list_model_evaluations.js – Include funzionalità per elencare le valutazioni dei modelli
  • language_text_classification_predict.js – Include funzionalità relative alla previsione
  • delete_model.js - Includi la funzionalità per eliminare un modello

Esecuzione dell'applicazione

Passaggio 1: crea un set di dati

Il primo passaggio nella creazione di un modello personalizzato è creare un set di dati vuoto che conserverà alla fine i dati di addestramento del modello. Quando crei un set di dati, devi specificare il tipo di classificazione che deve essere eseguito dal modello personalizzato:

  • MULTICLASS assegna un'unica etichetta a ciascun documento classificato
  • MULTILABEL consente di assegnare più etichette a un documento

Questo tutorial crea un set di dati denominato "happydb" e utilizza MULTICLASS.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# display_name = "YOUR_DATASET_NAME"

client = automl.AutoMlClient()

# A resource that represents Google Cloud Platform location.
project_location = f"projects/{project_id}/locations/us-central1"
# Specify the classification type
# Types:
# MultiLabel: Multiple labels are allowed for one example.
# MultiClass: At most one label is allowed per example.
metadata = automl.TextClassificationDatasetMetadata(
    classification_type=automl.ClassificationType.MULTICLASS
)
dataset = automl.Dataset(
    display_name=display_name,
    text_classification_dataset_metadata=metadata,
)

# Create a dataset with the dataset metadata in the region.
response = client.create_dataset(parent=project_location, dataset=dataset)

created_dataset = response.result()

# Display the dataset information
print(f"Dataset name: {created_dataset.name}")
print("Dataset id: {}".format(created_dataset.name.split("/")[-1]))

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.ClassificationType;
import com.google.cloud.automl.v1.Dataset;
import com.google.cloud.automl.v1.LocationName;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.cloud.automl.v1.TextClassificationDatasetMetadata;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class LanguageTextClassificationCreateDataset {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String displayName = "YOUR_DATASET_NAME";
    createDataset(projectId, displayName);
  }

  // Create a dataset
  static void createDataset(String projectId, String displayName)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // A resource that represents Google Cloud Platform location.
      LocationName projectLocation = LocationName.of(projectId, "us-central1");

      // Specify the classification type
      // Types:
      // MultiLabel: Multiple labels are allowed for one example.
      // MultiClass: At most one label is allowed per example.
      ClassificationType classificationType = ClassificationType.MULTILABEL;

      // Specify the text classification type for the dataset.
      TextClassificationDatasetMetadata metadata =
          TextClassificationDatasetMetadata.newBuilder()
              .setClassificationType(classificationType)
              .build();
      Dataset dataset =
          Dataset.newBuilder()
              .setDisplayName(displayName)
              .setTextClassificationDatasetMetadata(metadata)
              .build();
      OperationFuture<Dataset, OperationMetadata> future =
          client.createDatasetAsync(projectLocation, dataset);

      Dataset createdDataset = future.get();

      // Display the dataset information.
      System.out.format("Dataset name: %s\n", createdDataset.getName());
      // To get the dataset id, you have to parse it out of the `name` field. As dataset Ids are
      // required for other methods.
      // Name Form: `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`
      String[] names = createdDataset.getName().split("/");
      String datasetId = names[names.length - 1];
      System.out.format("Dataset id: %s\n", datasetId);
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const displayName = 'YOUR_DISPLAY_NAME';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function createDataset() {
  // Construct request
  const request = {
    parent: client.locationPath(projectId, location),
    dataset: {
      displayName: displayName,
      textClassificationDatasetMetadata: {
        classificationType: 'MULTICLASS',
      },
    },
  };

  // Create dataset
  const [operation] = await client.createDataset(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();

  console.log(`Dataset name: ${response.name}`);
  console.log(`
    Dataset id: ${
      response.name
        .split('/')
        [response.name.split('/').length - 1].split('\n')[0]
    }`);
}

createDataset();

Richiesta

Esegui la funzione create_dataset per creare un set di dati vuoto. Dovrai modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta display_name per il set di dati (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

Risposta

La risposta include i dettagli del set di dati appena creato, tra cui l'ID set di dati che utilizzerai per fare riferimento al set di dati nelle richieste future. Ti consigliamo di impostare una variabile di ambiente DATASET_ID sul valore dell'ID set di dati restituito.

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

Passaggio 2: importa gli elementi di addestramento nel set di dati

Il passaggio successivo consiste nel completare il set di dati con un elenco di contenuti di addestramento etichettati utilizzando le categorie di destinazione.

L'interfaccia della funzione import_dataset prende come input un file .csv che elenca le posizioni di tutti i documenti di addestramento e l'etichetta corretta per ciascun documento di addestramento. (Consulta Preparazione dei dati di addestramento per i dettagli sul formato richiesto.) Per questo tutorial, utilizzeremo happiness.csv, che hai caricato in Google Cloud Storage in alto.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# dataset_id = "YOUR_DATASET_ID"
# path = "gs://YOUR_BUCKET_ID/path/to/data.csv"

client = automl.AutoMlClient()
# Get the full path of the dataset.
dataset_full_id = client.dataset_path(project_id, "us-central1", dataset_id)
# Get the multiple Google Cloud Storage URIs
input_uris = path.split(",")
gcs_source = automl.GcsSource(input_uris=input_uris)
input_config = automl.InputConfig(gcs_source=gcs_source)
# Import data from the input URI
response = client.import_data(name=dataset_full_id, input_config=input_config)

print("Processing import...")
print(f"Data imported. {response.result()}")

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.DatasetName;
import com.google.cloud.automl.v1.GcsSource;
import com.google.cloud.automl.v1.InputConfig;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

class ImportDataset {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String datasetId = "YOUR_DATASET_ID";
    String path = "gs://BUCKET_ID/path_to_training_data.csv";
    importDataset(projectId, datasetId, path);
  }

  // Import a dataset
  static void importDataset(String projectId, String datasetId, String path)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the complete path of the dataset.
      DatasetName datasetFullId = DatasetName.of(projectId, "us-central1", datasetId);

      // Get multiple Google Cloud Storage URIs to import data from
      GcsSource gcsSource =
          GcsSource.newBuilder().addAllInputUris(Arrays.asList(path.split(","))).build();

      // Import data from the input URI
      InputConfig inputConfig = InputConfig.newBuilder().setGcsSource(gcsSource).build();
      System.out.println("Processing import...");

      // Start the import job
      OperationFuture<Empty, OperationMetadata> operation =
          client.importDataAsync(datasetFullId, inputConfig);

      System.out.format("Operation name: %s%n", operation.getName());

      // If you want to wait for the operation to finish, adjust the timeout appropriately. The
      // operation will still run if you choose not to wait for it to complete. You can check the
      // status of your operation using the operation's name.
      Empty response = operation.get(45, TimeUnit.MINUTES);
      System.out.format("Dataset imported. %s%n", response);
    } catch (TimeoutException e) {
      System.out.println("The operation's polling period was not long enough.");
      System.out.println("You can use the Operation's name to get the current status.");
      System.out.println("The import job is still running and will complete as expected.");
      throw e;
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const datasetId = 'YOUR_DISPLAY_ID';
// const path = 'gs://BUCKET_ID/path_to_training_data.csv';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function importDataset() {
  // Construct request
  const request = {
    name: client.datasetPath(projectId, location, datasetId),
    inputConfig: {
      gcsSource: {
        inputUris: path.split(','),
      },
    },
  };

  // Import dataset
  console.log('Proccessing import');
  const [operation] = await client.importData(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();
  console.log(`Dataset imported: ${response}`);
}

importDataset();

Richiesta

Esegui la funzione import_data per importare i contenuti di addestramento. Il primo frammento di codice da modificare è l'ID set di dati del passaggio precedente e il secondo è l'URI di happiness.csv. Dovrai modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta dataset_id per il set di dati (dall'output del passaggio precedente)
  • Imposta path, che è l'URI di (gs://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

Risposta

Processing import...
Dataset imported.

Passaggio 3: crea (addestra) il modello

Ora che hai un set di dati di documenti di addestramento etichettati, puoi addestrare un nuovo modello.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# dataset_id = "YOUR_DATASET_ID"
# display_name = "YOUR_MODEL_NAME"

client = automl.AutoMlClient()

# A resource that represents Google Cloud Platform location.
project_location = f"projects/{project_id}/locations/us-central1"
# Leave model unset to use the default base model provided by Google
metadata = automl.TextClassificationModelMetadata()
model = automl.Model(
    display_name=display_name,
    dataset_id=dataset_id,
    text_classification_model_metadata=metadata,
)

# Create a model with the model metadata in the region.
response = client.create_model(parent=project_location, model=model)

print(f"Training operation name: {response.operation.name}")
print("Training started...")

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.LocationName;
import com.google.cloud.automl.v1.Model;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.cloud.automl.v1.TextClassificationModelMetadata;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class LanguageTextClassificationCreateModel {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String datasetId = "YOUR_DATASET_ID";
    String displayName = "YOUR_DATASET_NAME";
    createModel(projectId, datasetId, displayName);
  }

  // Create a model
  static void createModel(String projectId, String datasetId, String displayName)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // A resource that represents Google Cloud Platform location.
      LocationName projectLocation = LocationName.of(projectId, "us-central1");
      // Set model metadata.
      TextClassificationModelMetadata metadata =
          TextClassificationModelMetadata.newBuilder().build();
      Model model =
          Model.newBuilder()
              .setDisplayName(displayName)
              .setDatasetId(datasetId)
              .setTextClassificationModelMetadata(metadata)
              .build();

      // Create a model with the model metadata in the region.
      OperationFuture<Model, OperationMetadata> future =
          client.createModelAsync(projectLocation, model);
      // OperationFuture.get() will block until the model is created, which may take several hours.
      // You can use OperationFuture.getInitialFuture to get a future representing the initial
      // response to the request, which contains information while the operation is in progress.
      System.out.format("Training operation name: %s\n", future.getInitialFuture().get().getName());
      System.out.println("Training started...");
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const dataset_id = 'YOUR_DATASET_ID';
// const displayName = 'YOUR_DISPLAY_NAME';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function createModel() {
  // Construct request
  const request = {
    parent: client.locationPath(projectId, location),
    model: {
      displayName: displayName,
      datasetId: datasetId,
      textClassificationModelMetadata: {}, // Leave unset, to use the default base model
    },
  };

  // Don't wait for the LRO
  const [operation] = await client.createModel(request);
  console.log(`Training started... ${operation}`);
  console.log(`Training operation name: ${operation.name}`);
}

createModel();

Richiesta

Richiama la funzione create_model per creare un modello. L'ID set di dati proviene dai passaggi precedenti. Dovrai modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta dataset_id per il set di dati (dall'output del passaggio precedente)
  • Imposta display_name per il tuo modello (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

Risposta

La funzione create_model avvia un'operazione di addestramento e visualizza il relativo nome. L'addestramento avviene in modo asincrono e può richiedere un po' di tempo, quindi puoi utilizzare l'ID operazione per controllare lo stato dell'addestramento. Al termine dell'addestramento, create_model restituisce l'ID modello. Come per l'ID set di dati, è consigliabile impostare una variabile di ambiente MODEL_ID sul valore dell'ID modello restituito.

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

Passaggio 4: valuta il modello

Dopo l'addestramento, puoi valutare l'idoneità del modello esaminandone precisione, richiamo e punteggio F1.

La funzione display_evaluation utilizza l'ID modello come parametro.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)

print("List of model evaluations:")
for evaluation in client.list_model_evaluations(parent=model_full_id, filter=""):
    print(f"Model evaluation name: {evaluation.name}")
    print(f"Model annotation spec id: {evaluation.annotation_spec_id}")
    print(f"Create Time: {evaluation.create_time}")
    print(f"Evaluation example count: {evaluation.evaluated_example_count}")
    print(
        "Classification model evaluation metrics: {}".format(
            evaluation.classification_evaluation_metrics
        )
    )

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.ListModelEvaluationsRequest;
import com.google.cloud.automl.v1.ModelEvaluation;
import com.google.cloud.automl.v1.ModelName;
import java.io.IOException;

class ListModelEvaluations {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    listModelEvaluations(projectId, modelId);
  }

  // List model evaluations
  static void listModelEvaluations(String projectId, String modelId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);
      ListModelEvaluationsRequest modelEvaluationsrequest =
          ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();

      // List all the model evaluations in the model by applying filter.
      System.out.println("List of model evaluations:");
      for (ModelEvaluation modelEvaluation :
          client.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {

        System.out.format("Model Evaluation Name: %s\n", modelEvaluation.getName());
        System.out.format("Model Annotation Spec Id: %s", modelEvaluation.getAnnotationSpecId());
        System.out.println("Create Time:");
        System.out.format("\tseconds: %s\n", modelEvaluation.getCreateTime().getSeconds());
        System.out.format("\tnanos: %s", modelEvaluation.getCreateTime().getNanos() / 1e9);
        System.out.format(
            "Evalution Example Count: %d\n", modelEvaluation.getEvaluatedExampleCount());
        System.out.format(
            "Classification Model Evaluation Metrics: %s\n",
            modelEvaluation.getClassificationEvaluationMetrics());
      }
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function listModelEvaluations() {
  // Construct request
  const request = {
    parent: client.modelPath(projectId, location, modelId),
    filter: '',
  };

  const [response] = await client.listModelEvaluations(request);

  console.log('List of model evaluations:');
  for (const evaluation of response) {
    console.log(`Model evaluation name: ${evaluation.name}`);
    console.log(`Model annotation spec id: ${evaluation.annotationSpecId}`);
    console.log(`Model display name: ${evaluation.displayName}`);
    console.log('Model create time');
    console.log(`\tseconds ${evaluation.createTime.seconds}`);
    console.log(`\tnanos ${evaluation.createTime.nanos / 1e9}`);
    console.log(
      `Evaluation example count: ${evaluation.evaluatedExampleCount}`
    );
    console.log(
      `Classification model evaluation metrics: ${evaluation.classificationEvaluationMetrics}`
    );
  }
}

listModelEvaluations();

Richiesta

Invia una richiesta per visualizzare le prestazioni di valutazione complessive del modello eseguendo la seguente richiesta. Dovrai modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta model_id sull'ID del modello

Python

python list_model_evaluations.py

Java

mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations"

Node.js

node list_model_evaluations.js

Risposta

Se i punteggi di precisione e richiamo sono troppo bassi, puoi rafforzare il set di dati di addestramento e addestrare nuovamente il modello. Per maggiori informazioni, consulta Valutazione dei modelli.

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%

Passaggio 5: esegui il deployment del modello

Quando il modello personalizzato soddisfa gli standard di qualità, puoi eseguirne il deployment e richiedere previsioni.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)
response = client.deploy_model(name=model_full_id)

print(f"Model deployment finished. {response.result()}")

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.DeployModelRequest;
import com.google.cloud.automl.v1.ModelName;
import com.google.cloud.automl.v1.OperationMetadata;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class DeployModel {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    deployModel(projectId, modelId);
  }

  // Deploy a model for prediction
  static void deployModel(String projectId, String modelId)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);
      DeployModelRequest request =
          DeployModelRequest.newBuilder().setName(modelFullId.toString()).build();
      OperationFuture<Empty, OperationMetadata> future = client.deployModelAsync(request);

      future.get();
      System.out.println("Model deployment finished");
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function deployModel() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
  };

  const [operation] = await client.deployModel(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();
  console.log(`Model deployment finished. ${response}`);
}

deployModel();

Richiesta

Per la funzione deploy_model devi modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta model_id sull'ID del modello

Python

python deploy_model.py

Java

mvn compile exec:java -Dexec.mainClass="com.example.automl.DeployModel.java"

Node.js

node deploy_model.js

Risposta

Model deployment finished.

Passaggio 6: utilizza il modello per fare una previsione

Dopo aver eseguito il deployment del modello, puoi utilizzarlo per classificare nuovi contenuti.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"
# content = "text to predict"

prediction_client = automl.PredictionServiceClient()

# Get the full path of the model.
model_full_id = automl.AutoMlClient.model_path(project_id, "us-central1", model_id)

# Supported mime_types: 'text/plain', 'text/html'
# https://cloud.google.com/automl/docs/reference/rpc/google.cloud.automl.v1#textsnippet
text_snippet = automl.TextSnippet(content=content, mime_type="text/plain")
payload = automl.ExamplePayload(text_snippet=text_snippet)

response = prediction_client.predict(name=model_full_id, payload=payload)

for annotation_payload in response.payload:
    print(f"Predicted class name: {annotation_payload.display_name}")
    print(f"Predicted class score: {annotation_payload.classification.score}")

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.automl.v1.AnnotationPayload;
import com.google.cloud.automl.v1.ExamplePayload;
import com.google.cloud.automl.v1.ModelName;
import com.google.cloud.automl.v1.PredictRequest;
import com.google.cloud.automl.v1.PredictResponse;
import com.google.cloud.automl.v1.PredictionServiceClient;
import com.google.cloud.automl.v1.TextSnippet;
import java.io.IOException;

class LanguageTextClassificationPredict {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String content = "text to predict";
    predict(projectId, modelId, content);
  }

  static void predict(String projectId, String modelId, String content) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (PredictionServiceClient client = PredictionServiceClient.create()) {
      // Get the full path of the model.
      ModelName name = ModelName.of(projectId, "us-central1", modelId);

      // For available mime types, see:
      // https://cloud.google.com/automl/docs/reference/rest/v1/projects.locations.models/predict#textsnippet
      TextSnippet textSnippet =
          TextSnippet.newBuilder()
              .setContent(content)
              .setMimeType("text/plain") // Types: text/plain, text/html
              .build();
      ExamplePayload payload = ExamplePayload.newBuilder().setTextSnippet(textSnippet).build();
      PredictRequest predictRequest =
          PredictRequest.newBuilder().setName(name.toString()).setPayload(payload).build();

      PredictResponse response = client.predict(predictRequest);

      for (AnnotationPayload annotationPayload : response.getPayloadList()) {
        System.out.format("Predicted class name: %s\n", annotationPayload.getDisplayName());
        System.out.format(
            "Predicted sentiment score: %.2f\n\n",
            annotationPayload.getClassification().getScore());
      }
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';
// const content = 'text to predict'

// Imports the Google Cloud AutoML library
const {PredictionServiceClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new PredictionServiceClient();

async function predict() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
    payload: {
      textSnippet: {
        content: content,
        mimeType: 'text/plain', // Types: 'text/plain', 'text/html'
      },
    },
  };

  const [response] = await client.predict(request);

  for (const annotationPayload of response.payload) {
    console.log(`Predicted class name: ${annotationPayload.displayName}`);
    console.log(
      `Predicted class score: ${annotationPayload.classification.score}`
    );
  }
}

predict();

Richiesta

Per la funzione predict devi modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta model_id sull'ID del modello
  • Imposta il valore content che vuoi prevedere

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

Risposta

La funzione restituisce il punteggio di classificazione che determina il livello di corrispondenza dei contenuti con ogni categoria.

Prediction results:
Predicted class name: affection
Predicted class score: 0.9702693223953247

Passaggio 7: elimina un modello

Quando hai finito di utilizzare questo modello di esempio, puoi eliminarlo definitivamente. Non potrai più utilizzare il modello per le previsioni.

Copia il codice

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Python.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"

client = automl.AutoMlClient()
# Get the full path of the model.
model_full_id = client.model_path(project_id, "us-central1", model_id)
response = client.delete_model(name=model_full_id)

print(f"Model deleted. {response.result()}")

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Java.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import com.google.cloud.automl.v1.AutoMlClient;
import com.google.cloud.automl.v1.ModelName;
import com.google.protobuf.Empty;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class DeleteModel {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    deleteModel(projectId, modelId);
  }

  // Delete a model
  static void deleteModel(String projectId, String modelId)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model.
      ModelName modelFullId = ModelName.of(projectId, "us-central1", modelId);

      // Delete a model.
      Empty response = client.deleteModelAsync(modelFullId).get();

      System.out.println("Model deletion started...");
      System.out.println(String.format("Model deleted. %s", response));
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Natural Language, consulta Librerie client di AutoML Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Natural Language Node.js.

Per eseguire l'autenticazione in AutoML Natural Language, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1;

// Instantiates a client
const client = new AutoMlClient();

async function deleteModel() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
  };

  const [response] = await client.deleteModel(request);
  console.log(`Model deleted: ${response}`);
}

deleteModel();

Richiesta

Effettua una richiesta con il tipo di operazione delete_model per eliminare un modello che hai creato. Dovrai modificare le seguenti righe di codice:

  • Imposta project_id sul tuo PROJECT_ID
  • Imposta model_id sull'ID del modello

Python

python delete_model.py

Java

mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel"

Node.js

node delete_model.js

Risposta

Model deleted.