Метрики оцінювання для генерації тексту

Глибоке навчання для тексту з PyTorch

Shubham Jain

Instructor

Оцінювання генерації тексту

  • Завдання Text Generation створюють текст, схожий на людський
  • Звичні метрики на кшталт accuracy, F1 тут недоречні
  • Потрібні метрики якості згенерованого тексту
  • BLEU та ROUGE

Dalle чат-бот для генерації тексту

Глибоке навчання для тексту з PyTorch

BLEU (Bilingual Evaluation Understudy)

  • Порівнює згенерований текст із еталонним
  • Перевіряє наявність n-грам
  • У реченні «The cat is on the mat»
    • 1-грам (уніграм): [the, cat, is, on, the, mat]
    • 2-грам (біграм): ["the cat", "cat is", "is on", "on the", "the mat"]
    • і так далі для n-грам
  • Ідеальний збіг: оцінка 1.0
    • 0 означає відсутність збігу
Глибоке навчання для тексту з PyTorch

Обчислення BLEU у 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)
Глибоке навчання для тексту з PyTorch

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)

  • Порівнює згенерований текст з еталоном двома способами
  • ROUGE-N: перекриття n-грам (N=1 для уніграм, 2 для біграм тощо) в обох текстах
  • ROUGE-L: найдовша спільна підпослідовність (LCS) між текстами
  • Метрики ROUGE:
    • F-міра: гармонійне середнє precision і recall
    • Precision: збіги n-грам у згенерованому тексті всередині еталонного
    • Recall: збіги n-грам в еталонному тексті всередині згенерованого
  • Префікси 'rouge1', 'rouge2' і 'rougeL' відповідають 1-грамам, 2-грамам та LCS відповідно
Глибоке навчання для тексту з PyTorch

Обчислення ROUGE у 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)
Глибоке навчання для тексту з PyTorch

ROUGE: приклад виводу

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.)}
Глибоке навчання для тексту з PyTorch

Зауваги та обмеження

  • Оцінюють наявність слів, а не змістове розуміння
  • Чутливі до довжини згенерованого тексту
  • Якість еталонного тексту впливає на бали
Глибоке навчання для тексту з PyTorch

Давайте потренуємось!

Глибоке навчання для тексту з PyTorch

Preparing Video For Download...