ROUGE Hasil NLP Anda!

Metrik selanjutnya yang sedang dibahas dalam rangkaian postingan tentang metrik yang digunakan dalam Natural Language Processing ini adalah Recall-Oriented Understudy for Gisting Evaluation(ROUGE).
ROUGE adalah metrik evaluasi yang digunakan untuk menilai kualitas tugas NLP seperti peringkasan teks dan terjemahan mesin. Tidak seperti BLEU , ROUGE menggunakan daya ingat dan presisi untuk membandingkan ringkasan yang dihasilkan model yang dikenal sebagai kandidat dengan sekumpulan ringkasan yang dihasilkan manusia yang dikenal sebagai referensi. Ini mengukur berapa banyak n-gram dalam referensi yang ada di kandidat yang diprediksi.
Pertama, mari kita hitung ingatan = True Positives/(True Positives + False Negatives). Di sini, True Positives adalah n-gram yang cocok antara Referensi dan Kandidat. Negatif Palsu dapat dianggap sebagai n-gram yang ada di kalimat sebenarnya (referensi) tetapi tidak di kandidat. Positif Palsu adalah n-gram yang ada di Kandidat tetapi tidak ada di Referensi. Lihat entri blog ini Ingat, Presisi, Skor-F1 jika Anda memerlukan penyegaran pada konsep-konsep seperti True Positives, False Positives, Recall and Precision, dll.,
Oleh karena itu, perolehan dan presisi dapat diperoleh seperti yang ditunjukkan di bawah ini:


Recall dan Precision kadang-kadang bisa saling melengkapi dan karenanya perlu menggabungkan keduanya untuk mencapai keseimbangan. Untuk alasan ini, ROUGE dihitung sebagai skor F1 dengan Python. Nilainya berkisar antara 0 sampai 1 dan semakin dekat nilainya dengan 1 maka semakin baik kualitas prediksinya.
ROUGE-N
Mari kita gunakan modul evaluasi dari paket "evaluasi" Huggingface dan verifikasi perhitungan langkah demi langkah. Asumsikan korpus berikut dengan 2 referensi untuk setiap kandidat telah diperoleh dari hasil model peringkasan.
!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
Di sini, L adalah singkatan dari Longest Common Subsequence (LCS). LCS didefinisikan sebagai urutan terpanjang yang terjadi pada referensi dan kandidat. Selanjutnya di sini tidak perlu terus menerus. Alih-alih menghitung jumlah n-gram yang cocok, kami mengukur panjang LCS di sini. Keuntungan dengan pendekatan ini adalah urutan kata dalam kalimat dipertimbangkan daripada hanya mencari n-gram yang cocok yang mungkin muncul dalam urutan apa pun. Selain itu, kita juga tidak perlu memberikan urutan(n) n-gram yang akan digunakan untuk perhitungan.

Dalam rumus di atas, X dan Y adalah referensi dan kandidat dengan panjang masing-masing m dan n. Beta digunakan untuk mengontrol mana yang lebih penting — ingatan atau presisi. Saat nilainya 1, F_lcs hanyalah rata-rata harmonik dari Recall(R_lcs) dan Precision(P_lcs). Kadang-kadang, kita mungkin ingin memprioritaskan mengingat yaitu, lebih penting bagi sebagian besar n-gram dalam referensi untuk hadir dalam kandidat. Ini dapat dicapai dengan meningkatkan beta ke nilai > 1.
Sekarang, Mari kita lihat formula ini beraksi. LCS untuk setiap rangkaian referensi kandidat ditunjukkan di bawah ini:
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
Sama seperti di ROUGE-N kami mempertimbangkan referensi dengan panjang maksimum antara dua referensi untuk setiap kandidat. Oleh karena itu, kami menghitung F1-Score untuk pasangan C1-R1 dengan panjang LCS 4. Skor untuk Kandidat 2 dan 3 sama dengan ROUGE-1. Ini karena panjang LCS antara referensi sama dengan jumlah unigram yang cocok untuk 2 dan 3. Seluruh perhitungan kemudian diringkas sebagai:
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
Keuntungan
- Mudah dihitung dan dipahami dan biasanya digunakan untuk mengevaluasi sistem peringkasan teks.
- ROUGE dan variannya telah bekerja dengan baik untuk meringkas dokumen tunggal dan teks pendek.
- ROUGE memiliki masalah yang sama dengan BLEU terkait sinonimnya. Arti n-gram tidak dianggap dan karenanya "cepat" dan "cepat" tidak akan dianggap serupa.
- Skor sangat tergantung pada pilihan kata dan struktur referensi yang dipilih untuk evaluasi.
Referensi
Saya seorang mahasiswa Magister Ilmu Data @ TU Dortmund. Jangan ragu untuk terhubung dengan saya di LinkedIn untuk umpan balik pada posting saya atau komunikasi profesional apa pun.