Invio di richieste di etichettatura 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 ogni segmento di testo. Puoi specificare il numero di etichettatori per etichettare ogni segmento di testo. Ti consigliamo di non superare i cinque valori. Data Labeling Service esegue un voto a maggioranza per determinare le etichette appropriate.
  • Attività di classificazione con sentiment, in cui l'input complessivo dell'etichetta è le stesse attività di classificazione del testo. Questo tipo di etichettatura è deprecato in Data Labeling Service. Puoi accedere a Cloud AI Platform unificato per questo tipo di etichettatura.
  • Attività di estrazione delle entità, in cui l'etichettatore riceverà un elenco di etichette e un segmento di testo (fino a 100.000 caratteri) e dovrà selezionare il punto di inizio e di fine di ogni etichetta. Hanno anche la possibilità di 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. Al termine dell'etichettatura, 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 dal menu di navigazione a sinistra.

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

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

    I set di dati con stato Importazione completata possono essere inviati. La sezione 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 Scopi, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli l'insieme di etichette che vuoi che gli etichettatori applichino agli elementi di dati in questo insieme.

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

  8. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

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

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID al tuo ID progetto Google Cloud.
  2. DATASET_ID all'ID del set di dati, da la risposta quando hai creato il set di dati. L'ID si trova nella fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa 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 recuperare lo stato dell'attività. Ne è un esempio il recupero dello stato di un'operazione.

{
  "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'UI di Data Labeling Service.

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

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

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

    I set di dati con stato Importazione completata possono essere inviati. La sezione 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 Scopi, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli l'insieme di etichette che vuoi che gli etichettatori applichino agli elementi di dati in questo insieme.

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

  8. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

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

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

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

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome del tuo risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa 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 recuperare lo stato dell'attività. Ottenere lo 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, è necessario installare Librerie client 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