TF مقاييس النص

عرض على TensorFlow.org تشغيل في Google Colab عرض على جيثب تحميل دفتر

ملخص

يوفر TensorFlow Text مجموعة من الفئات والعمليات المتعلقة بالمقاييس النصية الجاهزة للاستخدام مع TensorFlow 2.0. تحتوي المكتبة على تطبيقات لمقاييس تشابه النص مثل ROUGE-L المطلوبة للتقييم التلقائي لنماذج إنشاء النص.

تكمن فائدة استخدام هذه العمليات في تقييم النماذج الخاصة بك في أنها متوافقة مع تقييم TPU وتعمل بشكل جيد مع واجهات برمجة تطبيقات قياس تدفق TF.

يثبت

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

روج- إل

مقياس Rouge-L عبارة عن درجة من 0 إلى 1 تشير إلى مدى تشابه تسلسلين ، بناءً على طول أطول سلسلة لاحقة شائعة (LCS). على وجه الخصوص ، Rouge-L هو المتوسط ​​التوافقي الموزون (أو مقياس f) الذي يجمع بين دقة LCS (النسبة المئوية لتسلسل الفرضية التي يغطيها LCS) واستدعاء LCS (النسبة المئوية للتسلسل المرجعي الذي يغطيه LCS).

المصدر: https://www.microsoft.com/en-us/research/publication/rouge-a-package-for-automatic-evaluation-of-summaries/

يقوم تنفيذ TF.Text بإرجاع مقياس F والدقة والاستدعاء لكل زوج (فرضية ، مرجع).

ضع في اعتبارك الفرضية / الزوج المرجعي التالي:

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

من المتوقع أن تكون الفرضيات والمراجع tf.RaggedTensors من الرموز المميزة. الرموز مطلوبة بدلاً من الجمل الأولية لأنه لا توجد استراتيجية رمزية واحدة تناسب جميع المهام.

الآن يمكننا استدعاء text.metrics.rouge_l والحصول على النتيجة مرة أخرى:

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 على معلمة إضافية ، alpha ، والتي تحدد وزن الوسط التوافقي المستخدم لحساب F-Measure. القيم الأقرب إلى 0 تعامل Recall على أنها أكثر أهمية والقيم الأقرب من 1 تعامل Precision على أنها أكثر أهمية. القيمة الافتراضية لـ alpha هي 0.5 ، والتي تتوافق مع الوزن المتساوي لـ Precision و 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)