Inviare richieste di etichettatura del testo

AI Platform Data Labeling Service supporta tre tipi di attività di etichettatura del testo:

  • Attività di classificazione, in cui gli etichettatori assegnano una o più etichette a ciascun segmento di testo. Puoi specificare il numero di etichettatori per etichettare ciascun segmento di testo. Ti consigliamo di indicare un numero pari o inferiore a 5. Data Labeling Service vota a maggioranza per determinare le etichette appropriate.
  • Attività di classificazione con sentiment, in cui l'input complessivo dell'etichetta è lo stesso delle attività di classificazione del testo. Questo tipo di etichettatura è stato deprecato in Data Labeling Service. Per questo tipo di etichettatura, puoi passare a Cloud AI Platform unificato.
  • Attività di estrazione delle entità, in cui all'etichettatore viene dato un elenco di etichette e un segmento di testo (fino a 100.000 caratteri) e per ogni etichetta viene selezionato il punto di inizio e di fine in cui fa riferimento il testo. Possono anche selezionare "Non incluso". Data Labeling Service raccoglierà gli indici del testo selezionato per ogni etichetta.

La richiesta di etichettatura è un'operazione a lunga esecuzione. La risposta include l'ID operazione, che puoi utilizzare per controllare lo stato della richiesta. Quando l'etichettatura è completa, la risposta include il valore "done": true.

Tieni presente che al momento è supportato solo il testo in inglese.

Attività di classificazione del testo

UI web

  1. Apri l'interfaccia utente di Data Labeling Service.

  2. Seleziona Set di dati nel menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per il progetto attuale.

  3. Fai clic sul nome del set di dati che vuoi inviare per l'etichettatura.

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    annotated dataset è la versione di questo set di dati etichettata da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura che vuoi eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in questo set.

    L'elenco a discesa include tutti i set di etichette associati a questo progetto. Devi scegliere un set.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire agli etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le instructions associate a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa etichettatori per elemento di dati, specifica il numero di etichettatori per esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere tre o cinque etichettatori per etichettare ogni elemento.

  10. Fai clic sulla casella di controllo per confermare di aver compreso le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del set di etichette.
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/text:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "TEXT_CLASSIFICATION",
  "textClassificationConfig": {
    "annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}",
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per conoscere lo stato dell'attività. Recupero dello stato di un'operazione è un esempio.

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelTextClassificationOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Java

Prima di poter eseguire questo esempio di codice, devi installare le librerie client Java.
import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.datalabeling.v1beta1.AnnotatedDataset;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig;
import com.google.cloud.datalabeling.v1beta1.LabelOperationMetadata;
import com.google.cloud.datalabeling.v1beta1.LabelTextRequest;
import com.google.cloud.datalabeling.v1beta1.LabelTextRequest.Feature;
import com.google.cloud.datalabeling.v1beta1.SentimentConfig;
import com.google.cloud.datalabeling.v1beta1.TextClassificationConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class LabelText {

  // Start a Text Labeling Task
  static void labelText(
      String formattedInstructionName,
      String formattedAnnotationSpecSetName,
      String formattedDatasetName)
      throws IOException {
    // String formattedInstructionName = DataLabelingServiceClient.formatInstructionName(
    //      "YOUR_PROJECT_ID", "YOUR_INSTRUCTION_UUID");
    // String formattedAnnotationSpecSetName =
    //     DataLabelingServiceClient.formatAnnotationSpecSetName(
    //         "YOUR_PROJECT_ID", "YOUR_ANNOTATION_SPEC_SET_UUID");
    // String formattedDatasetName = DataLabelingServiceClient.formatDatasetName(
    //      "YOUR_PROJECT_ID", "YOUR_DATASET_UUID");

    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      HumanAnnotationConfig humanAnnotationConfig =
          HumanAnnotationConfig.newBuilder()
              .setAnnotatedDatasetDisplayName("annotated_displayname")
              .setAnnotatedDatasetDescription("annotated_description")
              .setLanguageCode("en-us")
              .setInstruction(formattedInstructionName)
              .build();

      SentimentConfig sentimentConfig =
          SentimentConfig.newBuilder().setEnableLabelSentimentSelection(false).build();

      TextClassificationConfig textClassificationConfig =
          TextClassificationConfig.newBuilder()
              .setAnnotationSpecSet(formattedAnnotationSpecSetName)
              .setSentimentConfig(sentimentConfig)
              .build();

      LabelTextRequest labelTextRequest =
          LabelTextRequest.newBuilder()
              .setParent(formattedDatasetName)
              .setBasicConfig(humanAnnotationConfig)
              .setTextClassificationConfig(textClassificationConfig)
              .setFeature(Feature.TEXT_CLASSIFICATION)
              .build();

      OperationFuture<AnnotatedDataset, LabelOperationMetadata> operation =
          dataLabelingServiceClient.labelTextAsync(labelTextRequest);

      // You'll want to save this for later to retrieve your completed operation.
      // System.out.format("Operation Name: %s\n", operation.getName());

      // Cancel the operation to avoid charges when testing.
      dataLabelingServiceClient.getOperationsClient().cancelOperation(operation.getName());

    } catch (IOException | InterruptedException | ExecutionException e) {
      e.printStackTrace();
    }
  }
}

Attività di estrazione delle entità

UI web

  1. Apri l'interfaccia utente di Data Labeling Service.

  2. Seleziona Set di dati nel menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per il progetto attuale.

  3. Fai clic sul nome del set di dati che vuoi inviare per l'etichettatura.

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    annotated dataset è la versione di questo set di dati etichettata da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura che vuoi eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in questo set.

    L'elenco a discesa include tutti i set di etichette associati a questo progetto. Devi scegliere un set.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire agli etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le instructions associate a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa etichettatori per elemento di dati, specifica il numero di etichettatori per esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere tre o cinque etichettatori per etichettare ogni elemento.

  10. Fai clic sulla casella di controllo per confermare di aver compreso le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del set di etichette.
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/text:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "TEXT_ENTITY_EXTRACTION",
  "textEntityExtractionConfig": {
    "annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}",
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per conoscere lo stato dell'attività. Recupero dello stato di un'operazione è un esempio.

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelTextEntityExtractionOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Python

Prima di poter eseguire questo esempio di codice, devi installare le librerie client di Python.

def label_text(
    dataset_resource_name, instruction_resource_name, annotation_spec_set_resource_name
):
    """Labels a text dataset."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    basic_config = datalabeling.HumanAnnotationConfig(
        instruction=instruction_resource_name,
        annotated_dataset_display_name="YOUR_ANNOTATED_DATASET_DISPLAY_NAME",
        label_group="YOUR_LABEL_GROUP",
        replica_count=1,
    )

    feature = datalabeling.LabelTextRequest.Feature.TEXT_ENTITY_EXTRACTION

    config = datalabeling.TextEntityExtractionConfig(
        annotation_spec_set=annotation_spec_set_resource_name
    )

    response = client.label_text(
        request={
            "parent": dataset_resource_name,
            "basic_config": basic_config,
            "feature": feature,
            "text_classification_config": config,
        }
    )

    print(f"Label_text operation name: {response.operation.name}")
    return response