TF.पाठ मेट्रिक्स

TensorFlow.org पर देखें Google Colab में चलाएं गिटहब पर देखें नोटबुक डाउनलोड करें

अवलोकन

TensorFlow Text, TensorFlow 2.0 के साथ उपयोग के लिए तैयार टेक्स्ट-मेट्रिक्स-संबंधित कक्षाओं और ऑप्स का एक संग्रह प्रदान करता है। लाइब्रेरी में टेक्स्ट-समानता मेट्रिक्स जैसे ROUGE-L के कार्यान्वयन शामिल हैं, जो टेक्स्ट जनरेशन मॉडल के स्वचालित मूल्यांकन के लिए आवश्यक हैं।

अपने मॉडलों के मूल्यांकन में इन ऑप्स का उपयोग करने का लाभ यह है कि वे टीपीयू मूल्यांकन के अनुकूल हैं और टीएफ स्ट्रीमिंग मीट्रिक एपीआई के साथ अच्छी तरह से काम करते हैं।

सेट अप

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

रूज-ली

रूज-एल मीट्रिक 0 से 1 तक का स्कोर है जो दर्शाता है कि सबसे लंबे सामान्य अनुक्रम (एलसीएस) की लंबाई के आधार पर समान दो अनुक्रम कैसे हैं। विशेष रूप से, रूज-एल भारित हार्मोनिक माध्य (या एफ-माप) है जो एलसीएस परिशुद्धता (एलसीएस द्वारा कवर किए गए परिकल्पना अनुक्रम का प्रतिशत) और एलसीएस रिकॉल (एलसीएस द्वारा कवर किए गए संदर्भ अनुक्रम का प्रतिशत) को जोड़ता है।

स्रोत: 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)

रूज-एल में एक अतिरिक्त हाइपरपैरामीटर, अल्फा है, जो एफ-माप की गणना के लिए उपयोग किए जाने वाले हार्मोनिक माध्य के वजन को निर्धारित करता है। 0 के करीब के मान रिकॉल को अधिक महत्वपूर्ण मानते हैं और 1 के करीब के मान प्रेसिजन को अधिक महत्वपूर्ण मानते हैं। अल्फा डिफ़ॉल्ट रूप से .5 है, जो प्रेसिजन और रिकॉल के लिए समान भार के अनुरूप है।

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