अपने एनएलपी परिणामों को रौज करें!

नेचुरल लैंग्वेज प्रोसेसिंग में उपयोग किए जाने वाले मेट्रिक्स के बारे में पोस्ट की इस श्रृंखला में चर्चा की जा रही अगली मीट्रिक रिकॉल-ओरिएंटेड अंडरस्टडी फॉर गिस्टिंग इवैल्यूएशन (ROUGE) है।
ROUGE एक मूल्यांकन मीट्रिक है जिसका उपयोग NLP कार्यों की गुणवत्ता का आकलन करने के लिए किया जाता है जैसे कि टेक्स्ट सारांश और मशीनी अनुवाद। BLEU के विपरीत , ROUGE संदर्भ के रूप में जाने जाने वाले मानव जनित सारांशों के एक सेट के विरुद्ध उम्मीदवारों के रूप में जाने जाने वाले मॉडल जनित सारांशों की तुलना करने के लिए स्मरण और सटीकता दोनों का उपयोग करता है। यह मापता है कि अनुमानित उम्मीदवार में संदर्भों में कितने एन-ग्राम हैं।
सबसे पहले, हम रिकॉल = ट्रू पॉज़िटिव/(ट्रू पॉज़िटिव + फाल्स नेगेटिव) की गणना करते हैं। यहां, ट्रू पॉज़िटिव संदर्भ और उम्मीदवारों के बीच मेल खाने वाले एन-ग्राम हैं। झूठे नकारात्मक को एन-ग्राम के रूप में माना जा सकता है जो वास्तविक वाक्यों (संदर्भों) में हैं, लेकिन उम्मीदवार में नहीं। झूठे सकारात्मक तब एन-ग्राम होते हैं जो उम्मीदवार में मौजूद होते हैं लेकिन संदर्भों में नहीं। यदि आपको ट्रू पॉज़िटिव, फ़ॉल्स पॉज़िटिव, रिकॉल और प्रिसिजन इत्यादि जैसी अवधारणाओं पर एक पुनश्चर्या की आवश्यकता है , तो इस ब्लॉग पोस्ट को याद करें, सटीक, F1-स्कोर देखें।
इसलिए, नीचे दिखाए गए अनुसार रिकॉल और सटीकता प्राप्त की जा सकती है:


रिकॉल और प्रिसिजन कभी-कभी पूरक हो सकते हैं और इसलिए संतुलन हासिल करने के लिए दोनों को मिलाना आवश्यक है। इस कारण से, ROUGE की गणना Python में F1-स्कोर के रूप में की जाती है। मान 0 से 1 तक होता है और मान 1 के जितना करीब होता है, भविष्यवाणी की गुणवत्ता उतनी ही बेहतर होती है।
रूज-एन
आइए हगिंगफेस के "मूल्यांकन" पैकेज से मूल्यांकन मॉड्यूल का उपयोग करें और चरण दर चरण गणनाओं को सत्यापित करें। मान लें कि प्रत्येक उम्मीदवार के लिए 2 संदर्भों के साथ निम्नलिखित कॉर्पस संक्षेपण मॉडल के परिणामों से प्राप्त किया गया है।
!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are fast efficient plus awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = rouge.compute(predictions=predictions, references=references)
print(results)
{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453,
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}
Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute
Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score = 2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307
Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934
रूज-एल
यहाँ, L का मतलब सबसे लंबे समय तक सामान्य अनुवर्ती (LCS) है। एलसीएस को संदर्भ और उम्मीदवार दोनों में होने वाली सबसे लंबी अनुवर्तीता के रूप में परिभाषित किया गया है। अनुवर्ती यहाँ निरंतर होने की आवश्यकता नहीं है। मेल खाने वाले n-ग्राम की संख्या गिनने के बजाय, हम यहाँ LCS की लंबाई मापते हैं। इस दृष्टिकोण के साथ लाभ यह है कि वाक्य में शब्द क्रम पर विचार किया जाता है, न कि केवल मेल खाने वाले एन-ग्राम की तलाश की जाती है जो किसी भी क्रम में प्रकट हो सकते हैं। इसके अतिरिक्त, हमें गणना के लिए उपयोग करने के लिए n-ग्राम का क्रम (n) प्रदान करने की भी आवश्यकता नहीं है।

उपरोक्त सूत्र में, X और Y क्रमशः लंबाई m और n के साथ संदर्भ और उम्मीदवार हैं। बीटा का उपयोग यह नियंत्रित करने के लिए किया जाता है कि कौन सा अधिक महत्वपूर्ण है - रिकॉल या सटीक। जब यह 1 होता है, तो F_lcs रिकॉल (R_lcs) और प्रेसिजन (P_lcs) का हार्मोनिक माध्य होता है। कभी-कभी, हम रिकॉल को प्राथमिकता देना चाह सकते हैं अर्थात, अधिकांश एन-ग्राम के संदर्भ में उम्मीदवारों में मौजूद होना अधिक महत्वपूर्ण है। यह बीटा को मान> 1 तक बढ़ाकर प्राप्त किया जा सकता है।
अब, आइए इस सूत्र को कार्य रूप में देखें। प्रत्येक उम्मीदवार-संदर्भ सेट के लिए LCS नीचे दिखाया गया है:
C1-R1: Transformers are fast plus
C1-R2: Transformers are fast
C2-R1: Good Morning
C2-R2: Morning
C3-R1: waiting for new
C3-R2: new Transformers
ROUGE-N की तरह ही हम प्रत्येक उम्मीदवार के लिए दो संदर्भों के बीच अधिकतम लंबाई के साथ संदर्भ पर विचार करते हैं। इसलिए, हम LCS लंबाई 4 के साथ C1-R1 जोड़ी के लिए F1-स्कोर की गणना करते हैं। उम्मीदवार 2 और 3 के स्कोर ROUGE-1 के समान हैं। ऐसा इसलिए है क्योंकि संदर्भों के बीच एलसीएस की लंबाई 2 और 3 के लिए मेल खाने वाली यूनीग्राम गणना के समान होती है। संपूर्ण गणना को इसके बाद अभिव्यक्त किया जाता है:
C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846
C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714
Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652
लाभ
- गणना करना और समझना आसान है और आमतौर पर पाठ सारांश प्रणाली का मूल्यांकन करने के लिए उपयोग किया जाता है।
- ROUGE और इसके रूपों ने एकल दस्तावेज़ों और लघु पाठों के सारांश के लिए अच्छा काम किया है।
- ROUGE में समानार्थी शब्द के संबंध में BLEU जैसी ही समस्या है। एन-ग्राम का अर्थ नहीं माना जाता है और इसलिए "तेज" और "तेज" को समान नहीं माना जाएगा।
- मूल्यांकन के लिए चुने गए संदर्भों की शब्द पसंद और संरचना पर स्कोर बहुत अधिक निर्भर है।
संदर्भ
मैं डेटा साइंस @ टीयू डॉर्टमुंड में मास्टर्स का छात्र हूं। मेरी पोस्ट या किसी पेशेवर संचार पर किसी भी प्रतिक्रिया के लिए लिंक्डइन पर मुझसे बेझिझक जुड़ें ।