Tutorial AutoML Natural Language API

Tutorial ini menunjukkan cara membuat model kustom untuk mengklasifikasikan konten menggunakan AutoML Natural Language. Aplikasi ini melatih model kustom menggunakan korpus "momen bahagia" dari crowd-source dari set data open source HappyDB. Model yang dihasilkan mengklasifikasikan momen bahagia ke dalam kategori yang mencerminkan penyebab kebahagiaan.

Data tersedia melalui lisensi Creative Commons CCO: Domain Publik.

Tutorial ini membahas pelatihan model kustom, mengevaluasi performanya, dan mengklasifikasikan konten baru.

Prasyarat

Mengonfigurasi lingkungan project Anda

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the AutoML Natural Language APIs.

    Enable the APIs

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the AutoML Natural Language APIs.

    Enable the APIs

  8. Instal Google Cloud CLI.
  9. Ikuti petunjuk untuk membuat akun layanan dan mendownload file kunci.
  10. Tetapkan GOOGLE_APPLICATION_CREDENTIALS variabel lingkungan ke jalur file kunci akun layanan yang Anda download saat membuat akun layanan. Contoh:
         export GOOGLE_APPLICATION_CREDENTIALS=key-file
  11. Tambahkan akun layanan baru Anda ke peran IAM AutoML Editor dengan perintah berikut. Ganti project-id dengan nama project Google Cloud Anda dan ganti service-account-name dengan nama akun layanan Anda yang baru, misalnya 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. Izinkan akun layanan AutoML Natural Language mengakses resource project Google Cloud Anda:
    gcloud projects add-iam-policy-binding project-id 
    --member="serviceAccount:custom-vision@appspot.gserviceaccount.com"
    --role="roles/storage.admin"
  13. Instal library klien.
  14. Tetapkan variabel lingkungan PROJECT_ID dan Region_NAME.

    Ganti project-id dengan Project ID untuk project Google Cloud Platform Anda. AutoML Natural Language saat ini memerlukan lokasi us-central1.
         export PROJECT_ID="project-id"
         export REGION_NAME="us-central1"
         
  15. Buat bucket Google Cloud Storage untuk menyimpan dokumen yang akan digunakan untuk melatih model kustom Anda.

    Nama bucket harus dalam format: $PROJECT_ID-lcm. Perintah berikut akan membuat bucket penyimpanan di region us-central1 bernama $PROJECT_ID-lcm.
    gsutil mb -p $PROJECT_ID -c regional -l $REGION_NAME gs://$PROJECT_ID-lcm/
  16. Salin file happiness.csv dari bucket publik ke bucket Google Cloud Storage Anda.

    File happiness.csv ada di folder NL-classification di bucket publik cloud-ml-data.

Lokasi file kode sumber

Jika Anda ingin kode sumbernya, Anda dapat menemukannya di sini. Anda dapat menyalin file kode sumber ke folder project Google Cloud Platform. Jika tidak, sebaiknya salin langsung kode dari halaman ini saat Anda mencapai setiap langkah.

Python

Tutorial ini terdiri dari program Python ini:

  • language_text_classification_create_dataset.py – Mencakup fungsi untuk membuat set data
  • import_dataset.py – Mencakup fungsi untuk mengimpor set data
  • language_text_classification_create_model.py – Mencakup fungsi untuk membuat model
  • list_model_evaluations.py – Menyertakan fungsi untuk mencantumkan evaluasi model
  • language_text_classification_predict.py – Mencakup fungsi yang terkait dengan prediksi
  • delete_model.py - Menyertakan fungsi untuk menghapus model

Java

Tutorial ini terdiri dari file Java berikut:

  • LanguageTextClassificationCreateDataset.java – Mencakup fungsi untuk membuat set data
  • ImportDataset.java – Mencakup fungsi untuk mengimpor set data
  • LanguageTextClassificationCreateModel.java – Mencakup fungsi untuk membuat model
  • ListModelEvaluations.java – Menyertakan fungsi untuk mencantumkan evaluasi model
  • LanguageTextClassificationPredict.java – Mencakup fungsi yang terkait dengan prediksi
  • DeleteModel.java – Mencakup fungsi untuk menghapus model

Node.js

Tutorial ini terdiri dari program Node.js berikut:

  • language_text_classification_create_dataset.js – Mencakup fungsi untuk membuat set data
  • import_dataset.js – Mencakup fungsi untuk mengimpor set data
  • language_text_classification_create_model.js – Mencakup fungsi untuk membuat model
  • list_model_evaluations.js – Menyertakan fungsi untuk mencantumkan evaluasi model
  • language_text_classification_predict.js – Mencakup fungsi yang terkait dengan prediksi
  • delete_model.js - Menyertakan fungsi untuk menghapus model

Menjalankan aplikasi

Langkah 1: Buat set data

Langkah pertama dalam membuat sebuah model kustom adalah dengan membuat set data kosong yang akan menyimpan data pelatihan untuk model tersebut. Saat membuat set data, tentukan jenis klasifikasi yang ingin dijalankan oleh model kustom Anda:

  • MULTICLASS menetapkan satu label ke setiap dokumen yang diklasifikasikan
  • MULTILABEL memungkinkan dokumen diberi beberapa label

Tutorial ini membuat set data bernama 'happydb' dan menggunakan MULTICLASS.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Jalankan fungsi create_dataset untuk membuat set data kosong. Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan display_name untuk set data (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

Respons

Respons tersebut menyertakan detail set data yang baru dibuat, termasuk ID Set Data yang akan Anda gunakan untuk mereferensikan set data dalam permintaan mendatang. Sebaiknya tetapkan variabel lingkungan DATASET_ID ke nilai ID Set Data yang ditampilkan.

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

Langkah 2: Impor item pelatihan ke set data

Langkah selanjutnya adalah mengisi set data dengan daftar item konten pelatihan yang diberi label menggunakan kategori target.

Antarmuka fungsi import_dataset menggunakan file .csv sebagai input yang mencantumkan lokasi semua dokumen pelatihan dan label yang tepat untuk setiap dokumen pelatihan. (Lihat Mempersiapkan data pelatihan Anda untuk mengetahui detail tentang format yang diperlukan.) Untuk tutorial ini, kita akan menggunakan happiness.csv, yang Anda upload ke Google Cloud Storage di atas.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Jalankan fungsi import_data untuk mengimpor konten pelatihan. Bagian pertama kode yang akan diubah adalah ID Set Data dari langkah sebelumnya dan yang kedua adalah URI happiness.csv. Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan dataset_id untuk set data (dari output langkah sebelumnya)
  • Tetapkan path yang merupakan URI dari (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

Respons

Processing import...
Dataset imported.

Langkah 3: Buat (latih) model

Setelah memiliki set data dokumen pelatihan berlabel, Anda dapat melatih model baru.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Gunakan fungsi create_model untuk membuat model. ID Set Data berasal dari langkah sebelumnya. Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan dataset_id untuk set data (dari output langkah sebelumnya)
  • Menetapkan display_name untuk model Anda (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

Respons

Fungsi create_model memulai operasi pelatihan dan mencetak nama operasi. Pelatihan terjadi secara asinkron dan mungkin memerlukan waktu beberapa saat untuk diselesaikan, sehingga Anda dapat menggunakan ID operasi untuk memeriksa status pelatihan. Setelah pelatihan selesai, create_model akan menampilkan ID Model. Seperti ID Set Data, Anda mungkin ingin menetapkan variabel lingkungan MODEL_ID ke nilai ID Model yang ditampilkan.

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

Langkah 4: Evaluasi model

Setelah pelatihan, Anda dapat mengevaluasi kesiapan model dengan meninjau presisi, perolehan, dan skor F1.

Fungsi display_evaluation menggunakan ID Model sebagai parameter.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Buat permintaan untuk menampilkan performa evaluasi keseluruhan model dengan menjalankan permintaan berikut. Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan model_id ke ID model Anda

Python

python list_model_evaluations.py

Java

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

Node.js

node list_model_evaluations.js

Respons

Jika skor presisi dan perolehan terlalu rendah, Anda dapat memperkuat set data pelatihan dan melatih ulang model Anda. Untuk mengetahui informasi selengkapnya, lihat Mengevaluasi model.

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%

Langkah 5: Deploy model

Jika model kustom memenuhi standar kualitas, Anda dapat men-deploy-nya, lalu membuat permintaan prediksi.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Untuk fungsi deploy_model, Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan model_id ke ID model Anda

Python

python deploy_model.py

Java

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

Node.js

node deploy_model.js

Respons

Model deployment finished.

Langkah 6: Gunakan model untuk membuat prediksi

Setelah men-deploy model, Anda dapat menggunakannya untuk mengklasifikasikan konten baru.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Untuk fungsi predict, Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan model_id ke ID model Anda
  • Setel content yang ingin Anda prediksi

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

Respons

Fungsi ini menampilkan skor klasifikasi terkait seberapa cocok konten dengan setiap kategori.

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

Langkah 7: Hapus Model

Setelah selesai menggunakan model contoh ini, Anda dapat menghapusnya secara permanen. Anda tidak akan dapat lagi menggunakan model ini untuk prediksi.

Salin kodenya

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk AutoML Natural Language, lihat library klien AutoML Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js AutoML Natural Language.

Untuk mengautentikasi AutoML Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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();

Permintaan

Buat permintaan dengan jenis operasi delete_model untuk menghapus model yang Anda buat, Anda harus mengubah baris kode berikut:

  • Tetapkan project_id ke PROJECT_ID Anda
  • Tetapkan model_id ke ID model Anda

Python

python delete_model.py

Java

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

Node.js

node delete_model.js

Respons

Model deleted.