معیارهای TF. متن

مشاهده در TensorFlow.org در Google Colab اجرا شود در GitHub مشاهده کنید دانلود دفترچه یادداشت

بررسی اجمالی

TensorFlow Text مجموعه‌ای از کلاس‌ها و عملیات‌های مرتبط با متریک متن را فراهم می‌کند و آماده استفاده با TensorFlow 2.0 است. این کتابخانه شامل پیاده‌سازی معیارهای مشابهت متن مانند ROUGE-L است که برای ارزیابی خودکار مدل‌های تولید متن مورد نیاز است.

مزیت استفاده از این عملیات ها در ارزیابی مدل های شما این است که با ارزیابی TPU سازگار هستند و با API های متریک استریم TF به خوبی کار می کنند.

برپایی

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

ROUGE-L

متریک Rouge-L امتیازی از 0 تا 1 است که نشان می دهد دو دنباله چقدر شبیه هم هستند، بر اساس طول طولانی ترین زیر دنباله مشترک (LCS). به طور خاص، Rouge-L میانگین هارمونیک وزنی (یا f-measure) است که دقت LCS (درصد توالی فرضیه تحت پوشش LCS) و یادآوری LCS (درصد دنباله مرجع تحت پوشش LCS) را ترکیب می‌کند.

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

پیاده سازی TF.Text برای هر جفت (فرضیه، مرجع) F-measure، Precision و Recall را برمی گرداند.

جفت فرضیه/مرجع زیر را در نظر بگیرید:

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 دارای یک فراپارامتر اضافی به نام آلفا است که وزن میانگین هارمونیک مورد استفاده برای محاسبه F-Measure را تعیین می کند. مقادیر نزدیک به 0، Recall را مهم‌تر و مقادیر نزدیک‌تر به 1، دقت را مهم‌تر می‌دانند. آلفا به طور پیش فرض روی 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)