Evaluatiemetrics voor tekstgeneratie

Deep Learning voor tekst met PyTorch

Shubham Jain

Instructor

Tekstgeneratie evalueren

  • Tekstgeneratietaken maken mensachtige tekst
  • Standaardmetrics zoals accuracy en F1 schieten tekort
  • We hebben metrics nodig die tekstkwaliteit beoordelen
  • BLEU en ROUGE

Dalle Chatbot voor tekstgeneratie

Deep Learning voor tekst met PyTorch

BLEU (Bilingual Evaluation Understudy)

  • Vergelijkt gegenereerde tekst met referentietekst
  • Controleert op voorkomen van n-grams
  • In de zin "The cat is on the mat"
    • 1-grams (unigram): [the, cat, is, on, the, mat]
    • 2-grams (bigram): ["the cat", "cat is", "is on", "on the", "the mat"]
    • enzovoort voor n-grams
  • Perfecte match: score 1,0
    • 0 betekent geen match
Deep Learning voor tekst met PyTorch

BLEU-score berekenen met 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)
Deep Learning voor tekst met PyTorch

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)

  • Vergelijkt een gegenereerde tekst met een referentietekst op twee manieren
  • ROUGE-N: overlappende n-grams (N=1 voor unigrams, 2 voor bigrams, enz.) in beide teksten
  • ROUGE-L: langste gemeenschappelijke subsequentie (LCS) tussen de teksten
  • ROUGE-metrics:
    • F-measure: harmonisch gemiddelde van precision en recall
    • Precision: matches van n-grams in gegenereerde tekst binnen de referentietekst
    • Recall: matches van n-grams in referentietekst binnen de gegenereerde tekst
  • Voorvoegsels 'rouge1', 'rouge2' en 'rougeL' verwijzen naar 1-gram, 2-gram of LCS
Deep Learning voor tekst met PyTorch

ROUGE-score berekenen met 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)
Deep Learning voor tekst met PyTorch

ROUGE-score: output

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.)}
Deep Learning voor tekst met PyTorch

Aandachtspunten en beperkingen

  • Beoordeelt woordaanwezigheid, geen semantiek
  • Gevoelig voor lengte van de gegenereerde tekst
  • Kwaliteit van de referentietekst beïnvloedt scores
Deep Learning voor tekst met PyTorch

Laten we oefenen!

Deep Learning voor tekst met PyTorch

Preparing Video For Download...