TF.Metrik Teks

Lihat di TensorFlow.org Jalankan di Google Colab Lihat di GitHub Unduh buku catatan

Ringkasan

Teks TensorFlow menyediakan kumpulan kelas dan operasi terkait metrik teks yang siap digunakan dengan TensorFlow 2.0. Pustaka berisi implementasi metrik kemiripan teks seperti ROUGE-L, yang diperlukan untuk evaluasi otomatis model pembuatan teks.

Manfaat menggunakan operasi ini dalam mengevaluasi model Anda adalah mereka kompatibel dengan evaluasi TPU dan bekerja dengan baik dengan API metrik streaming TF.

Mempersiapkan

pip install -q tensorflow-text
import tensorflow as tf
import tensorflow_text as text

ROUGE-L

Metrik Rouge-L adalah skor dari 0 hingga 1 yang menunjukkan seberapa mirip dua urutan, berdasarkan panjang dari common subsequence (LCS) terpanjang. Secara khusus, Rouge-L adalah rata-rata harmonik tertimbang (atau ukuran-f) yang menggabungkan presisi LCS (persentase urutan hipotesis yang dicakup oleh LCS) dan penarikan kembali LCS (persentase urutan referensi yang dicakup oleh LCS).

Sumber: https://www.microsoft.com/en-us/research/publication/rouge-a-package-for-automatic-evaluation-of-summaries/

Implementasi TF.Text mengembalikan F-measure, Precision, dan Recall untuk setiap pasangan (hipotesis, referensi).

Perhatikan pasangan hipotesis/referensi berikut:

hypotheses = tf.ragged.constant([['captain', 'of', 'the', 'delta', 'flight'],
                                 ['the', '1990', 'transcript']])
references = tf.ragged.constant([['delta', 'air', 'lines', 'flight'],
                                 ['this', 'concludes', 'the', 'transcript']])

Hipotesis dan referensi diharapkan berupa token tf.RaggedTensors. Token diperlukan alih-alih kalimat mentah karena tidak ada strategi tokenisasi tunggal yang cocok untuk semua tugas.

Sekarang kita dapat memanggil text.metrics.rouge_l dan mendapatkan kembali hasil kita:

result = text.metrics.rouge_l(hypotheses, references)
print('F-Measure: %s' % result.f_measure)
print('P-Measure: %s' % result.p_measure)
print('R-Measure: %s' % result.r_measure)
F-Measure: tf.Tensor([0.44444448 0.57142854], shape=(2,), dtype=float32)
P-Measure: tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure: tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)

ROUGE-L memiliki hyperparameter tambahan, alfa, yang menentukan bobot rata-rata harmonik yang digunakan untuk menghitung F-Measure. Nilai yang mendekati 0 memperlakukan Recall sebagai lebih penting dan nilai yang mendekati 1 memperlakukan Precision sebagai lebih penting. alpha default ke .5, yang sesuai dengan bobot yang sama untuk Precision dan Recall.

# Compute ROUGE-L with alpha=0
result = text.metrics.rouge_l(hypotheses, references, alpha=0)
print('F-Measure (alpha=0): %s' % result.f_measure)
print('P-Measure (alpha=0): %s' % result.p_measure)
print('R-Measure (alpha=0): %s' % result.r_measure)
F-Measure (alpha=0): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)
P-Measure (alpha=0): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure (alpha=0): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)
# Compute ROUGE-L with alpha=1
result = text.metrics.rouge_l(hypotheses, references, alpha=1)
print('F-Measure (alpha=1): %s' % result.f_measure)
print('P-Measure (alpha=1): %s' % result.p_measure)
print('R-Measure (alpha=1): %s' % result.r_measure)
F-Measure (alpha=1): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
P-Measure (alpha=1): tf.Tensor([0.4       0.6666667], shape=(2,), dtype=float32)
R-Measure (alpha=1): tf.Tensor([0.5 0.5], shape=(2,), dtype=float32)