TF.Metin Metrikleri

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın GitHub'da görüntüle Not defterini indir

genel bakış

TensorFlow Text, TensorFlow 2.0 ile kullanıma hazır metin ölçümleriyle ilgili sınıflar ve işlemler koleksiyonu sağlar. Kitaplık, metin oluşturma modellerinin otomatik olarak değerlendirilmesi için gerekli olan ROUGE-L gibi metin benzerliği metriklerinin uygulamalarını içerir.

Modellerinizi değerlendirirken bu işlemleri kullanmanın yararı, TPU değerlendirmesiyle uyumlu olmaları ve TF akış metrik API'leriyle iyi çalışmasıdır.

Kurmak

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

KIZIL-L

Rouge-L metriği, en uzun ortak alt dizinin (LCS) uzunluğuna bağlı olarak iki dizinin ne kadar benzer olduğunu gösteren 0 ile 1 arasında bir puandır. Özellikle, Rouge-L, LCS kesinliğini (LCS tarafından kapsanan hipotez dizisinin yüzdesi) ve LCS geri çağırmasını (LCS tarafından kapsanan referans dizisinin yüzdesi) birleştiren ağırlıklı harmonik ortalamadır (veya f-ölçü).

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

TF.Text uygulaması, her (hipotez, referans) çifti için F-ölçümü, Kesinlik ve Geri Çağırmayı döndürür.

Aşağıdaki hipotez/referans çiftini göz önünde bulundurun:

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

Hipotezlerin ve referansların tokenlerin tf.RaggedTensors olması bekleniyor. Ham cümleler yerine belirteçler gereklidir çünkü tek bir belirteçleştirme stratejisi tüm görevlere uymaz.

Artık text.metrics.rouge_l'yi arayabilir ve sonucumuzu geri alabiliriz:

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-Ölçümü hesaplamak için kullanılan harmonik ortalamanın ağırlığını belirleyen alfa ek bir hiperparametresine sahiptir. 0'a yakın değerler Geri Çağırmayı daha önemli, 1'e yakın değerler Hassasiyeti daha önemli olarak değerlendirir. alfa varsayılan olarak 0,5'tir ve bu, Hassasiyet ve Geri Çağırma için eşit ağırlığa karşılık gelir.

# 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)