कैनॉनिकलाइज़ेशन

कंप्यूटर विज्ञान में, कैनोनिकलाइज़ेशन (कभी-कभी मानकीकरण या सामान्यीकरण (सांख्यिकी)) आंकड़े को परिवर्तित करने की प्रक्रिया है जिसमें से एक अधिक संभावित प्रतिनिधित्व को मानक, सामान्य या कैनोनिकल फॉर्म में परिवर्तित किया जाता है। यह समतुल्यता के लिए भिन्न-भिन्न रेप्रेज़ेंटेशन्स की तुलना करने, भिन्न-भिन्न डेटा संरचनाओं की संख्या की गणना करने, बार-बार की गई गणनाओं को समाप्त करके विभिन्न एल्गोरिदम की दक्षता में सुधार करने या सार्थक सॉर्टिंग ऑर्डर लागू करना संभव बनाने के लिए किया जा सकता है।

फ़ाइल नाम
फाइल सिस्टम में फ़ाइलें अधिकांश स्थितियों में एकाधिक फ़ाइल नामों के माध्यम से एक्सेस की जा सकती हैं। उदाहरण के लिए यूनिक्स जैसी प्रणालियों में, string को   से बदला जा सकता है। C मानक लाइब्रेरी में, function   यह कार्य करता है। फ़ाइल नामों को कैनोनिकलाइज़ करने के लिए इस फ़ंक्शन द्वारा किए गए अन्य ऑपरेशनों में मूल निर्देशिकाओं को संदर्भित करने वाले   घटकों को संभालना, एकाधिक स्लैश के अनुक्रमों का सरलीकरण, अनुगामी स्लैश को हटाना और प्रतीकात्मक लिंक का समाधान सम्मिलित है।

कंप्यूटर सुरक्षा के लिए फ़ाइल नामों का कैनोनिकलाइज़ेशन महत्वपूर्ण है। उदाहरण के लिए, एक वेब सर्वर पर यह प्रतिबंध हो सकता है कि केवल cgi निर्देशिका  के अंतर्गत फ़ाइलें निष्पादित की जा सकती हैं। यह नियम यह जांच कर लागू किया जाता है कि पथ   से प्रारंभ होता है और उसके बाद ही इसे निष्पादित किया जाता है। जबकि फ़ाइल   प्रारंभ में cgi निर्देशिका में प्रतीत होती है,यह   के बाहर किसी फ़ाइल को निष्पादित करने के प्रयास में निर्देशिका पदानुक्रम का बैकअप लेने के लिए   पथ विनिर्देशक का उपयोग करता है।   को निष्पादित करने की अनुमति देना फ़ाइल नाम को सबसे सरल प्रतिनिधित्व,   में कैनोनिकलाइज़ करने में विफलता के कारण होने वाली त्रुटि होगी, और इसे निर्देशिका ट्रैवर्सल वुल्नरेबिलिटी कहा जाता है। पथ को कैनोनिकलाइज़ करने के साथ, यह स्पष्ट है कि फ़ाइल को निष्पादित नहीं किया जाना चाहिए।

यूनिकोड
यूनिकोड में, कई उच्चारण अक्षरों को एक से अधिक विधियों से दर्शाया जा सकता है। उदाहरण के लिए, é को यूनिकोड में यूनिकोड वर्ण U+0065 (लैटिन छोटा अक्षर E) के रूप में और उसके बाद वर्ण U+0301 (तीव्र उच्चारण का संयोजन) के रूप में दर्शाया जा सकता है, किन्तु इसे पूर्वनिर्मित वर्ण U+00E9 (तीव्र उच्चारण के साथ लैटिन छोटा अक्षर E) के रूप में भी दर्शाया जा सकता है। तीव्र के साथ छोटा अक्षर ई)। यह स्ट्रिंग तुलना को और अधिक जटिल बना देता है, क्योंकि ऐसे ग्लिफ़ वाली स्ट्रिंग के हर संभावित प्रतिनिधित्व पर विचार किया जाना चाहिए। इससे निपटने के लिए, यूनिकोड कैनोनिकल तुल्यता की व्यवस्था प्रदान करता है। इस संदर्भ में, कैनोनिकलाइज़ेशन यूनिकोड सामान्यीकरण है।

यूनिकोड मानक में परिवर्तनीय-चौड़ाई एन्कोडिंग, विशेष रूप से यूटीएफ-8, कुछ स्थितियों में कैनोनिकलाइज़ेशन की अतिरिक्त आवश्यकता का कारण बन सकती है। अर्थात्, मानक के अनुसार, यूटीएफ-8 में किसी भी यूनिकोड वर्ण के लिए केवल एक वैध बाइट अनुक्रम है, किन्तु कुछ बाइट अनुक्रम अमान्य हैं यानी यूनिकोड वर्णों की किसी भी स्ट्रिंग को यूटीएफ-8 में एन्कोड करके प्राप्त नहीं किया जा सकता है। कुछ ख़राब डिकोडर कार्यान्वयन अमान्य बाइट अनुक्रमों को इनपुट के रूप में स्वीकार कर सकते हैं और ऐसे अनुक्रम के लिए आउटपुट के रूप में वैध यूनिकोड वर्ण उत्पन्न कर सकते हैं। यदि कोई ऐसे डिकोडर का उपयोग करता है, तो कुछ यूनिकोड वर्णों में प्रभावी रूप से से अधिक संगत बाइट अनुक्रम होते हैं: वैध और कुछ अमान्य। इससे पिछले अनुभाग में वर्णित जैसी सुरक्षा समस्याएं उत्पन्न हो सकती हैं। इसलिए, यदि कोई यूटीएफ-8 स्ट्रिंग्स पर कुछ फ़िल्टर (उदाहरण के लिए यूटीएफ-8 में लिखा गया रेगुलर एक्सप्रेशन) लागू करना चाहता है, जिसे बाद में डिकोडर को पास कर दिया जाएगा जो अमान्य बाइट अनुक्रमों की अनुमति देता है, तो उसे फ़िल्टर में पास करने से पहले स्ट्रिंग्स को कैनोनिकलाइज़ करना चाहिए। इस संदर्भ में, कैनोनिकलाइज़ेशन प्रत्येक स्ट्रिंग वर्ण को उसके एकल वैध बाइट अनुक्रम में अनुवाद करने की प्रक्रिया है। कैनोनिकलाइज़ेशन का विकल्प अमान्य बाइट अनुक्रम वाले किसी भी स्ट्रिंग को अस्वीकार करना है।

यूआरएल
कैनोनिकल यूआरएल डुप्लिकेट सामग्री के लिए सत्य के एकल स्रोत को परिभाषित करने के लिए यूआरएल है।

गूगल द्वारा उपयोग
कैनोनिकल यूआरएल उस पेज का यूआरएल है जिसे गूगल आपकी साइट पर डुप्लिकेट पेजों के सेट से सबसे अधिक प्रतिनिधि मानता है। उदाहरण के लिए, यदि आपके पास ही पृष्ठ के लिए यूआरएल (उदाहरण के लिए  और  ) हैं, गूगल किसी को कैनोनिकल के रूप में चुनता है। ध्यान दें कि पृष्ठों का बिल्कुल एक जैसा होना ज़रूरी नहीं है; सूची पृष्ठों को क्रमबद्ध करने या फ़िल्टर करने में साधारण परिवर्तन पृष्ठ को अद्वितीय (उदाहरण के लिए, मूल्य के आधार पर क्रमबद्ध करना या आइटम के रंग के आधार पर फ़िल्टर करना) नहीं बनाते हैं।

कैनोनिकल डुप्लिकेट से भिन्न डोमेन में हो सकता है।

इंटरनेट
कैनोनिकल यूआरएल की मदद से, खोज इंजन को पता चलता है कि क्वेरी परिणाम में कौन सा लिंक प्रदान किया जाना चाहिए।

कैनोनिकल लिंक तत्व का उपयोग कैनोनिकल यूआरएल को परिभाषित करने के लिए किया जा सकता है।

इंट्रानेट
इंट्रानेट में, जानकारी के लिए मैन्युअल खोज प्रमुख है। इस मामले में, कैनोनिकल यूआरएल को गैर-मशीन-पठनीय रूप में भी परिभाषित किया जा सकता है। उदाहरण के लिए दिशानिर्देश में.

विविध
कैनोनिकल यूआरएल सामान्यतः वे यूआरएल होते हैं जिनका उपयोग शेयर कार्रवाई के लिए किया जाता है।

चूंकि कैनोनिकल यूआरएल का उपयोग खोज इंजनों के खोज परिणाम में किया जाता है, वे अधिकांश स्थितियों में लैंडिंग पृष्ठ होते हैं।

खोज इंजन और एसईओ
वेब खोज और खोज इंजन अनुकूलन (एसईओ) में, यूआरएल विहितीकरण उस वेब सामग्री से संबंधित है जिसमें से अधिक संभावित यूआरएल हैं। ही वेब सामग्री के लिए एकाधिक यूआरएल रखने से खोज इंजनों के लिए समस्याएं उत्पन्न हो सकती हैं - विशेष रूप से यह निर्धारित करने में कि खोज परिणामों में कौन सा यूआरएल दिखाया जाना चाहिए। अधिकांश खोज इंजन संकेत के रूप में कैनोनिकल लिंक तत्व का समर्थन करते हैं कि किस यूआरएल को सही संस्करण माना जाना चाहिए। जैसा कि गूगल के जॉन म्यूएलर ने संकेत दिया है, किसी पृष्ठ में नोइंडेक्स तत्व जैसे अन्य निर्देश होने से खोज इंजन को कैनोनिकलाइज़ेशन को संभालने के विधि के बारे में परस्पर विरोधी संकेत मिल सकते हैं।

उदाहरण: ये सभी यूआरएल विकिपीडिया के मुखपृष्ठ की ओर इशारा करते हैं, किन्तु खोज इंजन उनमें से केवल को ही यूआरएल का कैनोनिकल रूप मानेगा।

एक्सएमएल
कैनोनिकल एक्सएमएल दस्तावेज़ परिभाषा के अनुसार एक्सएमएल दस्तावेज़ है जो एक्सएमएल कैनोनिकल रूप में है, जिसे कैनोनिकल एक्सएमएल विनिर्देश द्वारा परिभाषित किया गया है। संक्षेप में, कैनोनिकलाइज़ेशन टैग के अन्दर व्हाइटस्पेस को हटा देता है, विशेष वर्ण एन्कोडिंग का उपयोग करता है, नेमस्पेस संदर्भों को सॉर्ट करता है और अनावश्यक लोगों को हटा देता है, एक्सएमएल और डॉकटाइप घोषणाओं को हटा देता है, और सापेक्ष यूआरआई को पूर्ण यूआरआई में बदल देता है।

सरल उदाहरण एक्सएमएल के निम्नलिखित दो स्निपेट होंगे: पहले उदाहरण में पहले नोड के समापन टैग में अतिरिक्त स्थान हैं। दूसरा उदाहरण, जिसे कैनोनिकल किया गया है, इन रिक्त स्थानों को हटा दिया गया है। ध्यान दें कि W3C कैनोनिकलाइज़ेशन के तहत केवल टैग के अन्दर के रिक्त स्थान को हटाया जाता है, टैग के बीच के रिक्त स्थान को नहीं हटाया जाता है।

विहितीकरण परिवर्तनों का पूरा सारांश नीचे सूचीबद्ध है:
 * दस्तावेज़ यूटीएफ-8 में एन्कोड किया गया है
 * पार्सिंग से पहले, इनपुट पर लाइन ब्रेक को #xA पर सामान्यीकृत किया जाता है
 * विशेषता मानों को सामान्यीकृत किया जाता है, जैसे कि मान्य प्रोसेसर द्वारा
 * करेक्टर और पार्स किए गए इकाई संदर्भ बदल दिए गए हैं
 * सीडीएटीए अनुभागों को उनकी करेक्टर सामग्री से बदल दिया गया है
 * एक्सएमएल घोषणा और दस्तावेज़ प्रकार की घोषणा हटा दी गई है
 * खाली तत्वों को स्टार्ट-एंड टैग जोड़े में बदल दिया जाता है
 * दस्तावेज़ तत्व के बाहर और प्रारंभ और अंत टैग के अन्दर रिक्त स्थान को सामान्यीकृत किया गया है
 * वर्ण सामग्री में सभी रिक्त स्थान इनटेक्ट (लाइन फ़ीड सामान्यीकरण के समय हटाए गए वर्णों को छोड़कर) रखे गए हैं
 * विशेषता मान सीमांकक उद्धरण चिह्नों (दोहरे उद्धरण) पर सेट हैं
 * विशेषता मानों और करेक्टर सामग्री में विशेष वर्णों को करेक्टर संदर्भों द्वारा प्रतिस्थापित किया जाता है
 * प्रत्येक तत्व से अनावश्यक नामस्थान घोषणाएँ हटा दी जाती हैं
 * प्रत्येक तत्व में डिफ़ॉल्ट विशेषताएँ जोड़ी जाती हैं
 * का फिक्सअप  विशेषताएँ निष्पादित की जाती हैं
 * लेक्सिकोग्राफ़िक क्रम प्रत्येक तत्व के नामस्थान घोषणाओं और विशेषताओं पर लगाया जाता है

कम्प्यूटेशनल भाषाविज्ञान
आकृति विज्ञान (भाषाविज्ञान) और शब्दावली में, लेम्मा (आकृति विज्ञान) शब्दों के समूह का कैनोनिकल रूप है। अंग्रेजी भाषा, उदाहरण के लिए, रन, रन, रन और रनिंग एक ही शब्द के रूप हैं, इसलिए हम उनमें से एक का चयन कर सकते हैं; सभी रूपों का प्रतिनिधित्व करने के लिए पूर्व चलाएँ। यूनीटेक्स जैसे लेक्सिकल डेटाबेस इस प्रकार के प्रतिनिधित्व का उपयोग करते हैं।

लेम्मटाइजेशन किसी शब्द को उसके कैनोनिकल रूप में परिवर्तित करने की प्रक्रिया है।

यह भी देखें

 * कैनोनिकल फॉर्म
 * ग्राफ विमुद्रीकरण
 * लेम्मटाइजेशन
 * पाठ सामान्यीकरण
 * प्रजातियाँ टाइप करें

बाहरी संबंध

 * Canonical XML Version 1.0, W3C Recommendation
 * OWASP Security Reference for Canonicalization