Total Pageviews

Saturday, December 2, 2017

सी. शार्प प्रोग्रामिंग एवं हिंदी के भाषिक टूल्स (C# Programming and Linguistic Tools of Hindi)



सी. शार्प प्रोग्रामिंग एवं हिंदी के भाषिक टूल्स

(C# Programming and Linguistic Tools of Hindi)





धनजी प्रसाद









(2012)
प्रकाशन संस्थान, नई दिल्ली 

भूमिका


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

डॉ. अनिल कुमार पाण्डेय
    रीडर, भाषा प्रौद्योगिकी विभाग,  भाषा विद्यापीठ
महात्मा गांधी अंतरराष्ट्रीय हिंदी विश्वविद्यालय, वर्धा



आमुख


भाषा वह व्यवस्था है जिसके माध्यम से विचारों या सूचनाओं को सृजित, संप्रेषित एवं संग्रहीत किया जाता है। सूचनाओं एवं विचारों के वास्तविक संसार को व्यापक रूप से अर्थ कहा गया है। अर्थ को ही भाषा में विविध भाषिक इकाइयों के माध्यम से विविध स्तरों पर संचित एवं प्रेषित किया जाता है। स्वनिम, रूपिम, शब्द, पदबंध, उपवाक्य, वाक्य एवं प्रोक्ति भाषिक इकाइयाँ हैं जिनमें स्वनिम को छोड़कर शेष सभी इकाइयाँ अर्थ को धारण करती हैं। भाषाविज्ञान में इन सभी का अध्ययन-विश्लेषण करते हुए किसी भी भाषा की भाषिक व्यवस्था को समझने का प्रयास किया जाता है और इस प्रकार प्राप्त ज्ञान का अनुप्रयोग मानव-व्यवहार के विविध क्षेत्रों में किया जाता है। इन क्षेत्रों को भाषाविज्ञान के अनुप्रयुक्त क्षेत्र कहते हैं। इन क्षेत्रों के मुख्यत: तीन वर्ग हैं: अंतरानुशासनिक अनुप्रयोग,  व्यावहारिक अनुप्रयोग एवं तकनीकी अनुप्रयोग।
भाषिक ज्ञान के तकनीकी अनुप्रयोग का तात्पर्य संगणक या संगणकीय मशीनों में भाषिक ज्ञान के अनुप्रयोग से है जिससे उन मशीनों का प्रयोग भाषा व्यवहार के विविध क्षेत्रों में किया जा सके। इस कार्य को तकनीकी रूप से प्राकृतिक भाषा संसाधन (Natural Language Processing: NLP) कहा जाता है।
मानव भाषाओं की व्यवस्था को मशीन में स्थापित करना अत्यंत ही जटिल कार्य है, क्योंकि हम जानते हैं कि मशीन (या संगणक) द्वारा जिस भाषा का प्रयोग किया जाता है, उसे मशीनी भाषा (Machine Language) कहते हैं। इस भाषा में सभी प्रकार की सूचनाओं को ‘0’ और ‘1’  के रूप में प्रस्तुत किया जाता है। इस भाषा को समझना मनुष्यों के लिए असाध्य है और मशीनों द्वारा मानव भाषाओं को सीधे-सीधे समझ पाना संभव नहीं है। इस समस्या को देखते हुए मानव मशीन के बीच आदेशों एवं कार्यों के आदान-प्रदान के लिए पिछले तीन-चार दशकों में कुछ विशेष प्रकार की भाषाओं का विकास किया गया है जिन्हें सामान्यत: उच्च-स्तरीय भाषाएँ (High Level Languages) या प्रोग्रामिंग भाषाएँ (Programming Languages) कहा जाता है। ये भाषाएँ प्रयोगकर्ता को कुछ विशिष्ट संरचनाओं के माध्यम से आदेश देने की सुविधा प्रदान करती हैं। मानव भाषाओं की तरह इनका प्रयोग नहीं किया जा सकता, किंतु इनके माध्यम से मानव भाषाओं के ज्ञान को समुचित मात्रा में एवं सुव्यवस्थित रूप से स्थापित करते हुए मशीनों या संगणकों को मानव भाषाओं को समझने में सक्षम बनाया जा सकता है।
मानव भाषा व्यवस्थाओं की व्यवस्था है जिसके स्तरों का उल्लेख ऊपर किया जा चुका है। भाषाविज्ञान में इन सभी स्तरों पर विश्लेषण करते हुए प्रत्येक स्तर पर प्राप्त भाषिक इकाइयों और उनकी व्यवस्था का अध्ययन किया जाता है। अब मशीन में इस ज्ञान को स्थापित करने के लिए इसे तार्किक अभिव्यक्तियों (Logical Expressions) में ढाला जाता है। इसके लिए किसी न किसी संगणकीय व्याकरणिक फ्रेमवर्क (Computational Grammatical Framework) की आवश्यकता पड़ती है। इस भाषिक ज्ञान को मशीन में स्थापित करने की दो विधियाँ हैं: समस्त ज्ञान को एकीकृत रूप से स्थापित करना अथवा प्रत्येक भाषिक इकाई या भाषिक स्तर से जुड़े ज्ञान को स्थापित कर अलग-अलग टूलों का विकास करना और बाद में सभी का आवश्यकता के अनुसार एक स्थान पर प्रयोग करना। मैं दूसरी पद्धति के पक्ष में हूँ।
मशीन में मानव भाषाओं के ज्ञान को स्थापित करने की दो विधियाँ हैं: कार्पस-आधारित विधि (Corpus-based Method) और नियम-आधारित विधि (Rule-based Method)। कार्पस-आधारित विधि द्वारा किसी भाषा के भाषिक ज्ञान को मशीन में स्थापित करने के लिए सर्वप्रथम भाषा-व्यवहार के सभी क्षेत्रों से उस भाषा के प्रामाणिक पाठों को संग्रहीत किया जाता है जिसमें लाखों वाक्य होते हैं। इसके पश्चात् विविध भाषिक एवं सांख्यिकीय युक्तियों का प्रयोग करते हुए उनके माध्यम से मशीन को संबंधित भाषा में संसाधन के योग्य बनाया जाता है। नियम-आधारित विधि में भाषिक इकाइयों (मुख्यत: शब्द-स्तरीय इकाइयों) को संग्रहीत किया जाता है और उन्हें परस्पर सहसंबंधित करने वाले नियमों को प्रदान करते हुए मशीन को उन्हें संसाधित करने में सक्षम बनाया जाता है। इस कार्य के लिए दो चीजों की आवश्यकता होती है: प्रोग्रामिंग भाषा और डाटाबेस प्रबंधन प्रणाली।
इन चीजों को ध्यान में रखते हुए प्रस्तुत पुस्तक में भाषिक ज्ञान के तकनीकी अनुप्रयोग के व्यावहारिक रूप से भाषाविज्ञान, भाषा प्रौद्योगिकी एवं कंप्यूटेशनल भाषाविज्ञान के छात्रों एवं शोधार्धियों को परिचित कराया जा रहा है।  इसके लिए आधुनिक युग की अत्यधिक सशक्त प्रोग्रामिंग भाषा सी. शार्प (C#)’ का चयन किया गया है जिसमें यूनिकोड के द्वारा देवनागरी में काम करने की सुविधा है। इसके अतिरिक्त डाटाबेस निर्माण हेतु माइक्रोसॉफ्ट के एम.एस. एक्सेस का प्रयोग किया गया है क्योंकि इसमें कार्य करना अत्यंत सरल है एवं संगणक से जुड़े सामान्य विद्यार्थी भी इसमें काम कर सकते हैं।
 प्रस्तुत पुस्तक दो खण्डों में विभाजित है: खंड-क: प्रोग्रामिंग एवं डाटाबेस एवं खंड-ख: हिंदी के भाषिक टूलखंड-क में प्रोग्रामिंग हेतु सी.शार्प-2010 (C#-2010) एवं डाटाबेस हेतु एम.एस.एक्सेस-2007’ (M.S.Access-2007) में काम करना सिखाया गया है। इसके लिए सर्वप्रथम डॉट नेट फ्रेमवर्क (.NET Framework) का परिचय दिया गया है जिसके पश्चात् सी. शार्प का परिचय देते हुए इसके सभी घटकों की व्यापक चर्चा की गई है। इसके बाद के अगले दो अध्यायों में सी.शार्प में प्रयुक्त होने वाले प्रमुख संचालकों, कथनों एवं संग्रहों (Operators, Statements and Collections) की व्याख्या करते हुए सी. शार्प में स्ट्रिंग संचालन से जुड़े सभी मेथडों की विस्तृत चर्चा की गई है। यहाँ केवल स्ट्रिंग से जुड़े मेथडों की ही विस्तृत चर्चा करने का कारण यह है कि भाषा से संबंधित टूलों के विकास में हमें सबसे अधिक स्ट्रिंग के साथ ही कार्य करना होता है। अत: इन मेथडों के प्रयोग का पूर्ण ज्ञान प्रयोगकर्ता के पास होना चाहिए। इसके उपरांत सी. शार्प प्रोग्राम को एम. एस. एक्सेस डाटाबेस से जोड़ना सिखाया गया है। इन सभी कार्यों को व्यावहारिक रूप में सिखाने के लिए समुचित मात्रा में उदाहरण-प्रोग्राम दिए गए हैं। इनमें फॉर्म डिजाइनिंग एवं कोड को सरल-से-सरल रखने का प्रयास किया गया है। इस खंड के अंतिम भाग में डाटाबेस प्रबंधन प्रणाली (Database Management System) की चर्चा करते हुए एम.एस. एक्सेस-2007 में डाटाबेस का निर्माण करना बताया गया है।
पुस्तक के द्वितीय भाग (खंड-ख) में हिंदी के भाषिक टूलों का विकास करना सिखाया गया है। इसके लिए पाँच टूलों का चयन किया गया है: द्विभाषिक शब्दकोश, शब्द-आवृत्ति गणक, सर्वनाम जाँचक, क्रिया-विश्लेषक एवं संज्ञा का रूपवैज्ञानिक विश्लेषक। इन सभी टूलों के विकास हेतु आवश्यक डाटाबेस निर्माण तथा इनपुट/आउटपुट अंतरापृष्ठ (Input/Output Interface) को बनाने संबंधी निर्देश चरणबद्ध रूप से दिए गए हैं। इसके अतिरिक्त प्रोग्राम में प्रयुक्त हो रहे सभी कंट्रोलों तथा प्रापर्टियों को बताया गया है तथा प्रत्येक कंट्रोल के लिए आवश्यक कोड को अलग-अलग व्याख्या के साथ निरूपित किया गया है। कोडिंग के विवेचन में यह ध्यान रखा गया है कि पाठक को कोड की सभी पंक्तियों में होने वाली प्रक्रिया को समझाया जा सके। यदि पाठक के पास थोड़ी सी भी संगणकीय पृष्ठभूमि हो तो हमें आशा ही नहीं पूर्ण विश्वास है कि वह सरलतापूर्वक प्रोग्राम के विकास के चरणों को समझ लेगा। इसके अतिरिक्त पाठकों को एक सलाह और भी है कि यदि प्रोग्राम के विकास के किसी चरण को आप पूर्णत: समझ नहीं पा रहे हैं तो भी विकास करते हुए बताए गए चरणों का पालन करें और यदि आप निर्देशित कंट्रोलों का प्रयोग करते हुए पुस्तक में दिए हुए कोड को सीधे-सीधे अपने प्रोग्राम में रख देते हैं तो भी आपका प्रोग्राम रन करेगा। रन हो जाने के पश्चात् आप सोच सकते हैं कि संबंधित कोड क्या कार्य कर रहा होगा।
भाषिक टूलों के विकास को लेकर हिंदी में इस प्रकार की पुस्तक के लेखन का संभवत: यह प्रथम प्रयास है। इस कारण इसमें शब्दावली एवं लेखन शैली से संबंधित विशिष्टताएँ देखी जा सकती हैं; यथा, अधिकांश तकनीकी शब्दों का लिप्यंतरण करते हुए उन्हें देवनागरी में लिख दिया गया है। इसके अतिरिक्त उन शब्दों के साथ हिंदी प्रत्ययों का प्रयोग किया गया है, जैसे: कॉलम का बहुवचन रूप कॉलमों एवं प्रापर्टी के बहुवचन रूप प्रापर्टियाँ तथा प्रापर्टियों निर्मित किए गए हैं। कुछ शब्दों को रोमन लिपि में ही रखा गया है। जिन तकनीकी शब्दों का हिंदी अनुवाद किया गया है उनके लिए हिंदी शब्द के चयन हेतु यथासंभव वैज्ञानिक एवं तकनीकी शब्दावली आयोग द्वारा मान्य शब्दावली का प्रयोग किया गया है किंतु जहाँ पर ये शब्द अपर्याप्त सिद्ध हुए हैं वहाँ कुछ नवीन पारिभाषिक शब्दों की रचना भी की गई है। नवीन शब्दों को पुस्तक के अंत में पारिभाषिक शब्दावली शीर्षक के अंतर्गत दिया गया है।
पुस्तक के अंत में संदर्भ-ग्रंथों का भी उल्लेख किया गया है जिसमें टूलों के मूलभूत घटक सर्वनाम’, क्रिया एवं संज्ञा से जुड़ी संकल्पनाओं के लिए प्रयुक्त हिंदी व्याकरण की कुछ प्रमुख पुस्तकों को सम्मिलित किया गया है। इसके अलावा लेखन के लिए प्रयुक्त अंग्रेजी की कुछ प्रमुख पुस्तकों एवं वेबसाइटों के नाम भी दिए गए हैं।
मैं श्रद्धेय गुरुवर, प्रो. उमाशंकर उपाध्याय एवं डॉ. अनिल कुमार पाण्डेय के प्रति हार्दिक कृतज्ञता व्यक्त करता हूँ जिन्होंने भाषावैज्ञानिक पृष्ठभूमि और हिंदी के व्याकरणिक पक्षों से संबंधित महत्वपूर्ण विचार दिए। इसके साथ ही मैं स्वर्गीय प्रो. महेंद्र कुमार सी. पाण्डेय का ऋणी हूँ जिन्होंने प्राकृतिक भाषा संसाधन के क्षेत्र में मार्गदर्शन किया। मैं डॉ. हरीश ए. हुनगुंद एवं डॉ. अनिल दुबे का हार्दिक आभार व्यक्त करता हूँ जिन्होंने निरंतर मुझे प्रोत्साहित किया। इस पुस्तक के लेखन से पूर्व प्रोग्रामिंग के तकनीकी ज्ञान से परिचित कराने वाले लीला के समस्त शिक्षकों मुख्यत: श्री अंजनी राय एवं श्री गिरीश चंद्र पांडेय का भी मैं आभार व्यक्त करता हूँ ।
मैं अपने मित्र रणजीत भारती एवं प्रवीण कुमार पाण्डेय को हृदय से धन्यवाद देता हूँ जिन्होंने समय-समय पर विभिन्न विषयों पर चर्चा करते हुए अनेक महत्वपूर्ण सुझाव दिए। विश्वविद्यालय के सभी अध्यापक, कर्मी एवं शोधार्थी जिनका प्रत्यक्ष अथवा परोक्ष रूप से इस कार्य में सहयोग रहा है मैं उनका आभारी हूँ । इनके अतिरिक्त मैं अपने माता-पिता का चिर-ऋणी हूँ जिन्होंने मुझे न केवल घर की जिम्मेदारियों से मुक्त रखा और हरसंभव सहयोग किया बल्कि अपार स्नेह एवं प्यार भी दिया है, साथ ही पुत्रवत स्नेह के लिए मैं चाची (आशा पाण्डेय) का आभारी हूँ।
अंत में, मैं विश्वविद्यालय में पठन-पाठन का परिवेश उपलब्ध कराने हेतु महात्मा गांधी अंतरराष्ट्रीय हिंदी विश्वविद्यालय के कुलपति आदरणीय विभूति नारायण राय का आभार व्यक्त करता हूँ ।
यह पुस्तक प्राकृतिक भाषा संसाधन के अंतर्गत टूलों के विकास का व्यावहारिक ज्ञान प्रदान करती है। अत: इसकी सफलता पाठकों के सुझावों एवं फीडबैक पर निर्भर करती है। अत: सुधी पाठकों एवं विद्वज्जनों के सुझाव सादर आमंत्रित हैं।

                                                                 धनजी प्रसाद



विषय सूची

खंड – क प्रोग्रामिंग एवं डाटाबेस

                                                                                                      पृ.सं.
डॉट नेट फ्रेमवर्क                                                                                 19
(.NET Framework)
1.1 डॉट नेट: एक परिचय                                                                             19
1.2 डॉट नेट के प्रमुख घटक                                                                           22
1.3 डॉट नेट अनुप्रयोग की संरचना                                                                   26
1.4 कोड प्रबंधन                                                                                         27

सी. शार्प                                                                                                30
 (C# /C Sharp)
2.1 सी. शार्प में भाषा आधारभूत                                                                      30
2.2 चरणबद्ध और वस्तु केंद्रित प्रोग्रामिंग                                                           32
2.3 वस्तु केंद्रित प्रोग्रामिंग की मुख्य धारणाएँ/ रूढ़ियाँ                                           33
2.4 सी. शार्प आरंभ करना                                                                              34
2.5 सी. शार्प वर्किंग विंडो के प्रमुख घटक                                                          38
2.6 सी. शार्प इवेंट्स                                                                                     56
2.7 कोड विंडो                                                                                            57
2.8 सी. शार्प में टाइप और चर                                                                       63

         उदाहरण प्रोग्राम : 1                                                                    73

सी. शार्प में संचालक, कथन एवं संग्रह                                            92
(Operators, Statements and Collections in C#)
3.1 संचालक                                                                                                 92
3.2 सी. शार्प में कथन                                                                                      95
3.3 सी. शार्प में कंडीशनल तर्क या कथन                                                             96
उदाहरण प्रोग्राम: 2                                                                    103
3.4 सी. शार्प में लूपिंग कथन                                                                        124
3.5 सी. शार्प में जंप कथन                                                                            128
3.6 सी. शार्प में संग्रह                                                                                   132
सी. शार्प में स्ट्रिंग संचालन                                                              139
(String Manipulation in C#)
4.1 ToUpper()                                                                                       142
4.2 ToLower( )                                                                                      143
4.3 TrimStart( ) and TrimEnd( )                                                            144
4.4 Trim( )                                                                                            147
4.5 Contains( )                                                                                      148
4.6 IndexOf( )                                                                                       149
4.7 Insert( )                                                                                           157
4.8 PadLeft( ) and PadRight( )                                                              158
4.9 Remove( ) and Replace( )                                                               158
4.10 Substring( )                                                                                   161
4.11 Split( ) and Join( )                                                                        162

सी. शार्प प्रोग्राम और  डाटाबेस                                                     166
(C# program and Database)
5.1 सी. शार्प प्रोग्राम को डाटाबेस से जोड़ना                                                     166
5.2 सी.शार्प प्रोग्राम में एम.एस.एक्सेस के रिकार्डों का संचालन                              184
डाटाबेस प्रबंधन प्रणाली और एम.एस. एक्सेस                             203
(Database Management System and MS Access)
6.1 परिचय                                                                                                   203 
6.2 डाटाबेस प्रबंधन प्रणाली                                                                            204
6.3 डाटाबेस का निर्माण                                                                                   207
6.4 एम.एस. एक्सेस                                                                                       210

खंड - ख हिंदी के भाषिक टूल

प्राकृतिक भाषा संसाधन और हिंदी                                                  233
(Natural Language Processing and Hindi)
7.1 प्राकृतिक भाषा संसाधन                                                                            233
7.2 हिंदी                                                                                                       236

द्विभाषिक शब्दकोश                                                                            241
(Bilingual Dictionary)
8.1 डाटाबेस का निर्माण                                                                                   242
8.2 सी.शार्प में प्रोग्राम का निर्माण                                                                      243

शब्द आवृत्ति गणक                                                                             280
(Word Frequency Counter)
9.1 सी.शार्प में प्रोग्राम का निर्माण                                                                      280
9.2 कोडिंग                                                                                                    283



सर्वनाम जाँचक  का विकास                                                            288
(Pronoun Checker)
10.1 डाटाबेस का निर्माण                                                                                288
10.2 सी.शार्प में प्रोग्राम का निर्माण                                                                    292
10.3 कोडिंग                                                                                                 294

क्रिया विश्लेषक  का विकास करना                                            313
(Verb Analyzer)
11.1 प्रोग्राम का विकास                                                                                  315
11.2 डाटाबेस का निर्माण                                                                                316
11.3 सी.शार्प में प्रोग्राम निर्माण                                                                        325
11.4 कोडिंग                                                                                                329

संज्ञा का रूपवैज्ञानिक विश्लेषक                                                        352
(Morphological Analyzer of Noun)
12.1 प्रोग्राम का विकास                                                                                 355
12.2 डाटाबेस का निर्माण                                                                               357
12.3 सी.शार्प में प्रोग्राम का निर्माण                                                                   363

संदर्भ ग्रंथ                                                                                                  395
पारिभाषिक शब्दावली                                                                               397






3 comments: