Invio di 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 ogni segmento di testo. Puoi specificare il numero di etichettatori per etichettare ogni segmento di testo. Consigliamo di non superare il numero di cinque. Data Labeling Service esegue un voto a maggioranza per determinare le etichette appropriate.
  • Attività di classificazione con il sentiment, in cui l'input dell'etichetta complessiva è uguale a quello delle attività di classificazione del testo. Questo tipo di etichettatura è stato ritirato in Data Labeling Service. Per questo tipo di etichettatura, puoi utilizzare la piattaforma Cloud AI unificata.
  • 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 da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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 associate a questo progetto. Devi includere le istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che devono esaminare ogni elemento del set di dati.

    Il valore predefinito è 1, ma puoi richiedere che siano tre o cinque i labeler che etichettano ogni elemento.

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

  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 viene visualizzato 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 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à. 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.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 di entità

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 da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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 associate a questo progetto. Devi includere le istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che devono esaminare ogni elemento del set di dati.

    Il valore predefinito è 1, ma puoi richiedere che siano tre o cinque i labeler che etichettano ogni elemento.

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

  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 viene visualizzato 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 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, devi installare le 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