Metrici de evaluare pentru generarea textului

Deep Learning pentru text cu PyTorch

Shubham Jain

Instructor

Evaluarea generării de text

  • Sarcinile de generare a textului produc text similar celui uman
  • Metricile standard (acuratețe, F1) sunt insuficiente pentru aceste sarcini
  • Sunt necesare metrici care evaluează calitatea textului generat
  • BLEU și ROUGE

Chatbot Dalle pentru generarea textului

Deep Learning pentru text cu PyTorch

BLEU (Bilingual Evaluation Understudy)

  • Compară textul generat cu textul de referință
  • Verifică apariția n-gramelor
  • În propoziția "The cat is on the mat"
    • 1-grame (uni-gram): [the, cat, is, on, the, mat]
    • 2-grame (bi-gram): ["the cat", "cat is", "is on", "on the", „the mat"]
    • și așa mai departe pentru n-grame
  • Potrivire perfectă: scor de 1.0
    • 0 înseamnă nicio potrivire
Deep Learning pentru text cu PyTorch

Calcularea scorului BLEU cu 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 pentru text cu PyTorch

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)

  • Compară textul generat cu un text de referință în două moduri
  • ROUGE-N: Ia în considerare n-gramele comune (N=1 pentru unigrame, 2 pentru bigrame etc.)
  • ROUGE-L: Analizează cea mai lungă subșecvență comună (LCS) între texte
  • Metrici ROUGE:
    • F-measure: Media armonică a preciziei și a recuperării
    • Precizie: Potriviri ale n-gramelor din textul generat cu textul de referință
    • Recuperare: Potriviri ale n-gramelor din textul de referință cu textul generat
  • Prefixele „rouge1", „rouge2" și „rougeL" se referă la 1-gram, 2-gram sau LCS
Deep Learning pentru text cu PyTorch

Calcularea scorului ROUGE cu 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 pentru text cu PyTorch

Scorul ROUGE: rezultat

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 pentru text cu PyTorch

Considerații și limitări

  • Evaluează prezența cuvintelor, nu înțelegerea semantică
  • Sensibil la lungimea textului generat
  • Calitatea textului de referință influențează scorurile
Deep Learning pentru text cu PyTorch

Să exersăm!

Deep Learning pentru text cu PyTorch

Preparing Video For Download...