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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

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