Valutazione dei modelli

Dopo l'addestramento di un modello, AutoML Translation utilizza gli elementi del set di TEST per valutare la qualità e l'accuratezza del nuovo modello. AutoML Translation esprime la qualità del modello utilizzando il punteggio BLEU (Bilingual Evaluation Understudy), che indica il grado di somiglianza del testo del candidato rispetto ai testi di riferimento, con valori più vicini a uno che rappresentano testi più simili.

Il punteggio BLEU fornisce una valutazione complessiva della qualità del modello. Puoi anche valutare l'output del modello per elementi di dati specifici esportando il set di TEST con le previsioni del modello. I dati esportati includono sia il testo di riferimento (dal set di dati originale) sia il testo candidato del modello.

Utilizza questi dati per valutare l'idoneità del modello. Se il livello qualitativo non ti soddisfa, valuta la possibilità di aggiungere altre (e più diverse) coppie di frasi di addestramento. Una possibilità è aggiungere più coppie di frasi. Utilizza il link Aggiungi file nella barra del titolo. Dopo aver aggiunto i file, addestra un nuovo modello facendo clic sul pulsante Addestra nuovo modello nella pagina Addestra. Ripeti questa procedura fino a raggiungere un livello qualitativo sufficientemente elevato.

Ottenere la valutazione del modello

UI web

  1. Apri la console AutoML Translation e fai clic sull'icona a forma di lampadina accanto a Modelli nella barra di navigazione a sinistra. Vengono visualizzati i modelli disponibili. Per ogni modello sono incluse le seguenti informazioni: set di dati (da cui il modello è stato addestrato), Origine (lingua), Target (lingua), modello di base (utilizzato per addestrare il modello).

    Scheda Modelli che elenca un modello

    Per visualizzare i modelli di un altro progetto, seleziona il progetto dall'elenco a discesa in alto a destra nella barra del titolo.

  2. Fai clic sulla riga del modello da valutare.

    Si apre la scheda Previsione.

    Qui puoi testare il modello e vedere i risultati sia per il modello personalizzato sia per il modello di base utilizzato per l'addestramento.

  3. Fai clic sulla scheda Addestra appena sotto la barra del titolo.

    Al termine dell'addestramento del modello, AutoML Translation mostra le metriche di valutazione.

    Scheda di addestramento per my_dataset che mostra la valutazione del modello

REST

Prima di utilizzare qualsiasi dato della richiesta, effettua le seguenti sostituzioni:

  • model-name: il nome completo del modello. Il nome completo del modello include il nome e la località del progetto. Un nome del modello è simile al seguente esempio: projects/project-id/locations/us-central1/models/model-id.
  • project-id: il tuo ID progetto Google Cloud Platform

Metodo HTTP e URL:

GET https://automl.googleapis.com/v1/model-name/modelEvaluations

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "modelEvaluation": [
    {
      "name": "projects/project-number/locations/us-central1/models/model-id/modelEvaluations/evaluation-id",
      "createTime": "2019-10-02T00:20:30.972732Z",
      "evaluatedExampleCount": 872,
      "translationEvaluationMetrics": {
        "bleuScore": 48.355409502983093,
        "baseBleuScore": 39.071375131607056
      }
    }
  ]
}

Go

Per scoprire come installare e utilizzare la libreria client per AutoML Translation, consulta la pagina relativa alle librerie client di AutoML Translation. Per saperne di più, consulta la documentazione di riferimento dell'API AutoML Translation Go.

Per eseguire l'autenticazione in AutoML Translation, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	automl "cloud.google.com/go/automl/apiv1"
	"cloud.google.com/go/automl/apiv1/automlpb"
)

// getModelEvaluation gets a model evaluation.
func getModelEvaluation(w io.Writer, projectID string, location string, modelID string, modelEvaluationID string) error {
	// projectID := "my-project-id"
	// location := "us-central1"
	// modelID := "TRL123456789..."
	// modelEvaluationID := "123456789..."

	ctx := context.Background()
	client, err := automl.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %w", err)
	}
	defer client.Close()

	req := &automlpb.GetModelEvaluationRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/models/%s/modelEvaluations/%s", projectID, location, modelID, modelEvaluationID),
	}

	evaluation, err := client.GetModelEvaluation(ctx, req)
	if err != nil {
		return fmt.Errorf("GetModelEvaluation: %w", err)
	}

	fmt.Fprintf(w, "Model evaluation name: %v\n", evaluation.GetName())
	fmt.Fprintf(w, "Model annotation spec id: %v\n", evaluation.GetAnnotationSpecId())
	fmt.Fprintf(w, "Create Time:\n")
	fmt.Fprintf(w, "\tseconds: %v\n", evaluation.GetCreateTime().GetSeconds())
	fmt.Fprintf(w, "\tnanos: %v\n", evaluation.GetCreateTime().GetNanos())
	fmt.Fprintf(w, "Evaluation example count: %v\n", evaluation.GetEvaluatedExampleCount())
	fmt.Fprintf(w, "Translation model evaluation metrics: %v\n", evaluation.GetTranslationEvaluationMetrics())

	return nil
}

Java

Per scoprire come installare e utilizzare la libreria client per AutoML Translation, consulta la pagina relativa alle librerie client di AutoML Translation. Per saperne di più, consulta la documentazione di riferimento dell'API AutoML Translation Java.

Per eseguire l'autenticazione in AutoML Translation, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina Configurare l'autenticazione per un ambiente di sviluppo locale.


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

class GetModelEvaluation {

  static void getModelEvaluation() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String modelEvaluationId = "YOUR_MODEL_EVALUATION_ID";
    getModelEvaluation(projectId, modelId, modelEvaluationId);
  }

  // Get a model evaluation
  static void getModelEvaluation(String projectId, String modelId, String modelEvaluationId)
      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 evaluation.
      ModelEvaluationName modelEvaluationFullId =
          ModelEvaluationName.of(projectId, "us-central1", modelId, modelEvaluationId);

      // Get complete detail of the model evaluation.
      ModelEvaluation modelEvaluation = client.getModelEvaluation(modelEvaluationFullId);

      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(
          "Translate Model Evaluation Metrics: %s\n",
          modelEvaluation.getTranslationEvaluationMetrics());
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per AutoML Translation, consulta la pagina relativa alle librerie client di AutoML Translation. Per saperne di più, consulta la documentazione di riferimento dell'API AutoML Translation Node.js.

Per eseguire l'autenticazione in AutoML Translation, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina 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 modelEvaluationId = 'YOUR_MODEL_EVALUATION_ID';

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

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

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

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

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

getModelEvaluation();

Python

Per scoprire come installare e utilizzare la libreria client per AutoML Translation, consulta la pagina relativa alle librerie client di AutoML Translation. Per saperne di più, consulta la documentazione di riferimento dell'API AutoML Translation Python.

Per eseguire l'autenticazione in AutoML Translation, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la pagina 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"
# model_evaluation_id = "YOUR_MODEL_EVALUATION_ID"

client = automl.AutoMlClient()
# Get the full path of the model evaluation.
model_path = client.model_path(project_id, "us-central1", model_id)
model_evaluation_full_id = f"{model_path}/modelEvaluations/{model_evaluation_id}"

# Get complete detail of the model evaluation.
response = client.get_model_evaluation(name=model_evaluation_full_id)

print(f"Model evaluation name: {response.name}")
print(f"Model annotation spec id: {response.annotation_spec_id}")
print(f"Create Time: {response.create_time}")
print(f"Evaluation example count: {response.evaluated_example_count}")
print(
    "Translation model evaluation metrics: {}".format(
        response.translation_evaluation_metrics
    )
)

Linguaggi aggiuntivi

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client e consulta la documentazione di riferimento di AutoML Translation per .NET.

PHP: segui le istruzioni di configurazione PHP nella pagina delle librerie client e consulta la documentazione di riferimento di AutoML Translation per PHP.

Ruby: segui le istruzioni di configurazione di Ruby nella pagina delle librerie client e consulta la documentazione di riferimento di AutoML Translation per Ruby.

Esportazione dei dati dei test con le previsioni del modello

Dopo l'addestramento di un modello, AutoML Translation utilizza gli elementi del set di TEST per valutare la qualità e l'accuratezza del nuovo modello. Dalla console AutoML Translation, puoi esportare il set di TEST per confrontare l'output del modello con il testo di riferimento del set di dati originale. AutoML Translation salva un file TSV nel tuo bucket Google Cloud Storage, dove ogni riga ha questo formato:

Source sentence scheda Reference translation scheda Model candidate translation

UI web

  1. Apri la console AutoML Translation e fai clic sull'icona a forma di lampadina a sinistra di "Modelli" nella barra di navigazione a sinistra per visualizzare i modelli disponibili.

    Scheda Modelli che elenca un modello

    Per visualizzare i modelli di un altro progetto, seleziona il progetto dall'elenco a discesa in alto a destra nella barra del titolo.

  2. Seleziona il modello.

  3. Fai clic sul pulsante Esporta dati nella barra del titolo.

  4. Inserisci il percorso completo del bucket Google Cloud Storage in cui vuoi salvare il file .tsv esportato.

    Devi utilizzare un bucket associato al progetto corrente.

  5. Scegli il modello di cui vuoi esportare i dati di TEST.

    L'elenco a discesa Set di test con previsioni di modelli elenca i modelli addestrati utilizzando lo stesso set di dati di input.

  6. Fai clic su Esporta.

    AutoML Translation scrive un file denominato model-name_evaluated.tsv nel bucket Google Cloud Storage specificato.

Valuta e confronta i modelli utilizzando un nuovo set di test

Dalla console AutoML Translation puoi rivalutare i modelli esistenti utilizzando un nuovo set di dati di test. In una singola valutazione, puoi includere fino a 5 modelli diversi e quindi confrontare i relativi risultati.

Carica i dati di test in Cloud Storage come file con valori separati da tabulazioni (.tsv) o come file Translation Memory eXchange (.tmx).

AutoML Translation valuta i tuoi modelli in base al set di test e poi produce punteggi di valutazione. Facoltativamente, puoi salvare i risultati per ciascun modello come file .tsv in un bucket Cloud Storage, dove ogni riga ha il seguente formato:

Source sentence tab Model candidate translation tab Reference translation

UI web

  1. Apri la console AutoML Translation e fai clic su Modelli nel riquadro di navigazione a sinistra per visualizzare i modelli disponibili.

    Scheda Modelli che elenca un modello

    Per visualizzare i modelli di un altro progetto, seleziona il progetto dall'elenco a discesa in alto a destra nella barra del titolo.

  2. Seleziona uno dei modelli da valutare.

  3. Fai clic sulla scheda Valuta appena sotto la barra del titolo.

    Scheda Valuta per il set di dati my_dataset

  4. Nella scheda Valuta, fai clic su Nuova valutazione.

    Nuova scheda Valutazione per il modello my_model

    • Seleziona i modelli che vuoi valutare e confrontare. È necessario selezionare il modello attuale e Google NMT è selezionato per impostazione predefinita, che puoi deselezionare.
    • Specifica un nome per il Nome set di test per distinguerlo dalle altre valutazioni, quindi seleziona il nuovo set di test da Cloud Storage.
    • Se vuoi esportare le previsioni basate sul tuo set di test, specifica un bucket Cloud Storage in cui verranno archiviati i risultati (si applicano i pricing standard per tariffa di caratteri).
  5. Fai clic su Fine.

    AutoML Translation presenta i punteggi di valutazione in un formato tabella nella console al termine della valutazione. Puoi eseguire una sola valutazione alla volta. Se hai specificato un bucket per archiviare i risultati delle previsioni, AutoML Translation scrive i file denominati model-name_test-set-name.tsv nel bucket.

Informazioni sul punteggio BLEU

BLEU (Biingual Bvaluation Bnderstudy) è una metrica per valutare automaticamente il testo tradotto automaticamente. Il punteggio BLEU è un numero compreso tra zero e uno che misura la somiglianza del testo tradotto automaticamente con un insieme di traduzioni di riferimento di alta qualità. Il valore 0 indica che l'output tradotto automaticamente non si sovrappone alla traduzione di riferimento (bassa qualità), mentre il valore 1 indica che esiste una sovrapposizione perfetta con le traduzioni di riferimento (alta qualità).

È stato dimostrato che i punteggi BLEU sono correlati al giudizio umano in merito alla qualità della traduzione. Tieni presente che anche i traduttori umani non ottengono un punteggio perfetto pari a 1,0.

AutoML esprime i punteggi BLEU come percentuale anziché come decimale compresa tra 0 e 1.

Interpretazione

È fortemente sconsigliato confrontare i punteggi BLEU di vari corpora e lingue. Anche confrontare i punteggi BLEU per lo stesso corpus ma con numeri diversi di traduzioni di riferimento può essere molto fuorviante.

Tuttavia, come linea guida approssimativa, potrebbe essere utile la seguente interpretazione dei punteggi BLEU (espressi in percentuale anziché come decimali).

Punteggio BLEU Interpretazione
< 10 Quasi inutile
10-19 Difficile capire il succo
20 - 29 Il concetto è chiaro, ma presenta errori grammaticali significativi
30 - 40 Comprensibile per buone traduzioni
40 - 50 Traduzioni di alta qualità
50 - 60 Traduzioni di qualità molto elevata, adeguate e fluide
> 60 Qualità spesso migliore di quella umana

La seguente sfumatura di colore può essere utilizzata come interpretazione in scala generale del punteggio BLEU:

Interpretabilità generale della scala

I dettagli matematici

In matematica, il punteggio BLEU è definito come:

$$ \text{BLEU} = \underbrace{\vphantom{\prod_i^4}\min\Big(1, \exp\big(1-\frac{\text{reference-length}} {\text{output-length}}\big)\Big)}_{\text{brevity penali}} \underbrace{\\t1_gram}} sovrapposte

grazie alla

\[ precise_i = \dfrac{\sum_{\text{snt}\in\text{Cand-Corpus}}\sum_{i\in\text{snt}}\min(m^i_{cand}, m^i_{ref})} {w_t^i = \sum_{\text{snt'}\in\textisum{snt_sum}}

dove

  • \(m_{cand}^i\hphantom{xi}\) è il conteggio di i-gram nel candidato corrispondente alla traduzione di riferimento
  • \(m_{ref}^i\hphantom{xxx}\) è il conteggio di i-gram nella traduzione di riferimento
  • \(w_t^i\hphantom{m_{max}}\) è il numero totale di i-grammi nella traduzione candidata

La formula è composta da due parti: la penalità di brevità e la sovrapposizione di n-grammi.

  • Pena per la gravità
    La sanzione per brevità penalizza le traduzioni generate troppo brevi rispetto alla lunghezza di riferimento più vicina con un decadimento esponenziale. La penalità per la gravità compensa il fatto che il punteggio BLEU non ha un termine di identificazione.

  • Sovrapposizione N-gram
    La sovrapposizione di n-grammi conteggia il numero di unigrammi, bigram, trigrammi e quattro grammi (i=1,...,4) che corrispondono alla loro controparte in n-grammi nelle traduzioni dei riferimenti. Questo termine funge da metrica di precisione. Gli unigrammi tengono conto dell'adeguatezza, mentre gli n-grammi più lunghi tengono conto della fluenza della traduzione. Per evitare una sovrastima, il conteggio degli n-grammi viene ridotto al numero massimo di n-grammi che si verifica nel riferimento (\(m_{ref}^n\)).

Esempi

Calcolo \(precision_1\)

Considera questa frase di riferimento e la traduzione candidata:

Riferimento: the cat is on the mat
Candidato: the the the cat mat

Il primo passaggio consiste nel conteggiare le occorrenze di ogni unigramma nel riferimento e nel candidato. Tieni presente che la metrica BLEU è sensibile alle maiuscole.

Unigramma \(m_{cand}^i\hphantom{xi}\) \(m_{ref}^i\hphantom{xxx}\) \(\min(m^i_{cand}, m^i_{ref})\)
the 3 2 2
cat 1 1 1
is 0 1 0
on 0 1 0
mat 1 1 1

Il numero totale di unigrammi nel candidato (\(w_t^1\)) è 5, quindi \(precision_1\) = (2 + 1 + 1)/5 = 0,8.

Calcolo del punteggio BLEU

Riferimento:     The NASA Opportunity rover is battling a massive dust storm on Mars .
Candidato 1: The Opportunity rover is combating a big sandstorm on Mars .
Candidato 2: A NASA rover is fighting a massive storm on Mars .

L'esempio riportato sopra è costituito da un singolo riferimento e da due traduzioni candidati. Le frasi vengono tokenizzate prima del calcolo del punteggio BLEU come illustrato sopra; ad esempio, il periodo finale viene conteggiato come un token separato.

Per calcolare il punteggio BLEU per ogni traduzione, calcoliamo le seguenti statistiche.

  • N-Gram Precisions
    La tabella seguente contiene le precisione di n-grammi per entrambi i candidati.
  • Brevità e penalità
    La penalità di brevità è la stessa per il candidato 1 e il candidato 2, poiché entrambe le frasi consistono di 11 token.
  • Punteggio BLEU
    Tieni presente che è necessario almeno un 4 grammi corrispondente per ottenere un punteggio BLEU > 0. Poiché la traduzione 1 del candidato non ha 4 grammi corrispondenti, il punteggio BLEU è pari a 0.
Metrica Candidato 1 Candidato 2
\(precision_1\) (1 grammo) 8/11 9/11
\(precision_2\) (2 grammi) 4/10 10/5
\(precision_3\) (3 grammi) 9/2 9/2
\(precision_4\) (4 grammi) 8/0 1/8
Brevità e penalità 0,83 0,83
Punteggio BLEU 0,0 0,27

Proprietà

  • BLEU è una metrica basata su corpus
    La metrica BLEU funziona male se utilizzata per valutare singole frasi. Ad esempio, entrambe le frasi di esempio ricevono punteggi BLEU molto bassi anche se acquisiscono la maggior parte del significato. Poiché le statistiche di n-grammi per le singole frasi sono meno significative, BLEU è una metrica basata sul corpus, ovvero le statistiche vengono accumulate su un intero corpus quando calcola il punteggio. Tieni presente che la metrica BLEU definita sopra non può essere fattorizzata per le singole frasi.

  • Nessuna distinzione tra contenuti e parole funzionali
    La metrica BLEU non fa distinzione tra contenuti e parole funzionali, in altre parole, una parola funzionale ignorata come "a" riceve la stessa sanzione che se il nome "NASA" venisse erroneamente sostituito con "ESA".

  • Non è adatto a cogliere il significato e la grammaticali di una frase
    L'aggiunta di una singola parola come "non" può cambiare la polarità di una frase. Inoltre, prendendo in considerazione solo n-grammi con n≤4 ignora le dipendenze a lungo raggio e quindi BLEU spesso impone solo una piccola sanzione per le frasi errate.

  • Normalizzazione e tokenizzazione
    Prima di calcolare il punteggio BLEU, sia le traduzioni dei riferimenti che quelle dei candidati vengono normalizzate e tokenizzate. La scelta dei passaggi di normalizzazione e tokenizzazione influisce in modo significativo sul punteggio BLEU finale.