Mesures d'évaluation pour la génération de texte

Apprentissage profond pour le texte avec PyTorch

Shubham Jain

Instructor

Évaluer la génération de texte

  • Les tâches de génération produisent un texte proche du langage humain
  • Les mesures classiques comme l'exactitude et le F1 ne suffisent pas ici
  • Il faut des mesures qui évaluent la qualité du texte généré
  • BLEU et ROUGE

Clavardeur Dalle pour la génération de texte

Apprentissage profond pour le texte avec PyTorch

BLEU (Bilingual Evaluation Understudy)

  • Compare le texte généré au texte de référence
  • Vérifie la présence des n-grammes
  • Dans la phrase « The cat is on the mat »
    • 1-grammes (unigrammes) : [the, cat, is, on, the, mat]
    • 2-grammes (bigrammes) : ["the cat", "cat is", "is on", "on the", et "the mat"]
    • et ainsi de suite pour les n-grammes
  • Concordance parfaite : score de 1,0
    • 0 signifie aucune correspondance
Apprentissage profond pour le texte avec PyTorch

Calculer le score BLEU avec PyTorch

from torchmetrics.text import BLEUScore

generated_text = ['the cat is on the mat'] real_text = [['there is a cat on the mat', 'a cat is on the mat']]
bleu = BLEUScore() bleu_metric = bleu(generated_text, real_text) print("BLEU Score: ", bleu_metric.item())
BLEU Score: tensor(0.7598)
Apprentissage profond pour le texte avec PyTorch

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)

  • Compare un texte généré à un texte de référence de deux façons
  • ROUGE-N : tient compte des n-grammes communs (N=1 pour unigrammes, 2 pour bigrammes, etc.) dans les deux textes
  • ROUGE-L : examine la plus longue sous-séquence commune (LCS) entre les textes
  • Mesures ROUGE :
    • F-mesure : moyenne harmonique de la précision et du rappel
    • Précision : concordances des n-grammes du texte généré dans le texte de référence
    • Rappel : concordances des n-grammes du texte de référence dans le texte généré
  • Les préfixes « rouge1 », « rouge2 » et « rougeL » renvoient respectivement à 1-gramme, 2-gramme ou LCS
Apprentissage profond pour le texte avec PyTorch

Calculer le score ROUGE avec PyTorch

from torchmetrics.text import  ROUGEScore

generated_text='Hello, how are you doing?' real_text= "Hello, how are you?"
rouge = ROUGEScore()
rouge_score = rouge([generated_text], [[real_text]]) print("ROUGE Score:", rouge_score)
Apprentissage profond pour le texte avec PyTorch

Score ROUGE : sortie

ROUGE Score: {'rouge1_fmeasure': tensor(0.8889), 
              'rouge1_precision': tensor(0.8000), 
              'rouge1_recall': tensor(1.),

'rouge2_fmeasure': tensor(0.8571), 'rouge2_precision': tensor(0.7500), 'rouge2_recall': tensor(1.),
'rougeL_fmeasure': tensor(0.8889), 'rougeL_precision': tensor(0.8000), 'rougeL_recall': tensor(1.),
'rougeLsum_fmeasure': tensor(0.8889), 'rougeLsum_precision': tensor(0.8000), 'rougeLsum_recall': tensor(1.)}
Apprentissage profond pour le texte avec PyTorch

Considérations et limites

  • Évaluent la présence de mots, pas le sens sémantique
  • Sensibles à la longueur du texte généré
  • La qualité du texte de référence influence les scores
Apprentissage profond pour le texte avec PyTorch

Passons à la pratique !

Apprentissage profond pour le texte avec PyTorch

Preparing Video For Download...