NLP Sonuçlarınızı YÖNLENDİRİN!
Doğal Dil İşleme'de kullanılan ölçütlerle ilgili bu gönderi dizisinde tartışılan bir sonraki ölçü, Geri Çağırma Odaklı Yardımcı Bilgilendirme Değerlendirmesi'dir (ROUGE).
ROUGE, metin özetleme ve makine çevirisi gibi NLP görevlerinin kalitesini değerlendirmek için kullanılan bir değerlendirme ölçüsüdür. BLEU'dan farklı olarak ROUGE, aday olarak bilinen model tarafından oluşturulan özetleri, referanslar olarak bilinen insan tarafından oluşturulan bir dizi özet ile karşılaştırmak için hem hatırlamayı hem de kesinliği kullanır. Referanslardaki n-gramların kaçının tahmin edilen adayda olduğunu ölçer.
İlk olarak, hatırlama = Gerçek Pozitifler/(Gerçek Pozitifler + Yanlış Negatifler) hesaplayalım. Burada Gerçek Pozitifler, Referanslar ve Adaylar arasındaki eşleşen n-gramlardır. Yanlış Negatifler, gerçek cümlelerde (referanslarda) bulunan ancak adayda olmayan n-gramlar olarak düşünülebilir. Yanlış Pozitifler, Adayda bulunan ancak Referanslarda olmayan n-gramlardır. Doğru Pozitifler, Yanlış Pozitifler, Hatırlama ve Kesinlik vb. kavramlar hakkında bilgi tazelemeye ihtiyacınız varsa , bu blog gönderisine göz atın Geri Çağırma, Kesinlik, F1 Puanı ,
Bu nedenle, geri çağırma ve kesinlik aşağıda gösterildiği gibi elde edilebilir:
Hatırlama ve Hassasiyet bazen tamamlayıcı olabilir ve bu nedenle bir denge elde etmek için ikisini birleştirmek gerekir. Bu nedenle ROUGE, Python'da F1 puanı olarak hesaplanır. Değer 0 ile 1 arasında değişir ve değer 1'e ne kadar yakınsa tahminin kalitesi o kadar iyidir.
ROUGE-N
Huggingface'in “evaluate” paketindeki değerlendir modülünü kullanalım ve hesaplamaları adım adım doğrulayalım. Her aday için 2 referans içeren aşağıdaki derlemin bir özetleme modelinin sonuçlarından elde edildiğini varsayalım.
!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are fast efficient plus awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = rouge.compute(predictions=predictions, references=references)
print(results)
{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453,
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}
Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute
Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score = 2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307
Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934
ROUGE-L
Burada L, En Uzun Ortak Alt Diziyi (LCS) temsil eder. LCS, hem referansta hem de adayda meydana gelen en uzun alt dizi olarak tanımlanır. Buradaki alt dizinin sürekli olması gerekmez. Eşleşen n-gramların sayısını saymak yerine, burada LCS'nin uzunluğunu ölçüyoruz. Bu yaklaşımın avantajı, yalnızca herhangi bir sırayla görünebilecek eşleşen n-gramları aramak yerine cümledeki kelime sırasının dikkate alınmasıdır. Ek olarak, hesaplama için kullanılacak n-gram sırasını (n) sağlamamız da gerekmez.
Yukarıdaki formülde, X ve Y sırasıyla m ve n uzunluklarıyla referans ve adaydır. Beta, hangisinin daha önemli olduğunu kontrol etmek için kullanılır - hatırlama veya kesinlik. 1 olduğunda, F_lcs, Geri Çağırma(R_lcs) ve Kesinliğin(P_lcs) harmonik ortalamasıdır. Bazen hatırlamaya öncelik vermek isteyebiliriz, yani referanslardaki n-gramların çoğunun adaylarda bulunması daha önemlidir. Bu, betayı > 1 değerine yükselterek elde edilebilir.
Şimdi bu formülü uygulamalı olarak görelim. Her aday referans seti için LCS aşağıda gösterilmiştir:
C1-R1: Transformers are fast plus
C1-R2: Transformers are fast
C2-R1: Good Morning
C2-R2: Morning
C3-R1: waiting for new
C3-R2: new Transformers
Tıpkı ROUGE-N'de olduğu gibi, her aday için iki referans arasındaki maksimum uzunluktaki referansı dikkate alıyoruz. Bu nedenle LCS uzunluğu 4 olan C1-R1 çifti için F1-Puanını hesaplıyoruz. 2. ve 3. Adayların puanları ROUGE-1 ile aynıdır. Bunun nedeni, referanslar arasındaki LCS uzunluğunun, 2 ve 3 için eşleşen unigram sayımlarıyla aynı olmasıdır. Daha sonra tüm hesaplama şu şekilde özetlenir:
C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846
C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714
Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652
Avantajlar
- Hesaplanması ve anlaşılması kolaydır ve genellikle metin özetleme sistemlerini değerlendirmek için kullanılır.
- ROUGE ve varyantları, tek belgelerin ve kısa metinlerin özetlenmesi için iyi çalıştı.
- ROUGE, eşanlamlılar konusunda BLEU ile aynı sorunu yaşıyor. N-gramların anlamı dikkate alınmaz ve bu nedenle “hızlı” ve “hızlı” benzer olarak değerlendirilmeyecektir.
- Puan büyük ölçüde kelime seçimine ve değerlendirme için seçilen referansların yapısına bağlıdır.
Referanslar
TU Dortmund'da Veri Biliminde Yüksek Lisans öğrencisiyim. Gönderilerime ilişkin herhangi bir geri bildirim veya herhangi bir profesyonel iletişim için LinkedIn'de benimle bağlantı kurmaktan çekinmeyin .