<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title/><link>https://clementgodbarge.com/hi/</link><atom:link href="https://clementgodbarge.com/hi/index.xml" rel="self" type="application/rss+xml"/><description/><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>hi-in</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title/><link>https://clementgodbarge.com/hi/</link></image><item><title>persNamer 1.2: एक VIAF नंबर, नौ प्रामाणिक नाम-सूचियाँ</title><link>https://clementgodbarge.com/hi/post/persnamer-1-2/</link><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/persnamer-1-2/</guid><description>&lt;p&gt;शुरू में
एक छोटी-सी सुविधा भर था: VIAF नंबर दीजिए, TEI की एक &lt;code&gt;&amp;lt;person&amp;gt;&lt;/code&gt; प्रविष्टि पाइए, साथ में पाठ में लगाने के लिए &lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt; टैग। बस इतना ही — और जो प्रविष्टि बनती थी वह भी दुबली-पतली: एक नाम, दो तिथियाँ, एक पहचानकर्ता। आज जारी हुआ संस्करण 1.2 अब भी वही एक काम करता है, पर इस बार जो प्रविष्टि निकलती है वह सँभालकर रखने लायक है।&lt;/p&gt;
&lt;h2 id="वयकत-परवषट-म-अब-कय-कय-ह"&gt;व्यक्ति-प्रविष्टि में अब क्या-क्या है&lt;/h2&gt;
&lt;p&gt;पहले नाम की बात। VIAF के क्लस्टर में हर सहयोगी पुस्तकालय अपना-अपना नाम-रूप लेकर आता है, और पुराना persNamer जो लेबल पहले हाथ लगे वही उठा लेता था। उससे वोल्तेयर (Voltaire) के बारे में पूछिए तो जवाब मिलता « فولتير، » — यानी नाम का अरबी रूप, और वह भी पीछे लटके अल्पविराम सहित — ऊपर से एक खाली &lt;code&gt;xml:id&lt;/code&gt; मुफ़्त में। अब औज़ार पूरे क्लस्टर में नाम-रूपों की गिनती करके वही रखता है जिस पर स्रोत रिकॉर्ड एकमत हों; बाक़ी रूप &lt;code&gt;&amp;lt;persName type=&amp;quot;variant&amp;quot;&amp;gt;&lt;/code&gt; बनकर पीछे-पीछे आते हैं, जो सबसे प्रचलित हो वह सबसे आगे। तिथियाँ मानकीकृत होकर (&lt;code&gt;1572-08-00&lt;/code&gt; से &lt;code&gt;1572-08&lt;/code&gt;) दो बार दर्ज होती हैं — एक बार पाठ के रूप में, एक बार &lt;code&gt;@when&lt;/code&gt; विशेषता में — और तिथियाँ समझने वाली कोई भी प्रोसेसिंग असल में इसी दूसरी को पढ़ती है। लिंग और विवरण भी आते हैं, जहाँ VIAF उन्हें देता है।&lt;/p&gt;
&lt;p&gt;और अब वह हिस्सा जिसका मुझे सबसे ज़्यादा इंतज़ार था। VIAF जिस-जिस पहचानकर्ता को इस व्यक्ति से जोड़ता है — चाहे &lt;code&gt;schema:sameAs&lt;/code&gt; के ज़रिए, चाहे अपने स्रोत-आईडी के ज़रिए — वह सब अब अलग-अलग &lt;code&gt;&amp;lt;idno&amp;gt;&lt;/code&gt; में दर्ज हो जाता है: BnF, GND, लाइब्रेरी ऑफ़ कांग्रेस, SUDOC, Wikidata, ISNI, BNE, LIBRIS, NDL। एक नंबर अंदर गया, नौ कैटलॉग बाहर आए। किसी व्यक्ति-सूची (personography) के लिए नामों की कोरी फ़ेहरिस्त और प्रामाणिक डेटा के जाल की एक गाँठ में जो फ़र्क़ है, वह यही है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;person&lt;/span&gt; &lt;span class="na"&gt;xml:id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pers-teligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;persName&amp;gt;&lt;/span&gt;Charles de Téligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;birth&lt;/span&gt; &lt;span class="na"&gt;when=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;1535&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;1535&lt;span class="nt"&gt;&amp;lt;/birth&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;death&lt;/span&gt; &lt;span class="na"&gt;when=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;1572-08-24&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;1572-08-24&lt;span class="nt"&gt;&amp;lt;/death&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;sex&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;M&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;M&lt;span class="nt"&gt;&amp;lt;/sex&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;VIAF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;314802260&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;BNF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;16133360&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Wikidata&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Q1868249&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ISNI&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;0000000071126808&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/person&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="टकड-स-वयकत-सच-तक"&gt;टुकड़ों से व्यक्ति-सूची तक&lt;/h2&gt;
&lt;p&gt;एक आदमी के लिए टर्मिनल पर XML छाप लेना ठीक है; पर एक संपादित ग्रंथ में तो सैकड़ों लोग होते हैं। इसलिए persNamer अब एक साथ कई VIAF नंबर लेता है, दो अनुरोधों के बीच VIAF को साँस लेने की मोहलत देता है, जो कुछ लाया है उसे कैश में रख लेता है ताकि दोबारा न माँगना पड़े, और &lt;code&gt;--merge&lt;/code&gt; मिलते ही नई प्रविष्टियाँ सीधे मौजूदा TEI फ़ाइल के &lt;code&gt;&amp;lt;listPerson&amp;gt;&lt;/code&gt; में बिठा देता है। जो लोग फ़ाइल में पहले से हैं, वे अपने VIAF नंबर से पहचान लिए जाते हैं और उनका &lt;code&gt;xml:id&lt;/code&gt; ज्यों का त्यों रहता है; नए आईडी फ़ाइल से मिलाए जाते हैं और कहीं टकराव हो तो पीछे प्रत्यय (&lt;code&gt;-2&lt;/code&gt;, &lt;code&gt;-3&lt;/code&gt;) लग जाता है; अंत में पूरी फ़ाइल के इंडेंट फिर से सँवार दिए जाते हैं — हाँ, उससे पहले एक &lt;code&gt;.bak&lt;/code&gt; प्रति अलग रख ली जाती है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;persnamer --merge edition.xml &lt;span class="m"&gt;314802260&lt;/span&gt; &lt;span class="m"&gt;36925746&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;एक बदलाव ज़रूर ध्यान में रखिए: कुलनाम से पहले आने वाला कण (particle) अब डिफ़ॉल्ट रूप से आईडी में नहीं रहता, इसलिए Charles de Téligny पहले के &lt;code&gt;pers-deteligny-c&lt;/code&gt; की जगह अब &lt;code&gt;pers-teligny-c&lt;/code&gt; हो गया है। आपकी परियोजना पुराने रूप की आदी हो चुकी हो तो &lt;code&gt;--keep-particle&lt;/code&gt; उसे वापस ले आता है; और नामों के भरोसे रहना ही न हो तो &lt;code&gt;--id-format viaf&lt;/code&gt; से &lt;code&gt;pers-viaf-314802260&lt;/code&gt; मिल जाता है।&lt;/p&gt;
&lt;h2 id="सफ-सफई"&gt;साफ़-सफ़ाई&lt;/h2&gt;
&lt;p&gt;स्क्रिप्ट अब बाक़ायदा एक पैकेज बन गई है, अपनी &lt;code&gt;persnamer&lt;/code&gt; कमांड के साथ: &lt;code&gt;uv tool install&lt;/code&gt; या &lt;code&gt;pipx&lt;/code&gt; से एक लाइन में इंस्टॉल कीजिए, या बिना इंस्टॉल किए बस एक बार आज़माना हो तो &lt;code&gt;uvx&lt;/code&gt; से चला लीजिए। छब्बीस टेस्ट VIAF की रिकॉर्ड की हुई प्रतिक्रियाओं पर चलते हैं, इसलिए टेस्ट-सूट को नेटवर्क की कोई ज़रूरत नहीं; CI उन्हीं को Python 3.9 से 3.13 तक दोहराता है, और आउटपुट TEI P5 के मुताबिक़ जाँचा जाता है। लाइसेंस पहले की तरह Apache 2.0 ही है।&lt;/p&gt;
&lt;p&gt;जो यह अब भी नहीं बता सकता, वह है कि कोई कहाँ पैदा हुआ और रोज़ी-रोटी के लिए क्या करता था: VIAF के क्लस्टर RDF में न जगहें हैं, न पेशे। पर जिन BnF और GND रिकॉर्डों से यह जुड़ा है, उनमें दोनों हैं — और उनके नंबर अब आपके हाथ में हैं।&lt;/p&gt;
&lt;p&gt;कोड और दस्तावेज़
पर।&lt;/p&gt;</description></item><item><title>बाड़ असली सवाल है, आग नहीं</title><link>https://clementgodbarge.com/hi/post/fence-not-fire/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/fence-not-fire/</guid><description>&lt;p&gt;नॉर्थ लास वेगास के एक गोदाम में Amazon एक ऐसी मशीन चलाता है, जो पुरानी किताबों की रीढ़ काट देती है। खुले पन्ने स्कैनर से गुज़रते हैं, और फिर काग़ज़ लुगदी बनने चला जाता है। एआई को खिलाने के लिए किताबें नष्ट करना: इस कहानी में सांस्कृतिक कांड बनने का हर मसाला मौजूद था।
ने इसे आधुनिक ज़माने की किताबों की होली बताया और रास्ते में कोई घिसा-पिटा मुहावरा नहीं छोड़ा: सावोनारोला का हवाला, देखने में दुर्लभ लगती किताबों की स्टॉक तस्वीरें और, ज़ाहिर है, बर्लिन की चिता। जैसी उम्मीद थी, गंभीर अख़बार ठंडे रहे, लेकिन वही तुलना हवा में लटकी छोड़ गए। पर अपने सारे आक्रोश के बावजूद इन लेखों ने एआई उद्योग को हैरतअंगेज़ ढंग से बख़्श दिया। काग़ज़ का अंजाम मंच के बीचोबीच है; इससे बनने वाले डिजिटल पुस्तकालयों का मालिकाना तस्वीर में मुश्किल से आता है। जो ज्ञान स्कैन हो रहा है, उस पर नियंत्रण किसका होगा? इस सवाल को इंतज़ार करना होगा, जब तक हम किताब-दहन की इस बकवास से निपट न लें।&lt;/p&gt;
&lt;h2 id="सकनर-कई-चत-नह"&gt;स्कैनर कोई चिता नहीं&lt;/h2&gt;
&lt;p&gt;सावोनारोला की चिताओं या नाज़ी किताब-दहन से यह तुलना बेतुकी है: एक प्रति नष्ट करना किसी पाठ को दबाना नहीं है। वे चिताएँ सार्वजनिक परित्याग की कार्रवाइयाँ थीं। वह बेचारा भिक्षु सावोनारोला, जिसका नाम किताब जलाने के हर विवाद में घसीटा जाता है, लोगों से कह रहा था कि वे सार्वजनिक प्रायश्चित के रूप में अपनी कुछ संपत्ति की आहुति दें। नाज़ी चिताओं ने एक अलग तरह का परित्याग मंचित किया: किताबें सरेआम जलाकर यह घोषणा की गई कि उनके लेखकों के लिए जर्मन सांस्कृतिक जीवन में कोई जगह नहीं। दोनों ही मामलों में, चाहे जितना अप्रिय हो, विनाश एक प्रदर्शन था। विनाशक स्कैनिंग – डिजिटलीकरण की एक प्रचलित विधि – का मक़सद दूसरा है: प्रति की गर्दन इसलिए काटी जाती है कि उसकी अंतर्वस्तु बच जाए। किताब नष्ट होती है; पाठ अभौतिक हो जाता है। जो लोग &lt;em&gt;Fahrenheit 451&lt;/em&gt; की दुहाई दे रहे हैं, उन्हें उसका केंद्रीय सबक याद कर लेना चाहिए: पाठ वह काग़ज़ नहीं है जिस पर वह छपा है।&lt;/p&gt;
&lt;p&gt;Daily Mail से ज़्यादा तीखा पर उतना ही फूहड़,
ने अपने शीर्षक में “दुर्लभ किताबें” डालकर हंगामे में और हवा दी। लेकिन उसी की जाँच-रिपोर्ट में उद्धृत एक पुस्तक-विक्रेता ने बताया कि इन थोक ऑर्डरों में
– जिसका इशारा मोटे तौर पर 1970 के आसपास ISBN की शुरुआत के बाद छपे संस्करणों की ओर है। यह रद्दी बाज़ार और ख़ैराती दुकानों का माल है, जिसे अक्सर घर की एक सफ़ाई ही कूड़े तक पहुँचा देती है। सांस्कृतिक विपदा का ऐलान करने से पहले पुस्तकालय का कैटलॉग देख लेना चाहिए। ये ठीक वही प्रकाशन हैं जिन्हें सहेजने के लिए वैधानिक-निक्षेप वाले पुस्तकालय बने हैं। माना कि ISBN किसी बची हुई निक्षेप-प्रति की गारंटी नहीं है, लेकिन पुराने बाज़ार में किसी किताब का कम मिलना भी पाठ के लुप्त हो जाने का सबूत नहीं है।&lt;/p&gt;
&lt;p&gt;किताबों का, ज़ाहिर है, एक भौतिक इतिहास भी होता है। जिन प्रतियों की टिप्पणियाँ, हस्ताक्षर या स्वामित्व-इतिहास उन्हें ऐतिहासिक महत्व देते हैं, वे पहचानी और सहेजी जानी चाहिए। यहाँ पुरानी किताबों के विक्रेताओं की एक भूमिका है: ऐसी प्रति पहचान लेना उसे लुगदी की ओर जाती खेप से बाहर रखने की वजह होनी चाहिए। हम आउट-ऑफ़-प्रिंट किताबों की घटती भौतिक प्रतियों की चिंता भी कर सकते हैं। लेकिन तब हमें यह भी पूछना चाहिए कि उनके अधिकार-धारक उन्हें दोबारा क्यों नहीं छापते, और मौजूद डिजिटल प्रतिरूपों तक पहुँच की अनुमति भी क्यों नहीं देते। शोधकर्ता इस खीज को जानते हैं: Google Books आपको ज़रूरी अंश ढूँढ़ देता है, फिर ऐसी किताब की एक झलक भर दिखाता है जिसे आप न नई ख़रीद सकते हैं, न ऑनलाइन पढ़ सकते हैं। तो यहाँ बहस लायक़ नुक़सान हैं, पर वे स्कैनर को नाज़ी चिता में नहीं बदल देते।&lt;/p&gt;
&lt;p&gt;इधर पुस्तक-व्यापार तो बिना बिकी किताबें बरसों से दस्तूर की तरह लुगदी बनाता आया है। अकेले फ़्रांस में 2023 में अनुमानतः
– वितरकों को बिना बिके लौटे माल का लगभग 60 प्रतिशत। इसे स्टॉक प्रबंधन कहते हैं। बची हुई प्रतियाँ और दुर्लभ पुरानी किताबें पहुँच के अलग-अलग सवाल उठाती हैं, लेकिन काग़ज़ नष्ट करना अपने-आप में सेंसरशिप या तानाशाही नहीं है।&lt;/p&gt;
&lt;h2 id="जयद-कतब-बहतर-एआई"&gt;ज़्यादा किताबें, बेहतर एआई?&lt;/h2&gt;
&lt;p&gt;एआई कंपनियों का किताबें ख़रीदना और स्कैन करना दरअसल अच्छी ख़बर है। जिस तकनीक की मानव-संस्कृति की उथली समझ के लिए रोज़ आलोचना होती है, वह उसमें से और अपना रही है – और उम्मीद तो यह थी कि शोधकर्ता इस कोशिश का स्वागत करेंगे।&lt;/p&gt;
&lt;p&gt;किसी भाषा के संचित अभिलेख का वेब एक कमज़ोर विकल्प है। किसी भाषा के दर्ज जीवन का बड़ा हिस्सा – उपन्यास और संस्मरण से लेकर लोकप्रिय गीत और लिखित बातचीत तक – कभी छपाई से वेब तक पहुँचा ही नहीं। इनमें से बहुत-सी किताबें अपने प्रकाशकों से ज़्यादा जी चुकी हैं। उन्हें प्रशिक्षण-डेटा में लाना वहाँ सबसे ज़्यादा मायने रखता है, जहाँ और कुछ उपलब्ध ही नहीं। अंग्रेज़ी में कुछ और किताबें शायद मामूली सुधार ला दें। लेकिन किसी कम प्रतिनिधित्व वाली भाषा में वही किताबें काम के सिस्टम और बेकार सिस्टम के बीच का फ़र्क़ हो सकती हैं। ये उपकरण हमारी सार्वजनिक सेवाओं या रोज़मर्रा की ज़िंदगी में होने चाहिए या नहीं, यह सार्वजनिक बहस का सवाल है। लेकिन जहाँ भी हम उन्हें इस्तेमाल करने का फ़ैसला करें, हमें ऐसा अपनी भाषा में कर पाना चाहिए।&lt;/p&gt;
&lt;p&gt;स्पेन और नीदरलैंड से आई ऑर्डरों की ख़बरें भाषाई दाँव को ठोस बनाती हैं। मई में
ने बादालोना के एक पुस्तक-विक्रेता का ज़िक्र किया, जिसे बार-बार ऑर्डर मिल रहे थे – ख़ास तौर पर कातालान की ग़ैर-कथा किताबों के: इतिहास की किताबें, तकनीकी मैनुअल और पुराने सम्मेलनों की कार्यवाहियाँ। अगस्त तक डच रिपोर्टों में De Slegte से
की माँग का ज़िक्र था। किताबों की भाषा कम से कम उतने ही ध्यान की हक़दार है जितना उनकी जिल्दों का अंजाम। Daily Mail से शायद इतनी उम्मीद ज़्यादा है। पर ज़्यादा संजीदा अख़बारों के पास भी इन भाषाओं के बारे में कहने को कम ही था।&lt;/p&gt;
&lt;p&gt;बड़े प्रकाशकों के साथ लाइसेंस-समझौते भी मूल्यवान सामग्री दे सकते हैं, लेकिन उनके डिजिटल कैटलॉग छपी हुई चीज़ों के एक अंश भर को समेटते हैं। जो किताबें कभी डिजिटल हुई ही नहीं, या जिनके अधिकार अब प्रकाशक के पास नहीं, वे इस पेशकश से बाहर रह जाती हैं। उदार से उदार लाइसेंस-सौदा भी प्रकाशन के इतिहास की जगह नहीं ले सकता, किसी संस्कृति के इतिहास की तो बात ही क्या। पुरानी प्रतियाँ ख़रीदना इन व्यावसायिक सीमाओं के पार पहुँचने का एक तरीक़ा है।&lt;/p&gt;
&lt;h2 id="चर-कई-दलल-नह"&gt;“चोरी” कोई दलील नहीं&lt;/h2&gt;
&lt;p&gt;इसे “चोरी” कहने से भी कुछ नहीं बनता। जून 2025 में अमेरिका की दो ज़िला अदालतों ने अपने सामने आए मामलों में माना कि भाषा मॉडलों को प्रशिक्षित करने के लिए किताबों का इस्तेमाल उचित उपयोग (fair use) है।
में अदालत ने प्रशिक्षण के रूपांतरकारी चरित्र पर ज़ोर दिया: किताबें एक ऐसा सिस्टम बनाने के लिए इस्तेमाल हुईं जो नई अभिव्यक्ति पैदा कर सके। मॉडल अंश याद रख सकते हैं, लेकिन किसी किताब को प्रशिक्षण में इस्तेमाल करने से पूरा पाठ माँगने पर हाज़िर नहीं हो जाता। और शब्दशः पुनरुत्पादन का न होना हर आपत्ति को निपटा भी नहीं देता।
में न्यायाधीश ने चेताया कि एआई-निर्मित रचनाएँ बाज़ार में बाढ़ ला सकती हैं और ऐसे नुक़सान का सबूत उचित-उपयोग के बचाव को हरा सकता है। पर इन वादियों ने अपनी रचनाओं को हुए ऐसे नुक़सान का कोई ठोस सबूत पेश नहीं किया था। दोनों में से कोई फ़ैसला एआई कंपनियों को खुली छूट नहीं देता, न नैतिक विवाद को सुलझाता है। वे हमसे फ़र्क़ करने की माँग करते हैं – किताबें कैसे हासिल की गईं, प्रतियाँ कैसे रखी गईं, और प्रशिक्षण उनके साथ क्या करता है। इस सब को “चोरी” कह देना इन सवालों को अनुत्तरित छोड़ देता है।&lt;/p&gt;
&lt;p&gt;संयोग से, Anthropic वाला फ़ैसला गिलोटिन का एक तर्क भी मुहैया कराता है। अदालत ने ख़रीदी गई प्रतियों के डिजिटलीकरण को सही ठहराया और पाइरेटेड किताबों को एक स्थायी पुस्तकालय में जमा करने को ख़ारिज किया – जिस पर कंपनी बाद में
पर राज़ी हुई। डिजिटलीकरण इसलिए भी पास हुआ कि रूपांतरण में हर छपी प्रति नष्ट कर दी गई: डिजिटल प्रति ने उसकी जगह ली और कंपनी के बाहर साझा नहीं हुई। जो विनाश कुछ लोगों को इतना विचलित करता है, उसी ने Anthropic को यह साबित करने में मदद की कि उसका डिजिटलीकरण कार्यक्रम उचित उपयोग था। ख़रीदना, स्कैन करना और फेंक देना – उस मामले में एक क़ानूनी रास्ता साबित हुआ। गिलोटिन यहाँ नियम-पालन का औज़ार है।&lt;/p&gt;
&lt;p&gt;यह चाहने की अच्छी वजहें हैं कि एआई ज़्यादा भाषाओं, ज़्यादा शोध और इंटरनेट से पहले की दुनिया के ज़्यादा हिस्से से सीखे। ये वजहें इसलिए ग़ायब नहीं हो जातीं कि एक ऐसी कंपनी ने, जो हमें पसंद नहीं, इसमें व्यावसायिक मौक़ा देख लिया है।&lt;/p&gt;
&lt;h2 id="उधर-क-आकरश"&gt;उधार का आक्रोश&lt;/h2&gt;
&lt;p&gt;तो लौटते हैं Daily Mail पर। उसका लेख
का हिस्सा है – अख़बार-मालिकों और प्रकाशकों का एक अभियान, जो एआई के लिए
चाहता है। दो सुविधाजनक अदला-बदलियाँ सारा काम करती हैं: Big Tech एआई की जगह खड़ा हो जाता है, और अधिकार-धारक “ब्रिटिश रचनात्मकता” की जगह। पाठकों को संस्कृति की रक्षा के लिए बुलाया जाता है, जबकि प्रकाशक उसकी बिक्री की शर्तों पर मोल-भाव कर रहे होते हैं। इस कहानी को साझा करने वाले शोधकर्ता ख़ुद से पूछ सकते हैं कि उनका आक्रोश किसका काम कर रहा है।&lt;/p&gt;
&lt;p&gt;Big Tech और
किराये पर झगड़ रहे हैं, लेकिन बाड़ पर किसी को आपत्ति नहीं। टेक-दिग्गज के हाथों लुटे अकेले लेखक की कहानी उस चीज़ को ढँक देती है, जो महँगे लाइसेंस-सौदे दोनों कॉर्पोरेट खेमों को देते हैं: प्रकाशकों को पैसा मिलता है, और Big Tech को ऐसा बाज़ार, जिसमें उसके छोटे प्रतिद्वंद्वी मुक़ाबले का ख़र्च ही नहीं उठा सकते। पीटर थील ने सिलिकॉन वैली की पसंद को और दो-टूक कहा था:
।&lt;/p&gt;
&lt;p&gt;लाइसेंसिंग का यह नतीजा निकलना ज़रूरी नहीं। किफ़ायती, ग़ैर-अनन्य पहुँच छोटे डेवलपरों की मदद कर सकती है। लेकिन जो व्यवस्था हर नए प्रवेशी को बड़े अधिकार-धारकों से महँगे सौदे करने पर मजबूर करे, वह ख़रीदने की ताक़त को प्रवेश की शर्त बना देती है। सांस्कृतिक उद्योगों को रियायत के रूप में पेश किया गया भुगतान अंततः भावी प्रतिद्वंद्वियों से सुरक्षा ख़रीद लेता है।&lt;/p&gt;
&lt;h2 id="एआई-big-tech-क-जगर-नह"&gt;एआई Big Tech की जागीर नहीं&lt;/h2&gt;
&lt;p&gt;एक और गहरा मसला है। एआई की बहुत-सी आलोचना उसके सबसे बड़े व्यावसायिक आपूर्तिकर्ताओं को ही पूरा क्षेत्र मान लेती है। उत्पाद सुर्ख़ियों पर छाए रहते हैं; उन कंपनियों से बाहर का शोध और विकास नज़र से ओझल हो जाता है। Big Tech इससे ज़्यादा फ़ायदेमंद ग़लतफ़हमी की कामना नहीं कर सकता। पूरे क्षेत्र पर क़ब्ज़े की उसकी महत्वाकांक्षा उसी के ख़िलाफ़ की जाने वाली आलोचना की पूर्वधारणा बन जाती है। एकाधिकार अभी पक्का नहीं हुआ है। उसे तय मान लेना इन कंपनियों पर बहुत बड़ा एहसान है। और यह ध्यान को ओपन सोर्स से भी हटा देता है: उसकी ज़रूरतों से, उसके अस्तित्व की संभावनाओं से, उसके हितों से, विकल्प के रूप में उसकी वैधता से।&lt;/p&gt;
&lt;p&gt;ओपन-सोर्स एआई लोगों को ऐसे सिस्टम बनाने और ढालने देता है, जो भाषाओं, संस्कृतियों और अभिव्यक्ति के रूपों की ज़्यादा विविधता को दर्शाएँ। यूरोप, अफ़्रीका, लातिन अमेरिका और एशिया के देशों के लिए यह तकनीकी और सांस्कृतिक संप्रभुता का व्यावहारिक आधार है: यह तय कर पाने की क्षमता कि सिस्टम कैसे काम करें, किन भाषाओं की सेवा करें और कहाँ इस्तेमाल हों। एआई इस्तेमाल करना है या नहीं, और किन उद्देश्यों के लिए, यह सार्वजनिक चुनाव रहना चाहिए – न कि किसी विदेशी अल्पतंत्र पर निर्भरता से थोपा गया फ़ैसला।&lt;/p&gt;
&lt;p&gt;लेकिन किसी सिस्टम को बदलने की आज़ादी बदलने के साधनों के बिना ज़्यादा मायने नहीं रखती। स्वतंत्र काम के लिए विशेषज्ञता, कंप्यूटिंग इन्फ़्रास्ट्रक्चर और प्रशिक्षण-सामग्री तक पहुँच चाहिए। और यहीं हम किताबों पर लौट आते हैं। अगर हर शोध-दल या सार्वजनिक संस्था को अपने-अपने प्रकाशन-सौदे करने या अपना निजी पुस्तकालय जुटाना पड़े, तो स्वतंत्रता कुछ धनी देशों की भी पहुँच से बाहर हो जाएगी।&lt;/p&gt;
&lt;h2 id="कतब-त-पहल-स-यह-ह"&gt;किताबें तो पहले से यहीं हैं&lt;/h2&gt;
&lt;p&gt;पुस्तकालय और अभिलेखागार पीढ़ियों से वही सामग्री जुटाते आए हैं, जिसकी इन सिस्टमों को ज़रूरत है। उनके संग्रह इसलिए हैं कि ज्ञान तक पहुँच उसे बेचने के व्यावसायिक हित से ज़्यादा टिकनी चाहिए। बहुत कुछ पहले ही स्कैन हो चुका है:
के पास शोध-पुस्तकालयों से आए क़रीब 1.9 करोड़ डिजिटल खंड हैं, जिनमें से कई अब भी कॉपीराइट में हैं। पुस्तकालय किताब स्कैन करता है और उसे रख लेता है। वहाँ किसी को गिलोटिन नहीं चाहिए। HathiTrust
, लेकिन उसने
की घोषणा भी की है – ग़ैर-व्यावसायिक एआई शोध और विकास के लिए कॉर्पस तक पहुँच देने की परियोजना। इन शर्तों पर पहुँच भी कुछ स्वतंत्र डेवलपरों को बाहर ही छोड़ देगी।&lt;/p&gt;
&lt;p&gt;हालाँकि किताबों का मालिक होना किसी पुस्तकालय को उनकी कॉपीराइट-सुरक्षित अंतर्वस्तु को प्रशिक्षण-कॉर्पस के रूप में बाँटने का हक़ नहीं देता।
शोध-संस्थाओं और पुस्तकालयों को वैज्ञानिक शोध के लिए क़ानूनी रूप से सुलभ रचनाओं की माइनिंग की अनुमति देता है, और जहाँ अधिकार-धारकों ने अपने अधिकार आरक्षित नहीं किए हैं, वहाँ व्यापक माइनिंग की भी।
: उसका माइनिंग-अपवाद ग़ैर-व्यावसायिक शोध तक सीमित है और प्रतियों के हस्तांतरण को सीमित करता है। दोनों में से कोई ढाँचा पुस्तकालयों को यह सामान्य अधिकार नहीं देता कि वे अपनी कॉपीराइट-सुरक्षित सामग्री दूसरों के निर्माण के लिए साझा करें।&lt;/p&gt;
&lt;p&gt;हम इस पर भी दोबारा सोच सकते हैं कि किताबों के कंप्यूटेशनल उपयोग पर अधिकार-धारकों का नियंत्रण कितने समय तक रहना चाहिए। औषधि-पेटेंट एक सौदे की मिसाल हैं: अस्थायी एकाधिकार नवाचार का इनाम देता है, फिर आविष्कार दूसरों के इस्तेमाल के लिए खुल जाता है। उनकी सामान्य बीस-वर्षीय अवधि कॉपीराइट की – लेखक के जीवनकाल और उसके बाद सत्तर साल की – सुरक्षा से कहीं छोटी है। किताबों के कंप्यूटेशनल उपयोग पर ऐसा ही सिद्धांत क्यों न लागू हो? मान लीजिए, पहले प्रकाशन के बीस साल बाद कोई किताब बिना लाइसेंस-शुल्क के टेक्स्ट और डेटा माइनिंग के लिए उपलब्ध हो जाए, जबकि पुनर्प्रकाशन और बिक्री के अधिकार सुरक्षित रहें। लेखक अपनी किताबों से कमाते रह सकते हैं, और शोधकर्ताओं की पीढ़ियों को उनका विश्लेषण करने की इजाज़त के लिए मोल-भाव नहीं करना पड़ेगा।&lt;/p&gt;
&lt;p&gt;मैंने दो साल पहले
में दलील दी थी कि विरासत-डेटा को सार्वजनिक संपदा माना जाए। सरकारों को पुस्तकालयों और अभिलेखागारों को अपने संग्रहों के डिजिटलीकरण, प्रतिलेखन और दस्तावेज़ीकरण के लिए धन देना चाहिए, और उन्हें यह क़ानूनी अधिकार भी कि वे इससे बने कॉर्पस दूसरों के निर्माण के लिए उपलब्ध कराएँ। Big Tech एक समर्पित उपकर के ज़रिये इस ख़र्च में हाथ बँटा सकता है।&lt;/p&gt;
&lt;p&gt;सार्वजनिक धन के साथ प्रकाशित संग्रह-नीतियाँ और पहुँच के नियम आने चाहिए, जो अकादमिक और व्यावसायिक काम दोनों को समेटें – बिना अनन्य सौदों या दानदाताओं के लिए विशेष पहुँच के। प्रशिक्षण के लिए पहुँच का मतलब कॉपीराइट-सुरक्षित किताबों का बेरोक पुनर्वितरण होना ज़रूरी नहीं। लेखकों को सार्वजनिक योजना के डिज़ाइन में शामिल होना चाहिए – इसमें भी कि वह सहमति, पारिश्रमिक और उनकी रचनाओं से प्रतिस्पर्धा के सवालों को कैसे सँभाले। उपयोगकर्ताओं के लिए मुफ़्त पहुँच का यह मतलब नहीं कि लेखकों को सार्वजनिक धन से पारिश्रमिक न मिल सके। ब्रिटेन की
योजना – जो किताबें उधार लिए जाने पर लेखकों को सार्वजनिक कोष से भुगतान करती है – एक मिसाल है। आग कभी असली कहानी थी ही नहीं। बाड़ है।&lt;/p&gt;</description></item><item><title>प्रिय संपादको: मेरी आवाज़ चाहिए तो मेरी भाषा लौटा दीजिए</title><link>https://clementgodbarge.com/hi/post/dear-editors/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/dear-editors/</guid><description>&lt;p&gt;फिर एक दिन, फिर एक पत्रिका अपनी एआई-नीति का ढोल पीटती हुई। इस बार &lt;em&gt;Progress in Human Geography&lt;/em&gt; है, जिसके संपादकों ने
छापकर चेताया है कि अपने पढ़ने, सोचने और लिखने की जगह एआई को बिठा देना “साहित्यिक चोरी जैसा अकादमिक नैतिकता का उल्लंघन” है। उल्लंघन में पकड़े गए लेख “वापस लिए जा सकते हैं”; अच्छे से अच्छे मामले में उन्हें सुधारा जाएगा, और पत्रिका में एक सूचना छपेगी। लेखकों को, संपादक जोड़ते हैं, “ध्यान से सोच लेना चाहिए कि क्या वे चाहते हैं कि उनका नाम वापसी और सुधार-सूचनाओं से जुड़े”।&lt;/p&gt;
&lt;p&gt;इस वाक्य पर ज़रा ठहरिए। अकादमिक प्रकाशन की सज़ाओं में लेख की वापसी सबसे ऊपर है – वह दंड जो आम तौर पर मनगढ़ंत आँकड़ों और धोखाधड़ी के लिए रखा जाता है। यहाँ उसे एक ऐसे अपराध से जोड़ दिया गया है, जिसे वही संपादकीय परिभाषित तक नहीं कर पाता। संपादक मानते हैं कि “सचमुच धुँधले क्षेत्र” हैं और “‘ग़ैर-ज़िम्मेदारी’ के दायरे को सीमांकित करने वाली कोई स्पष्ट रेखाएँ नहीं”। नीति लागू होगी “विवेक-आधारित फ़ैसलों” से, “जो कुछ लेखकों को नागवार लग सकते हैं, जो दावा करेंगे कि उन्होंने एआई का अनुचित उपयोग नहीं किया”: यानी आपकी अपनी घोषणा को ख़ारिज किया जा सकता है। इसके बाद सलाह है कि “‘ज़िम्मेदारी’ के दायरे में सुरक्षित” रहिए – और सुरक्षा की सलाह वहीं दी जाती है जहाँ ख़तरा हो। जिस रेखा को आप ख़ुद मानते हैं कि खींच नहीं सकते, उसे लाँघने पर लोगों को सज़ा देना तभी समझ में आता है, जब मक़सद डर का राज क़ायम करना हो। इस बात को याद रखिए, आगे काम आएगी।&lt;/p&gt;
&lt;h2 id="आवज-क-बहन"&gt;आवाज़ का बहाना&lt;/h2&gt;
&lt;p&gt;तो ज़िम्मेदार उपयोग दिखता कैसा है? लेखकों से कहा गया है: “बहुत सावधानी बरतनी चाहिए … अपनी आवाज़ बचाए रखने की”। दुरुपयोग है एआई का सहारा लेकर “ऐसी भाषा में लिखना जिसे लेखक सामान्यतः कभी ख़ुद इस्तेमाल न करते”। मातृभाषी के लिए यह बात समझ में आती है: जो आप नहीं हैं, वह होने का ढोंग मत कीजिए। लेकिन उन विदेशियों के लिए, जिन्हें पराई भाषा में लिखना ही पड़ता है, यह आदेश ख़ुद को ही काटता है। नीति जिस आवाज़ की हिफ़ाज़त करती है, वही एकमात्र चीज़ है जो पत्रिका के अपने नियम हमसे छीन लेते हैं।&lt;/p&gt;
&lt;p&gt;मिसाल के तौर पर मुझे ही ले लीजिए। अंग्रेज़ी मेरी चौथी भाषा है – ठीक वैसी, जिसे मैं “सामान्यतः” कभी इस्तेमाल न करता। अंग्रेज़ीभाषी विश्वविद्यालयों ने मुझे उसे छोटे वाक्यों में, संकेत-पट्टियों के साथ, लगभग यांत्रिक ढंग से लिखना सिखाया: मुख्य वाक्य सबसे पहले, संकोच-सूचक शब्द तय जगहों पर, संयोजक तय सूची से। प्रशिक्षण कामयाब रहा: मेरी अंग्रेज़ी में बचाने लायक़ कोई आवाज़ कभी थी ही नहीं; सबसे पहले उसी की बलि चढ़ी थी। संपादकों की अपनी परिभाषा के मुताबिक़, मैंने अंग्रेज़ी में जो कुछ भी लिखा है, वह अनुचित उपयोग ठहरेगा – मशीन के साथ या उसके बिना।&lt;/p&gt;
&lt;h2 id="दतरफ-फद"&gt;दोतरफ़ा फंदा&lt;/h2&gt;
&lt;p&gt;संपादक कहते हैं कि उन्होंने हमारे बारे में सोचा है: नीति मानती है कि ग़ैर-मातृभाषी लेखकों को अपनी अंग्रेज़ी एआई से जँचवाने का फ़ायदा मिलता है, यहाँ तक कि उसकी “अनुवाद, लेखन और संपादन सेवाओं” का भी। लेकिन लेखन में एआई की भागीदारी “अधिक से अधिक संपादन और प्रूफ़-रीडिंग की सहायता तक” सीमित रहनी चाहिए, और “एआई-लिखित पाठ के बड़े-बड़े टुकड़ों” से पहले रुक जानी चाहिए। मशीन से अनूदित लेख पहले शब्द से आख़िरी शब्द तक एआई-लिखित है; वह ऐसे टुकड़ों के सिवा कुछ है ही नहीं। तो यह रियायत तभी टिकती है, जब अनुवाद करना लिखना न हो। यह रेखा कहाँ से गुज़रती है? वे हमें पहले ही बता चुके हैं: “कोई स्पष्ट रेखाएँ नहीं”।&lt;/p&gt;
&lt;p&gt;बात इससे भी बदतर है, क्योंकि यह संदेह सिर्फ़ अखंडनीय नहीं है। इसका पलड़ा पहले से झुका हुआ है। 2023 में स्टैनफ़ोर्ड की एक टीम ने इंसानों के लिखे निबंधों पर सात प्रचलित एआई-डिटेक्टर आज़माए: डिटेक्टरों ने ग़ैर-मातृभाषियों के TOEFL निबंधों में से औसतन 61% को मशीन-निर्मित ठहराया, जबकि मातृभाषियों के निबंधों को लगभग पूरी सटीकता से पहचाना; एक डिटेक्टर ने तो TOEFL सेट के 97.8% पर झंडी लगा दी (
)। वजह शिक्षाप्रद है। डिटेक्टर पूर्वानुमेयता नापते हैं, और दूसरी भाषा के रूप में सीखी गई अंग्रेज़ी – जिसे औसत की ओर ढाला गया है – बनावट से ही पूर्वानुमेय है: सबसे संभावित शब्द, सबसे संभावित क्रम में। उसी अध्ययन ने यह संकेत असली शोध में भी पाया: ग़ैर-मातृभाषी प्रथम लेखकों के सम्मेलन-पत्रों में भाषाई विविधता कम थी। जो शैलीगत लक्षण “एआई” जैसे पढ़े जाते हैं, वे दक्ष द्वितीय-भाषा अंग्रेज़ी के लक्षण हैं, और इंसान का विवेक-आधारित फ़ैसला उन्हीं लक्षणों को मशीन की तरह पढ़ता है। फंदा दोनों तरफ़ से कस गया: अपनी अंग्रेज़ी लिखूँ तो मशीन जैसा दिखूँ; मशीन इस्तेमाल करूँ तो उनका नियम टूटे।&lt;/p&gt;
&lt;h2 id="भष-क-कर"&gt;भाषा का कर&lt;/h2&gt;
&lt;p&gt;यह विरोधाभास बेज़रर होता, अगर उसके साथ धमकियाँ न जुड़ी होतीं। लेकिन धमकियाँ एक और गहरी, और पुरानी समस्या उघाड़ती हैं, जिसका नाम नीति कभी नहीं लेती: एकभाषिकता।
“यथासंभव व्यापक अंतरराष्ट्रीय दायरे” की माँग करते हैं, और उसी पन्ने पर लिखते हैं: “पत्रिका की भाषा अंग्रेज़ी है।”&lt;/p&gt;
&lt;p&gt;इस व्यवस्था की क़ीमत काल्पनिक नहीं है। 908 पर्यावरण-वैज्ञानिकों के सर्वेक्षण में अमानो और उनके सहयोगियों ने पाया कि जिनकी मातृभाषा अंग्रेज़ी नहीं, वे एक लेख लिखने में 51% तक ज़्यादा समय लगाते हैं, उनके लेख 2.5 गुना ज़्यादा बार अस्वीकृत होते हैं और 12.5 गुना ज़्यादा बार संशोधन के लिए लौटाए जाते हैं – सिर्फ़ भाषा के आधार पर (
)। यह कर किसी एआई-नीति के आने से पहले ही वसूला जा रहा है; घोषणा-पत्र और उसकी धमकियाँ उसके ऊपर लदा एक ऑडिट भर हैं।&lt;/p&gt;
&lt;h2 id="fin-dempire"&gt;Fin d’empire&lt;/h2&gt;
&lt;p&gt;एकभाषिकता वह स्वयंसिद्ध है जिस पर कोई चर्चा नहीं करता। यह एक साम्राज्यवादी विरासत है, जिसे समय के साथ एक व्यावहारिक औचित्य मिल गया: अनुवाद धीमा और महँगा था, और कोई संपादक-मंडल उस चीज़ को नहीं परख सकता था जिसे वह पढ़ न सके। लेकिन मशीनी अनुवाद की प्रगति के आगे इनमें से कुछ भी नहीं टिकता। अत्याधुनिक मशीनी अनुवाद को लेखकों और संपादकों के बीच एक भरोसेमंद परत के रूप में इस्तेमाल किया जा सकता है।&lt;/p&gt;
&lt;p&gt;आदर्श रास्ता इंसानी है: शोधकर्ताओं को एक से ज़्यादा भाषाएँ पढ़नी चाहिए। इसके बजाय अंग्रेज़ीभाषी विश्वविद्यालय आधुनिक भाषाओं के विभाग बंद करना पसंद करते हैं। ग़ौर कीजिए कि ये बंदियाँ एंग्लो-अमेरिकी परिघटना हैं: बाक़ी दुनिया के शोधकर्ताओं को एकभाषिकता का ऐशो-आराम कभी मिला ही नहीं। और समय पर भी ग़ौर कीजिए। भाषा-विभाग बंद करना एक दाँव लगाना है – कि अंग्रेज़ी हमेशा के लिए जीत चुकी है और पढ़ने लायक़ कोई चीज़ अब किसी और भाषा में कभी नहीं लिखी जाएगी। यह दाँव ठीक ग़लत वक़्त पर लगाया जा रहा है, और दोहरे ढंग से। पहला, क्योंकि मशीनी अनुवाद पहली बार यह संभव बना रहा है कि किसी साझा भाषा (lingua franca) के बिना ही काम चल जाए; दूसरा, क्योंकि जिस विश्व-व्यवस्था ने अंग्रेज़ी को डिफ़ॉल्ट बनाया, वह पीछे हट रही है: अंग्रेज़ी-जगत अंतर्मुखी हो रहा है, वैश्वीकरण का ज्वार उतर रहा है, मुक्त व्यापार अपने ही घर में विवादित है, और एक बहुध्रुवीय दुनिया आकार ले रही है, जिसमें पढ़ने लायक़ भाषाएँ बढ़ती जाएँगी। विश्वविद्यालय ऐसे शोधकर्ता तैयार कर रहे हैं जो सिर्फ़ अंग्रेज़ी पढ़ते हैं – एक ऐसी दुनिया के लिए, जहाँ अंग्रेज़ी काफ़ी नहीं होगी। इस नुक़सान की विरासत सबसे पहले संपादक-मंडलों को मिलेगी।&lt;/p&gt;
&lt;h2 id="सपदक-क-लए-एक-परकष"&gt;संपादकों के लिए एक परीक्षा&lt;/h2&gt;
&lt;p&gt;जब कोई संपादक-मंडल शिकायत करे कि उसे अपने लेखकों की अपनी आवाज़ नहीं सुनाई देती, तो शायद समस्या का एक हिस्सा ख़ुद मंडल में है।&lt;/p&gt;
&lt;p&gt;यह गंभीर आरोप है, और इसके साथ एक गंभीर परीक्षा भी है। क्या &lt;em&gt;Progress in Human Geography&lt;/em&gt; फ़्रांसीसी, इतालवी या जापानी में लिखे और मशीन-अनूदित अंग्रेज़ी संस्करण के साथ भेजे गए लेख की समीक्षा करवाएगा? पत्रिका के अपने दिशानिर्देश उन “अनुवाद” सेवाओं को मान्यता देते हैं, जो इसे संभव बनाती हैं। “हाँ” से समस्या ख़त्म हो जाती है। “नहीं” हमें बता देगा कि यह नीति असल में किस चीज़ की हिफ़ाज़त करती है।&lt;/p&gt;
&lt;p&gt;दोनों ही सूरतों में, चुनाव संपादकों का है। अगर आवाज़ मायने रखती है, जैसा वे दावा करते हैं, तो पत्रिका को लेख उन भाषाओं में लेने चाहिए जिनमें लेखक सोचते हैं। अगर नहीं रखती, तो घोषणा-पत्र जाना चाहिए, और उसके साथ धमकियाँ भी।&lt;/p&gt;</description></item><item><title>tei-mcp v0.3: स्रोत को दोबारा लिखे बिना TEI एनकोडिंग</title><link>https://clementgodbarge.com/hi/post/tei-mcp-span-locked/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/tei-mcp-span-locked/</guid><description>&lt;p&gt;जब मैंने
, तो मक़सद था एआई
असिस्टेंटों को TEI मार्कअप गढ़ने से रोकना। स्कीमा-आधार ने समस्या का एक हिस्सा
सुलझा दिया: P5 विनिर्देश तक सीधी, उपकरण-आधारित पहुँच मिल जाने पर मॉडल को अब यह
अनुमान नहीं लगाना पड़ता कि किसी एलिमेंट का मतलब क्या है या वह कौन-से एट्रिब्यूट
स्वीकार करता है। आउटपुट वैध निकलता है।&lt;/p&gt;
&lt;p&gt;लेकिन TEI एनकोडिंग में मतिभ्रम के दो चेहरे हैं, और स्कीमा उनमें से सिर्फ़ एक को
पकड़ती है। विनिर्देश पर परखने से इतना पता चलता है कि &lt;em&gt;मार्कअप&lt;/em&gt; सही बना है। उस
&lt;em&gt;पाठ&lt;/em&gt; के बारे में यह कुछ नहीं कहती, जिसे वह मार्कअप लपेटे हुए है। और यहीं – पाठ में
ही – ज़्यादा घातक मतिभ्रम बसते हैं। v0.3 की प्रमुख सुविधा, स्पैन-लॉक्ड कंपोज़िशन,
ख़ास तौर पर इन्हीं को रोकने के लिए बनाई गई है।&lt;/p&gt;
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;सामग्री तालिका&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#वह-मतभरम-जस-सकम-नह-पकड-सकत"&gt;वह मतिभ्रम जिसे स्कीमा नहीं पकड़ सकती&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#सपन-लकड-कपजशन"&gt;स्पैन-लॉक्ड कंपोज़िशन&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#यह-कय-ह-और-कय-नह"&gt;यह क्या है, और क्या नहीं&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tei-स-आग-यह-कय-मयन-रखत-ह"&gt;TEI से आगे यह क्यों मायने रखता है&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#अपडट-कस-पए"&gt;अपडेट कैसे पाएँ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id="वह-मतभरम-जस-सकम-नह-पकड-सकत"&gt;वह मतिभ्रम जिसे स्कीमा नहीं पकड़ सकती&lt;/h2&gt;
&lt;p&gt;किसी मॉडल से सोलहवीं सदी का एक फ़्रांसीसी पत्र एनकोड करने को कहिए, और अक्सर आपको
एक ऐसा TEI दस्तावेज़ मिलेगा जो देखने में बेदाग़ लगेगा। हेडर भरा हुआ है, &lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt;
टैग सही जगह पर हैं, &lt;code&gt;&amp;lt;dateline&amp;gt;&lt;/code&gt; ठीक बना है। उसे &lt;code&gt;validate_document&lt;/code&gt; से गुज़ारिए,
और वह पास हो जाता है।&lt;/p&gt;
&lt;p&gt;फिर उसके मूल पाठ का स्रोत से मिलान कीजिए।&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mesme&lt;/code&gt; बनकर &lt;code&gt;même&lt;/code&gt; हो गया है। एक अल्पविराम अपनी जगह से खिसक गया है। &lt;code&gt;luy&lt;/code&gt; चुपचाप
आधुनिक होकर &lt;code&gt;lui&lt;/code&gt; बन गया है। पांडुलिपि में जो वाक्यांश पढ़ने में कठिन था, उसे
“सुधारकर” कुछ ज़्यादा साफ़-सुथरा बना दिया गया है। इनमें से कोई बदलाव माँगा नहीं
गया था। कोई चिह्नित नहीं है। दस्तावेज़ स्कीमा के हिसाब से वैध है, और चुपचाप ग़लत।&lt;/p&gt;
&lt;p&gt;अभिलेखीय वर्कफ़्लो में – जहाँ एनकोड किया गया पाठ वह स्थायी अभिलेख बन जाता है
जिस पर आगे के पाठक, खोज-अनुक्रमणिकाएँ और उद्धरण टिके होते हैं – यही वह विफलता है जो
सबसे ज़्यादा मायने रखती है। एक बिगड़ा हुआ टैग खीज पैदा करता है। एक आधुनिक की गई
वर्तनी, जिस पर पाँच साल तक किसी की नज़र न पड़े, पाठ का भ्रष्ट हो जाना है।&lt;/p&gt;
&lt;h2 id="सपन-लकड-कपजशन"&gt;स्पैन-लॉक्ड कंपोज़िशन&lt;/h2&gt;
&lt;p&gt;नया रिलीज़ (v0.3) मतिभ्रम रोकने की एक ऐसी व्यवस्था लेकर आया है, जिसका निशाना ठीक
यही विफलता है। डिज़ाइन का लक्ष्य: मूल पाठ के मतिभ्रम को केवल असंभाव्य नहीं, बल्कि
बनावट से ही असंभव बना देना।&lt;/p&gt;
&lt;p&gt;विचार सीधा-सा है: &lt;strong&gt;मॉडल मूल पाठ कभी टाइप नहीं करता&lt;/strong&gt;।&lt;/p&gt;
&lt;p&gt;इसके बजाय वर्कफ़्लो यों चलता है:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;मॉडल &lt;code&gt;get_source(&amp;quot;letter_001&amp;quot;)&lt;/code&gt; बुलाता है और उसे स्रोत का सादा पाठ एक
अपरिवर्तनीय स्ट्रिंग के रूप में मिलता है।&lt;/li&gt;
&lt;li&gt;जो भी टैग वह लगाना चाहता है, उसके लिए वह
&lt;code&gt;tag_span(&amp;quot;letter_001&amp;quot;, start, end, element_path, attrs)&lt;/code&gt; बुलाता है – यानी स्रोत
की एक वर्ण-सीमा पर एक TEI एलिमेंट दर्ज करता है।&lt;/li&gt;
&lt;li&gt;काम पूरा होने पर वह &lt;code&gt;compose(&amp;quot;letter_001&amp;quot;)&lt;/code&gt; बुलाता है। सर्वर दर्ज किए गए टैगों को
मूल सादे पाठ में पिरोता है, अंतिम TEI तैयार करता है, और फिर &lt;em&gt;बाइट-दर-बाइट&lt;/em&gt;
जाँचता है कि तैयार दस्तावेज़ का सपाट पाठ स्रोत के बराबर है या नहीं।&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;बाइट मिल गए, तो दस्तावेज़ लौट आता है। नहीं मिले – अगर मॉडल के टैगों से किसी तरह
ऐसा मूल पाठ निकलता है जो स्रोत से एक भी वर्ण में भिन्न हो – तो &lt;code&gt;compose()&lt;/code&gt; भ्रष्ट
दस्तावेज़ लौटाने के बजाय त्रुटि उठा देता है।&lt;/p&gt;
&lt;p&gt;इस वर्कफ़्लो में कोई ऐसा रास्ता नहीं जिससे मॉडल एक ऐसा TEI दस्तावेज़ बना सके जिसका
मूल पाठ स्रोत से भिन्न हो। यह अपरिवर्तनीय शर्त यांत्रिक है, व्यवहार पर टिकी नहीं।
आपको यह भरोसा नहीं करना कि मॉडल मतिभ्रम नहीं करेगा; आपको बस दो बाइट-स्ट्रिंगों के
बीच एक &lt;code&gt;==&lt;/code&gt; जाँच पर भरोसा करना है।&lt;/p&gt;
&lt;h2 id="यह-कय-ह-और-कय-नह"&gt;यह क्या है, और क्या नहीं&lt;/h2&gt;
&lt;p&gt;स्पैन-लॉक्ड कंपोज़िशन स्कीमा-आधार की &lt;strong&gt;पूरक&lt;/strong&gt; है, उसका विकल्प नहीं। स्कीमा-आधार के
उपकरण (&lt;code&gt;validate_document&lt;/code&gt;, &lt;code&gt;lookup_element&lt;/code&gt;, &lt;code&gt;valid_children&lt;/code&gt; और मूल सोलह में से
बाक़ी) मॉडल को &lt;em&gt;वैध&lt;/em&gt; TEI बनाने में मदद करते हैं। स्पैन-लॉक्ड कंपोज़िशन इसकी गारंटी
देती है कि उस TEI के भीतर का मूल पाठ स्रोत के प्रति &lt;em&gt;वफ़ादार&lt;/em&gt; है। काम में लाने लायक़
एनकोडिंग वर्कफ़्लो को दोनों कसौटियों पर खरा उतरना होता है, और अब दोनों एक ही सर्वर
से सधती हैं।&lt;/p&gt;
&lt;p&gt;यह हर मर्ज़ की दवा भी नहीं है। &lt;code&gt;compose()&lt;/code&gt; अभी यह नहीं जाँचता कि दर्ज किए गए टैग
किसी लोड किए गए ODD अनुकूलन के अनुसार स्वीकार्य हैं या नहीं – यह अगला क़दम है।
दर्ज किए गए टैग प्रोसेस की मेमोरी में रहते हैं और रीस्टार्ट के बाद नहीं बचते। और
स्रोत फ़ाइलें वहाँ से पढ़ने योग्य होनी चाहिए जहाँ सर्वर चल रहा है। ये सब सुलझाए
जा सकते हैं; इनमें से कोई भी मूल अपरिवर्तनीय शर्त को कमज़ोर नहीं करता।&lt;/p&gt;
&lt;h2 id="tei-स-आग-यह-कय-मयन-रखत-ह"&gt;TEI से आगे यह क्यों मायने रखता है&lt;/h2&gt;
&lt;p&gt;यह पैटर्न सामान्यीकृत होता है। जब भी किसी मॉडल से किसी पाठ पर टिप्पणी करने, उसे
रूपांतरित करने या लपेटने को कहा जाए – और जब भी मूल पाठ की अखंडता मॉडल की
“सुधारने” की क्षमता से ज़्यादा मायने रखे – तो इसी आकार का समाधान लागू होता है।
मॉडल से पाठ दोबारा टाइप करने को मत कहिए। उससे पाठ पर निर्देश बनवाइए, और एक
नियतात्मक कंपोज़र को समानता की अपरिवर्तनीय शर्त के तहत उन्हें लागू करने दीजिए।&lt;/p&gt;
&lt;p&gt;ख़ास तौर पर डिजिटल संस्करणों के लिए इससे यह बदल जाता है कि आप ज़िम्मेदारी के साथ
किसी मॉडल से क्या करवा सकते हैं। एनकोडिंग अचानक ऐसा काम बन जाती है जिसे आप हर
आउटपुट का स्रोत से हाथ से मिलान किए बिना सौंप सकते हैं। मशीन उबाऊ रास्ता चलती है;
संपादक मार्कअप की समीक्षा करता है, वर्तनी की नहीं।&lt;/p&gt;
&lt;h2 id="अपडट-कस-पए"&gt;अपडेट कैसे पाएँ&lt;/h2&gt;
&lt;p&gt;अगर tei-mcp पहले से इंस्टॉल है:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx tei-mcp@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;या नए सिरे से:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;स्पैन-लॉक्ड कंपोज़िशन इस्तेमाल करने के लिए सर्वर को स्रोत की सादा-पाठ फ़ाइलों की
किसी डायरेक्टरी की ओर मोड़िए:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;TEI_MCP_SPAN_SOURCE_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/path/to/sources
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;हर फ़ाइल का मूल नाम उसका दस्तावेज़ ID बन जाता है (&lt;code&gt;letter_001.txt&lt;/code&gt; →
&lt;code&gt;letter_001&lt;/code&gt;)।&lt;/p&gt;
&lt;p&gt;स्रोत कोड, पूरा दस्तावेज़ीकरण और अपरिवर्तनीय शर्त के डिज़ाइन-नोट:
&lt;/p&gt;</description></item><item><title>एक अलग ढंग का डिजिटल संस्करण</title><link>https://clementgodbarge.com/hi/post/cavriana-edition/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/cavriana-edition/</guid><description>&lt;p&gt;ज़्यादातर प्राथमिक स्रोत कभी प्रकाशित नहीं होते। इसका इलाज जिस मॉडल से करने की हम कोशिश करते हैं – अनुदान पर टिके डिजिटल संस्करण – वह इतना महँगा, इतना केंद्रीकृत और इतना नाज़ुक है कि बड़े पैमाने पर चल ही नहीं सकता। मैंने अभी-अभी
प्रकाशित की है, जिसमें बताया है कि मैं कावरियाना के पत्रों का आलोचनात्मक संस्करण अलग ढंग से क्यों बना रहा हूँ: डिजिटल रूप में प्राथमिक स्रोत, जो अपने-आप, धीरे-धीरे बढ़ते हैं – न्यूनतम इन्फ़्रास्ट्रक्चर के साथ, स्वचालित रखरखाव के साथ, सहयोग के लिए खुले, और इतने सस्ते कि अनुदान की ज़रूरत ही न पड़े। यह दरअसल एक ऐसी डिजिटल मानविकी के पक्ष में दलील है, जो संस्थागत सहारे के होने-न-होने की परवाह किए बिना चलती रहे।&lt;/p&gt;</description></item><item><title>tei-mcp</title><link>https://clementgodbarge.com/hi/code/tei-mcp/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/code/tei-mcp/</guid><description>&lt;h2 id="tei-mcp-एआई-एजट-क-लए-tei-p5"&gt;tei-mcp: एआई एजेंटों के लिए TEI P5&lt;/h2&gt;
&lt;p&gt;tei-mcp एक ओपन-सोर्स
सर्वर है, जो एआई कोडिंग असिस्टेंटों को
विनिर्देश तक सीधी पहुँच देता है। प्रशिक्षण-डेटा की धुँधली याद के भरोसे रहने के बजाय – जिससे अक्सर देखने में ठीक-ठाक पर ग़लत मार्कअप निकलता है – एआई विनिर्देश से सीधे, उसी वक़्त पूछ सकता है।&lt;/p&gt;
&lt;h2 id="वशषतए"&gt;विशेषताएँ&lt;/h2&gt;
&lt;p&gt;सर्वर TEI P5 के ODD को पार्स करता है और 16 उपकरण उपलब्ध कराता है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;किसी भी एलिमेंट, क्लास, मैक्रो या मॉड्यूल की &lt;strong&gt;खोज&lt;/strong&gt; नाम से – बड़े-छोटे अक्षर का भेद किए बिना, और टाइपिंग की ग़लती पर सुझाव के साथ&lt;/li&gt;
&lt;li&gt;पूरी TEI क्लास-श्रेणी में &lt;strong&gt;एट्रिब्यूट का निर्धारण&lt;/strong&gt; (स्थानीय + विरासत में मिले)&lt;/li&gt;
&lt;li&gt;क्लास और मैक्रो को खोलते हुए &lt;strong&gt;कंटेंट मॉडल का विस्तार&lt;/strong&gt; संरचित वृक्ष के रूप में&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;नेस्टिंग की जाँच&lt;/strong&gt; – सीधा अभिभावक-संतान संबंध या पथ के साथ पुनरावर्ती पहुँच&lt;/li&gt;
&lt;li&gt;TEI P5 के विरुद्ध &lt;strong&gt;दस्तावेज़ की वैधता-जाँच&lt;/strong&gt;: कंटेंट मॉडल, एट्रिब्यूट, बंद मान-सूचियाँ, संदर्भों की अखंडता और अप्रचलन की चेतावनियाँ&lt;/li&gt;
&lt;li&gt;क्रमिक संपादन के लिए &lt;strong&gt;एकल एलिमेंट की वैधता-जाँच&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;स्कीमा को किसी परियोजना-विशेष उपसमुच्चय तक सीमित करने के लिए &lt;strong&gt;ODD अनुकूलन लोड करना&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;रेगुलर एक्सप्रेशन से सभी प्रकार की इकाइयों में &lt;strong&gt;खोज&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="इसटलशन"&gt;इंस्टॉलेशन&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;या सीधे चलाइए:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="उपयग"&gt;उपयोग&lt;/h2&gt;
&lt;p&gt;किसी भी MCP-संगत क्लाइंट (Claude, Cursor, Windsurf आदि) में जोड़िए:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tei&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;uvx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tei-mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;स्रोत कोड और दस्तावेज़ीकरण
पर उपलब्ध हैं।&lt;/p&gt;</description></item><item><title>tei-mcp: एआई एजेंटों के लिए TEI P5</title><link>https://clementgodbarge.com/hi/post/tei-mcp/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/tei-mcp/</guid><description>&lt;p&gt;अगर आपने कभी किसी एआई कोडिंग असिस्टेंट से TEI XML लिखवाया है, तो ग़ौर किया होगा कि वह
गड़बड़ कर बैठता है। एलिमेंट वहाँ आ जाते हैं जहाँ उन्हें नहीं होना चाहिए। एट्रिब्यूट
गढ़ लिए जाते हैं। नेस्टिंग के नियम अनदेखे रह जाते हैं। मॉडल को मोटा-मोटी अंदाज़ा है
कि TEI कैसी दिखती है, पर विनिर्देश का कोई भरोसेमंद ज्ञान नहीं।&lt;/p&gt;
&lt;p&gt;tei-mcp इसका हल है: यह एआई एजेंटों को TEI P5 दिशानिर्देशों तक सीधी, उपकरण-आधारित
पहुँच देता है।&lt;/p&gt;
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;सामग्री तालिका&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#mcp-कय-ह"&gt;MCP क्या है?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tei-mcp-कय-करत-ह"&gt;tei-mcp क्या करता है&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#यह-कय-मयन-रखत-ह"&gt;यह क्यों मायने रखता है&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#शरआत-कस-कर"&gt;शुरुआत कैसे करें&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id="mcp-कय-ह"&gt;MCP क्या है?&lt;/h2&gt;
&lt;p&gt;
(MCP) एक खुला मानक है, जो
एआई ऐप्लिकेशनों को बाहरी डेटा-स्रोतों और उपकरणों से जोड़ने देता है। इसे एआई का USB
पोर्ट समझिए: एक ही प्रोटोकॉल, जिससे कोई भी संगत क्लाइंट – Claude, Cursor, Windsurf
और अन्य – विशेष सेवाओं में प्लग हो सकता है।&lt;/p&gt;
&lt;p&gt;एक MCP सर्वर ऐसे &lt;em&gt;उपकरण&lt;/em&gt; उपलब्ध कराता है, जिन्हें एआई बातचीत के दौरान बुला सकता है।
रटे हुए प्रशिक्षण-डेटा के भरोसे रहने के बजाय मॉडल किसी जीवंत, प्रामाणिक स्रोत से
पूछ सकता है।&lt;/p&gt;
&lt;h2 id="tei-mcp-कय-करत-ह"&gt;tei-mcp क्या करता है&lt;/h2&gt;
&lt;p&gt;tei-mcp TEI P5 के ODD विनिर्देश को पार्स करता है और 16 उपकरण उपलब्ध कराता है, जो
किसी संपादक या एनकोडर के सबसे आम सवालों का जवाब देते हैं:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;यह एलिमेंट क्या है?&lt;/strong&gt; किसी भी एलिमेंट, क्लास, मैक्रो या मॉड्यूल को नाम से
खोजिए – बड़े-छोटे अक्षर का भेद किए बिना, और टाइपिंग की ग़लती पर सुझाव के साथ।&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;यह कौन-से एट्रिब्यूट लेता है?&lt;/strong&gt; पूरी क्लास-श्रेणी में एट्रिब्यूट का निर्धारण –
पहले स्थानीय, फिर क्रम से विरासत में मिले।&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;इसके भीतर क्या आ सकता है?&lt;/strong&gt; कंटेंट मॉडल को संरचित वृक्ष के रूप में खोलिए,
या वैध संतानों की सपाट सूची पाइए।&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;क्या यह एलिमेंट यहाँ आ सकता है?&lt;/strong&gt; अभिभावक-संतान नेस्टिंग की जाँच कीजिए, या
पूरी एलिमेंट-श्रेणी में पहुँच का पता लगाइए।&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;क्या मेरा दस्तावेज़ वैध है?&lt;/strong&gt; किसी TEI XML फ़ाइल को विनिर्देश पर परखिए: कंटेंट
मॉडल, एट्रिब्यूट के मान, बंद मान-सूचियाँ, संदर्भों की अखंडता और अप्रचलन की
चेतावनियाँ।&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;और मेरी परियोजना की स्कीमा?&lt;/strong&gt; ODD अनुकूलन फ़ाइल लोड कीजिए, ताकि ऊपर का सब कुछ
आपकी परियोजना के TEI उपसमुच्चय तक सीमित रहे।&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="यह-कय-मयन-रखत-ह"&gt;यह क्यों मायने रखता है&lt;/h2&gt;
&lt;p&gt;TEI एनकोडिंग में दिशानिर्देशों को बार-बार देखना पड़ता है। अनुभवी एनकोडर सबसे आम
पैटर्न आत्मसात कर लेते हैं, लेकिन कम परिचित एलिमेंटों या जटिल कंटेंट मॉडलों के लिए
उन्हें भी विनिर्देश खोलना पड़ता है। एआई असिस्टेंटों के पास ऐसा कोई आत्मसात ज्ञान
नहीं होता, इसलिए उनकी समस्या और गंभीर है: वे देखने में ठीक-ठाक पर ग़लत मार्कअप
गढ़ लेते हैं।&lt;/p&gt;
&lt;p&gt;tei-mcp के साथ एआई को अनुमान लगाने की ज़रूरत नहीं। पहला कोण-कोष्ठक लिखने से पहले
वह विनिर्देश में जवाब देख सकता है। नतीजा: ऐसा मार्कअप जो TEI P5 के – या आपकी
परियोजना के ODD अनुकूलन के – अनुरूप हो।&lt;/p&gt;
&lt;h2 id="शरआत-कस-कर"&gt;शुरुआत कैसे करें&lt;/h2&gt;
&lt;p&gt;PyPI से इंस्टॉल कीजिए:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;फिर इसे अपने MCP क्लाइंट की कॉन्फ़िगरेशन में जोड़िए:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tei&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;uvx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tei-mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;सर्वर पहली बार चलने पर TEI विनिर्देश डाउनलोड करता है और किसी भी MCP-संगत क्लाइंट
के साथ काम करता है।&lt;/p&gt;
&lt;p&gt;स्रोत कोड और पूरा दस्तावेज़ीकरण:
&lt;/p&gt;</description></item><item><title>Multi-Saxon</title><link>https://clementgodbarge.com/hi/code/multi-saxon/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/code/multi-saxon/</guid><description>&lt;h2 id="multi-saxon-बड-tei-करपस-क-लए-समनतर-xslt-परससग"&gt;Multi-Saxon: बड़े TEI कॉर्पस के लिए समानांतर XSLT प्रोसेसिंग&lt;/h2&gt;
&lt;p&gt;XML प्रोसेसिंग के औज़ारों में एक बड़ी कमी रही है: LXML (Python की लोकप्रिय XML लाइब्रेरी) XSLT 2.0 और 3.0 के रूपांतरण नहीं सँभाल पाती। Multi-Saxon इसी कमी को पूरा करता है और ऐसे रूपांतरणों को समानांतर चलाने की सुविधा देता है। यह ख़ास तौर पर XML TEI दस्तावेज़ों के बड़े संग्रहों के लिए बनाया गया है, और समानांतर निष्पादन से प्रोसेसिंग का समय काफ़ी घटा देता है।&lt;/p&gt;
&lt;h2 id="मखय-वशषतए"&gt;मुख्य विशेषताएँ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;उन्नत XSLT समर्थन&lt;/strong&gt;: LXML की सीमा से आगे जाकर XSLT 2.0 और 3.0 के रूपांतरण&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;समानांतर प्रोसेसिंग&lt;/strong&gt;: बड़े दस्तावेज़-संग्रहों के रूपांतरण का समय समानांतरीकरण से नाटकीय रूप से कम&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TEI के लिए अनुकूलित&lt;/strong&gt;: विशेष रूप से Text Encoding Initiative (TEI) के XML दस्तावेज़ों के लिए बनाया गया&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;बढ़ते आकार पर भी प्रदर्शन&lt;/strong&gt;: सैकड़ों से हज़ारों दस्तावेज़ों तक के कॉर्पस को कुशलता से सँभालता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;क्रॉस-प्लेटफ़ॉर्म&lt;/strong&gt;: अलग-अलग ऑपरेटिंग सिस्टम और परिवेशों में चलता है&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="multi-saxon-कस-समसय-क-हल-ह"&gt;Multi-Saxon किस समस्या का हल है&lt;/h2&gt;
&lt;p&gt;TEI के साथ काम करने वाले डिजिटल मानविकी के शोधकर्ता अक्सर दो बड़ी अड़चनों से जूझते हैं:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LXML (Python की आम XML प्रोसेसिंग लाइब्रेरी) केवल XSLT 1.0 का समर्थन करती है, जिससे XSLT 2.0/3.0 की उन्नत सुविधाओं का इस्तेमाल असंभव हो जाता है&lt;/li&gt;
&lt;li&gt;TEI दस्तावेज़ों का बड़ा कॉर्पस एक-एक करके प्रोसेस करने में इतना समय लग सकता है कि काम ही अव्यावहारिक हो जाए&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Multi-Saxon दोनों समस्याओं को हल करता है: यह Saxon की उन्नत XSLT क्षमताओं का लाभ उठाता है और प्रोसेसिंग को कई कोर पर बाँटकर प्रदर्शन में बड़ी बढ़त देता है।&lt;/p&gt;
&lt;h2 id="करयनवयन"&gt;कार्यान्वयन&lt;/h2&gt;
&lt;p&gt;Multi-Saxon Python को Java के Saxon प्रोसेसर से जोड़कर एक तेज़ रूपांतरण-पाइपलाइन बनाता है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;मज़बूत XSLT 2.0/3.0 प्रोसेसिंग के लिए Java की Saxon लाइब्रेरी का उपयोग&lt;/li&gt;
&lt;li&gt;उपलब्ध CPU कोर पर रूपांतरण बाँटने के लिए मल्टीप्रोसेसिंग&lt;/li&gt;
&lt;li&gt;अधिकतम थ्रूपुट के लिए प्रोसेसर-पूल का कुशल प्रबंधन&lt;/li&gt;
&lt;li&gt;TEI दस्तावेज़ों की बैच-प्रोसेसिंग के लिए सीधा-सादा इंटरफ़ेस&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="उपयग-क-उदहरण"&gt;उपयोग का उदाहरण&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;multi_saxon&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with your XSLT stylesheet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transform.xsl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform a single document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform an entire directory in parallel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform_directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="डजटल-मनवक-क-लए-महतव"&gt;डिजिटल मानविकी के लिए महत्व&lt;/h2&gt;
&lt;p&gt;TEI दस्तावेज़ों के बड़े संग्रहों से जूझ रही डिजिटल मानविकी परियोजनाओं के लिए Multi-Saxon संभव बनाता है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;पूरे कॉर्पस पर ऐसे जटिल रूपांतरण, जो LXML से असंभव होते&lt;/li&gt;
&lt;li&gt;प्रोसेसिंग समय में नाटकीय कमी (मल्टी-कोर सिस्टम पर अक्सर 5–10 गुना)&lt;/li&gt;
&lt;li&gt;XSLT 2.0/3.0 की उन्नत सुविधाओं से और परिष्कृत विश्लेषण&lt;/li&gt;
&lt;li&gt;पूरे दस्तावेज़-संग्रह को प्रोसेस करने का सरल वर्कफ़्लो&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;स्रोत कोड और दस्तावेज़ीकरण
पर उपलब्ध हैं।&lt;/p&gt;</description></item><item><title>persNamer</title><link>https://clementgodbarge.com/hi/code/persnamer/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/code/persnamer/</guid><description>&lt;h2 id="persnamer-tei-क-virtual-international-authority-file-स-जडन"&gt;persNamer: TEI को Virtual International Authority File से जोड़ना&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;persNamer एक विशेष Python उपकरण है, जो VIAF (Virtual International Authority File) के प्रामाणिक व्यक्ति-डेटा को TEI XML दस्तावेज़ों में जोड़ने का काम सरल बनाता है। VIAF पहचानकर्ता को तैयार TEI मार्कअप में बदलकर persNamer डिजिटल विद्वत्तापूर्ण संस्करणों के लिए संरचित व्यक्ति-प्रविष्टियाँ बनाने की हाथ की मेहनत काफ़ी घटा देता है।&lt;/p&gt;
&lt;h2 id="tei-म-परमणक-नम-सच-क-चनत"&gt;TEI में प्रामाणिक नाम-सूची की चुनौती&lt;/h2&gt;
&lt;p&gt;डिजिटल विद्वत्तापूर्ण संस्करणों में ऐतिहासिक व्यक्तियों की सटीक पहचान ज़रूरी होती है – मानकीकृत नाम और जन्म-मृत्यु की तिथियों समेत। पूरी परियोजना में प्रामाणिक नाम-सूची को एकरूप रखने के लिए चाहिए:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ऐतिहासिक पाठों में व्यक्तियों की पहचान&lt;/li&gt;
&lt;li&gt;उनके बारे में प्रामाणिक डेटा की खोज&lt;/li&gt;
&lt;li&gt;सही ढंग से गढ़ी गई TEI प्रविष्टियाँ&lt;/li&gt;
&lt;li&gt;पूरी परियोजना में एक जैसे संदर्भ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ये सारे चरण आम तौर पर हाथ से किए जाते हैं, समय खाते हैं और असंगति की गुंजाइश छोड़ते हैं।&lt;/p&gt;
&lt;h2 id="persnamer-कस-कम-करत-ह"&gt;persNamer कैसे काम करता है&lt;/h2&gt;
&lt;p&gt;persNamer इस वर्कफ़्लो को स्वचालित करता है:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;VIAF डेटा लाना&lt;/strong&gt;: VIAF पहचानकर्ता मिलने पर उपकरण HTTP कंटेंट नेगोशिएशन के ज़रिये RDF डेटा प्राप्त करता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;मुख्य जानकारी निकालना&lt;/strong&gt;: RDF को पार्स करके पसंदीदा नाम, जन्म-तिथि और मृत्यु-तिथि निकालता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TEI मार्कअप बनाना&lt;/strong&gt;: दो ज़रूरी XML खंड तैयार करता है:
&lt;ul&gt;
&lt;li&gt;एक &lt;strong&gt;प्रामाणिक नाम-सूची की प्रविष्टि&lt;/strong&gt; (&lt;code&gt;&amp;lt;person&amp;gt;&lt;/code&gt; एलिमेंट, जिसमें स्वतः बना &lt;code&gt;xml:id&lt;/code&gt;, &lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;birth&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;death&amp;gt;&lt;/code&gt; और &lt;code&gt;&amp;lt;idno type=&amp;quot;VIAF&amp;quot;&amp;gt;&lt;/code&gt; होते हैं)&lt;/li&gt;
&lt;li&gt;एक अलग &lt;strong&gt;टिप्पणी-टैग&lt;/strong&gt; (&lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt;, जिसका &lt;code&gt;ref&lt;/code&gt; एट्रिब्यूट नाम-सूची की प्रविष्टि की ओर संकेत करता है)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;इस दोहरे आउटपुट से संपादक एक केंद्रीय नाम-सूची रख सकते हैं और साथ ही अपने TEI पाठों में टिप्पणी-टैग आसानी से डाल सकते हैं।&lt;/p&gt;
&lt;h2 id="मखय-वशषतए"&gt;मुख्य विशेषताएँ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;मानक ID निर्माण&lt;/strong&gt;: &lt;code&gt;pers-[familyname]-[givenname initial]&lt;/code&gt; के प्रारूप में एकरूप XML ID बनाता है (जैसे &lt;code&gt;pers-deteligny-c&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RDF पार्सिंग&lt;/strong&gt;: &lt;code&gt;rdflib&lt;/code&gt; के ज़रिये विभिन्न RDF प्रॉपर्टियों (जैसे &lt;code&gt;rdfs:label&lt;/code&gt;, &lt;code&gt;schema:name&lt;/code&gt;, &lt;code&gt;viaf:mainHead&lt;/code&gt;) से जानकारी निकालता है&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;कमांड-लाइन इंटरफ़ेस&lt;/strong&gt;: बस एक VIAF नंबर देकर चलाइए – और कुछ ज़रूरी नहीं&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;विस्तृत आउटपुट&lt;/strong&gt;: अंतिम XML के साथ प्रोसेसिंग का पूरा ब्योरा भी देता है&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="उपयग-क-उदहरण"&gt;उपयोग का उदाहरण&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python persNamer.py &lt;span class="m"&gt;314802260&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;यह कमांड देती है:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;person&lt;/span&gt; &lt;span class="na"&gt;xml:id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;persName&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;birth&amp;gt;&lt;/span&gt;1535&lt;span class="nt"&gt;&amp;lt;/birth&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;death&amp;gt;&lt;/span&gt;1572-08-24&lt;span class="nt"&gt;&amp;lt;/death&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;VIAF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;314802260&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/person&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;persName&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="डजटल-मनवक-म-उपयग"&gt;डिजिटल मानविकी में उपयोग&lt;/h2&gt;
&lt;p&gt;persNamer ख़ास तौर पर इनके लिए उपयोगी है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;प्रामाणिक नाम-सूची की ज़रूरत वाले डिजिटल विद्वत्तापूर्ण संस्करण&lt;/li&gt;
&lt;li&gt;ऐतिहासिक व्यक्तियों से जुड़ी TEI एनकोडिंग परियोजनाएँ&lt;/li&gt;
&lt;li&gt;दस्तावेज़ों को प्रामाणिक अभिलेखों से जोड़ने वाली लिंक्ड डेटा पहलें&lt;/li&gt;
&lt;li&gt;बड़े TEI कॉर्पस में एकरूपता बनाए रखना&lt;/li&gt;
&lt;li&gt;डिजिटल मानविकी के पाठ्यक्रमों में प्रामाणिक नाम-सूची की अवधारणा पढ़ाना&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="करयनवयन"&gt;कार्यान्वयन&lt;/h2&gt;
&lt;p&gt;persNamer Python में लिखा गया है और इन पर निर्भर है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP अनुरोधों के लिए &lt;code&gt;requests&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;RDF पार्सिंग के लिए &lt;code&gt;rdflib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;XML सँभालने के लिए &lt;code&gt;lxml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;स्रोत कोड और दस्तावेज़ीकरण
पर उपलब्ध हैं।&lt;/p&gt;</description></item><item><title>ITA2 टेलीग्राफ़ एम्युलेटर</title><link>https://clementgodbarge.com/hi/code/baudot-emulator/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/code/baudot-emulator/</guid><description>&lt;p&gt;यह ITA2 एम्युलेटर पढ़ाने का एक व्यावहारिक औज़ार है: एनकोडिंग जैसी अमूर्त अवधारणा को यह आँखों के सामने और हाथ में ले आता है। जब विद्यार्थी कोई पाठ टाइप करते हैं और उसे तुरंत छेदों के पैटर्न में बदलते देखते हैं, तो वे कंप्यूटिंग और दूरसंचार की कई बुनियादी बातें एक साथ सीख रहे होते हैं।&lt;/p&gt;
&lt;h2 id="शकषक-लभ"&gt;शैक्षिक लाभ&lt;/h2&gt;
&lt;p&gt;पहली बात, यह बाइनरी निरूपण दिखाता है – पाठ किस तरह 1 और 0 के पैटर्न में बदल जाता है। आम तौर पर हम इसे किताबी ढंग से पढ़ाते हैं, लेकिन जब टेप पर सचमुच छेद उभरते दिखते हैं, तो विद्यार्थी समझ पाते हैं कि कोई भौतिक व्यवस्था डिजिटल सूचना को कैसे धारण कर सकती है।&lt;/p&gt;
&lt;div class="baudot-emulator"&gt;
&lt;h2&gt;ITA2 (Baudot-Murray) Telegraph Type Emulator&lt;/h2&gt;
&lt;p&gt;Type a word in the input below to see its representation on the ITA2 tape.&lt;/p&gt;
&lt;div class="baudot-controls"&gt;
&lt;label for="baudot-input"&gt;Type word:&lt;/label&gt;
&lt;input id="baudot-input" class="text-input" size="50" maxlength="50" /&gt;
&lt;button type="button" id="baudot-ltr-button" class="control-button active"&gt;LTR&lt;/button&gt;
&lt;button type="button" id="baudot-fig-button" class="control-button"&gt;FIG&lt;/button&gt;
&lt;/div&gt;
&lt;div class="tape-outer-container"&gt;
&lt;div class="tape-container"&gt;
&lt;table&gt;
&lt;tbody id="baudot-tape"&gt;&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.baudot-emulator {
--light-color: #f3f4f6;
--dark-color: #1f2937;
--light-alt-color: #e5e7eb;
--dark-alt-color: #374151;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
max-width: 100%;
margin: 2rem 0;
padding: 0;
box-sizing: border-box;
}
.baudot-emulator {
--tape-bg: var(--light-color);
--hole-bg: var(--light-color);
--hole-border: #d1d5db;
--punched-bg: var(--dark-color);
--punched-border: var(--dark-color);
--sprocket-bg: var(--light-color);
--sprocket-border: #9ca3af;
--button-bg: var(--light-color);
--button-bg-active: #d1d5db;
--button-text: var(--dark-color);
--button-border: #d1d5db;
--input-bg: white;
--input-border: #d1d5db;
--input-text: var(--dark-color);
--line-number: #6b7280;
}
html.dark .baudot-emulator,
html[data-theme='dark'] .baudot-emulator,
body.dark .baudot-emulator {
--tape-bg: var(--dark-alt-color);
--hole-bg: var(--dark-alt-color);
--hole-border: #4b5563;
--punched-bg: var(--light-color);
--punched-border: var(--light-color);
--sprocket-bg: var(--dark-alt-color);
--sprocket-border: #9ca3af;
--button-bg: var(--dark-alt-color);
--button-bg-active: #4b5563;
--button-text: var(--light-color);
--button-border: #4b5563;
--input-bg: var(--dark-alt-color);
--input-border: #4b5563;
--input-text: var(--light-color);
--line-number: #9ca3af;
}
.baudot-controls {
margin-bottom: 1.5rem;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
}
.baudot-emulator .text-input {
flex: 1;
min-width: 200px;
padding: 0.5rem;
font-size: 1rem;
border: 1px solid var(--input-border);
border-radius: 4px;
background: var(--input-bg);
color: var(--input-text);
}
.baudot-emulator .control-button {
padding: 0.5rem 1rem;
background: var(--button-bg);
color: var(--button-text);
border: 1px solid var(--button-border);
border-radius: 4px;
cursor: pointer;
font-size: 0.9rem;
}
.baudot-emulator .control-button.active {
background: var(--button-bg-active);
font-weight: bold;
}
.tape-outer-container {
padding: 0;
margin-bottom: 1.5rem;
border-radius: 4px;
overflow: hidden;
}
.tape-container {
width: 100%;
overflow-x: auto;
background: var(--tape-bg);
padding: 1rem 0.5rem;
}
.baudot-emulator table {
border-collapse: collapse;
width: 100%;
table-layout: fixed;
border: none;
}
.baudot-emulator tr {
height: 24px;
border: none;
}
.baudot-emulator td {
border: none;
padding: 0;
}
.baudot-emulator .line-number {
width: 20px;
text-align: center;
color: var(--line-number);
font-size: 0.8rem;
padding: 0 8px 0 0;
font-weight: bold;
}
.baudot-emulator .cell {
position: relative;
width: 20px;
height: 20px;
}
.baudot-emulator .cell-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--hole-bg);
border: 1px solid var(--hole-border);
}
.baudot-emulator .punched .cell-content {
background: var(--punched-bg);
border: 1px solid var(--punched-border);
}
.baudot-emulator .sprocket-hole {
position: absolute;
left: 50%;
top: 100%;
transform: translate(-50%, -50%);
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--sprocket-bg);
border: 1px solid var(--sprocket-border);
z-index: 2;
}
&lt;/style&gt;
&lt;script&gt;
document.addEventListener('DOMContentLoaded', function() {
initBaudotEmulator();
});
function initBaudotEmulator() {
if (!document.getElementById('baudot-input')) return;
const textInput = document.getElementById('baudot-input');
const tape = document.getElementById('baudot-tape');
const ltrButton = document.getElementById('baudot-ltr-button');
const figButton = document.getElementById('baudot-fig-button');
const ita2Code = {
'A': '00011', 'B': '11001', 'C': '01110', 'D': '01001', 'E': '00001',
'F': '01101', 'G': '11010', 'H': '10100', 'I': '00110', 'J': '01011',
'K': '01111', 'L': '10010', 'M': '11100', 'N': '01100', 'O': '11000',
'P': '10110', 'Q': '10111', 'R': '01010', 'S': '00101', 'T': '10000',
'U': '00111', 'V': '11110', 'W': '10011', 'X': '11101', 'Y': '10101',
'Z': '10001',
'1': '00011', '2': '11001', '3': '01110', '4': '01001', '5': '00001',
'6': '01101', '7': '11010', '8': '10100', '9': '01011', '0': '11000',
'-': '00011', '?': '00100', ':': '01010', '(': '11000', ')': '11101',
'.': '01000', ',': '00010', "'": '10001', '=': '01111', '/': '10011',
'+': '11011', ' ': '00100',
'FIG': '11011', 'LTR': '11111',
};
function generateTape() {
let rows = '';
for (let row = 0; row &lt; 5; row++) {
rows += '&lt;tr&gt;';
rows += `&lt;td class="line-number"&gt;${row + 1}&lt;/td&gt;`;
for (let col = 0; col &lt; 50; col++) {
rows += `&lt;td id="baudot_${row}_${col}" class="cell unpunched"&gt;
&lt;div class="cell-content"&gt;&lt;/div&gt;
${row === 2 ? '&lt;div class="sprocket-hole"&gt;&lt;/div&gt;' : ''}
&lt;/td&gt;`;
}
rows += '&lt;/tr&gt;';
}
tape.innerHTML = rows;
}
function updateITA2Code(word) {
clearTape();
word = word.toUpperCase();
let tapePosition = 0;
let currentCharType = 'LTR';
ltrButton.classList.add('active');
figButton.classList.remove('active');
for (let i = 0; i &lt; word.length; i++) {
const char = word[i];
let code = ita2Code[char] || ita2Code[' '];
let requiredCharType = /[A-Z ]/.test(char) ? 'LTR' : 'FIG';
if (requiredCharType !== currentCharType) {
const shiftCode = requiredCharType === 'LTR' ? ita2Code['LTR'] : ita2Code['FIG'];
punchTape(shiftCode, tapePosition++);
currentCharType = requiredCharType;
ltrButton.classList.toggle('active', currentCharType === 'LTR');
figButton.classList.toggle('active', currentCharType === 'FIG');
}
punchTape(code, tapePosition++);
}
}
function punchTape(code, tapePosition) {
if (tapePosition &gt;= 50) return;
for (let bit = 0; bit &lt; 5; bit++) {
const cell = document.getElementById(`baudot_${bit}_${tapePosition}`);
if (cell) {
cell.className = code[bit] === '1' ? 'cell punched' : 'cell unpunched';
}
}
}
function clearTape() {
for (let i = 0; i &lt; 50; i++) {
for (let bit = 0; bit &lt; 5; bit++) {
const cell = document.getElementById(`baudot_${bit}_${i}`);
if (cell) {
cell.className = 'cell unpunched';
}
}
}
}
generateTape();
textInput.addEventListener('input', function() {
updateITA2Code(this.value);
});
ltrButton.addEventListener('click', function() {
this.classList.add('active');
figButton.classList.remove('active');
if (textInput.value) {
updateITA2Code(textInput.value);
}
});
figButton.addEventListener('click', function() {
this.classList.add('active');
ltrButton.classList.remove('active');
if (textInput.value) {
updateITA2Code(textInput.value);
}
});
if (textInput.value) {
updateITA2Code(textInput.value);
}
}
&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;LETTERS/FIGURES शिफ़्ट की युक्ति स्टेट मशीन की अवधारणा को सहज ढंग से सामने ले आती है। विद्यार्थी प्रयोग करते-करते ख़ुद खोज लेते हैं कि एक ही पैटर्न मौजूदा मोड के हिसाब से अलग-अलग वर्ण दर्शा सकता है। अवस्था-आधारित एनकोडिंग का यह हाथों-हाथ अनुभव उन्हें कंप्यूटिंग की और जटिल अवधारणाओं के लिए तैयार करता है।&lt;/p&gt;
&lt;h2 id="करयनवयन-क-बयर"&gt;कार्यान्वयन का ब्योरा&lt;/h2&gt;
&lt;p&gt;एम्युलेटर JavaScript और HTML/CSS में लिखा गया है, इसलिए इसे किसी भी वेब-पेज में आसानी से जोड़ा जा सकता है। कोड मॉड्यूलर है और अलग-अलग शैक्षिक संदर्भों के अनुसार ढाला जा सकता है।&lt;/p&gt;
&lt;p&gt;स्रोत कोड यहाँ मिलेगा, और एम्युलेटर को आप ख़ुद भी आज़मा सकते हैं:
।&lt;/p&gt;</description></item><item><title>ITA2 टेलीग्राफ़ एम्युलेटर से बाइनरी की पढ़ाई</title><link>https://clementgodbarge.com/hi/post/baudot/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/baudot/</guid><description>&lt;h2 id="अमरत-क-मरत-बनन"&gt;अमूर्त को मूर्त बनाना&lt;/h2&gt;
&lt;p&gt;यह ITA2 एम्युलेटर पढ़ाने का एक व्यावहारिक औज़ार है। एनकोडिंग जैसी अमूर्त अवधारणा को आँखों के सामने और हाथ में ले आकर यह विद्यार्थियों को कंप्यूटिंग और दूरसंचार की एक बुनियादी बात से परिचित कराता है: बाइनरी निरूपण – यानी पाठ किस तरह एक और शून्य के पैटर्न में बदल जाता है।
आम तौर पर हम इसे किताबी ढंग से पढ़ाते हैं, लेकिन जब टेप पर सचमुच छेद उभरते दिखते हैं, तो विद्यार्थी समझ पाते हैं कि कोई भौतिक व्यवस्था डिजिटल सूचना को कैसे धारण कर सकती है।
&lt;div class="baudot-emulator"&gt;
&lt;h2&gt;ITA2 (Baudot-Murray) Telegraph Type Emulator&lt;/h2&gt;
&lt;p&gt;Type a word in the input below to see its representation on the ITA2 tape.&lt;/p&gt;
&lt;div class="baudot-controls"&gt;
&lt;label for="baudot-input"&gt;Type word:&lt;/label&gt;
&lt;input id="baudot-input" class="text-input" size="50" maxlength="50" /&gt;
&lt;button type="button" id="baudot-ltr-button" class="control-button active"&gt;LTR&lt;/button&gt;
&lt;button type="button" id="baudot-fig-button" class="control-button"&gt;FIG&lt;/button&gt;
&lt;/div&gt;
&lt;div class="tape-outer-container"&gt;
&lt;div class="tape-container"&gt;
&lt;table&gt;
&lt;tbody id="baudot-tape"&gt;&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.baudot-emulator {
--light-color: #f3f4f6;
--dark-color: #1f2937;
--light-alt-color: #e5e7eb;
--dark-alt-color: #374151;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
max-width: 100%;
margin: 2rem 0;
padding: 0;
box-sizing: border-box;
}
.baudot-emulator {
--tape-bg: var(--light-color);
--hole-bg: var(--light-color);
--hole-border: #d1d5db;
--punched-bg: var(--dark-color);
--punched-border: var(--dark-color);
--sprocket-bg: var(--light-color);
--sprocket-border: #9ca3af;
--button-bg: var(--light-color);
--button-bg-active: #d1d5db;
--button-text: var(--dark-color);
--button-border: #d1d5db;
--input-bg: white;
--input-border: #d1d5db;
--input-text: var(--dark-color);
--line-number: #6b7280;
}
html.dark .baudot-emulator,
html[data-theme='dark'] .baudot-emulator,
body.dark .baudot-emulator {
--tape-bg: var(--dark-alt-color);
--hole-bg: var(--dark-alt-color);
--hole-border: #4b5563;
--punched-bg: var(--light-color);
--punched-border: var(--light-color);
--sprocket-bg: var(--dark-alt-color);
--sprocket-border: #9ca3af;
--button-bg: var(--dark-alt-color);
--button-bg-active: #4b5563;
--button-text: var(--light-color);
--button-border: #4b5563;
--input-bg: var(--dark-alt-color);
--input-border: #4b5563;
--input-text: var(--light-color);
--line-number: #9ca3af;
}
.baudot-controls {
margin-bottom: 1.5rem;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
}
.baudot-emulator .text-input {
flex: 1;
min-width: 200px;
padding: 0.5rem;
font-size: 1rem;
border: 1px solid var(--input-border);
border-radius: 4px;
background: var(--input-bg);
color: var(--input-text);
}
.baudot-emulator .control-button {
padding: 0.5rem 1rem;
background: var(--button-bg);
color: var(--button-text);
border: 1px solid var(--button-border);
border-radius: 4px;
cursor: pointer;
font-size: 0.9rem;
}
.baudot-emulator .control-button.active {
background: var(--button-bg-active);
font-weight: bold;
}
.tape-outer-container {
padding: 0;
margin-bottom: 1.5rem;
border-radius: 4px;
overflow: hidden;
}
.tape-container {
width: 100%;
overflow-x: auto;
background: var(--tape-bg);
padding: 1rem 0.5rem;
}
.baudot-emulator table {
border-collapse: collapse;
width: 100%;
table-layout: fixed;
border: none;
}
.baudot-emulator tr {
height: 24px;
border: none;
}
.baudot-emulator td {
border: none;
padding: 0;
}
.baudot-emulator .line-number {
width: 20px;
text-align: center;
color: var(--line-number);
font-size: 0.8rem;
padding: 0 8px 0 0;
font-weight: bold;
}
.baudot-emulator .cell {
position: relative;
width: 20px;
height: 20px;
}
.baudot-emulator .cell-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--hole-bg);
border: 1px solid var(--hole-border);
}
.baudot-emulator .punched .cell-content {
background: var(--punched-bg);
border: 1px solid var(--punched-border);
}
.baudot-emulator .sprocket-hole {
position: absolute;
left: 50%;
top: 100%;
transform: translate(-50%, -50%);
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--sprocket-bg);
border: 1px solid var(--sprocket-border);
z-index: 2;
}
&lt;/style&gt;
&lt;script&gt;
document.addEventListener('DOMContentLoaded', function() {
initBaudotEmulator();
});
function initBaudotEmulator() {
if (!document.getElementById('baudot-input')) return;
const textInput = document.getElementById('baudot-input');
const tape = document.getElementById('baudot-tape');
const ltrButton = document.getElementById('baudot-ltr-button');
const figButton = document.getElementById('baudot-fig-button');
const ita2Code = {
'A': '00011', 'B': '11001', 'C': '01110', 'D': '01001', 'E': '00001',
'F': '01101', 'G': '11010', 'H': '10100', 'I': '00110', 'J': '01011',
'K': '01111', 'L': '10010', 'M': '11100', 'N': '01100', 'O': '11000',
'P': '10110', 'Q': '10111', 'R': '01010', 'S': '00101', 'T': '10000',
'U': '00111', 'V': '11110', 'W': '10011', 'X': '11101', 'Y': '10101',
'Z': '10001',
'1': '00011', '2': '11001', '3': '01110', '4': '01001', '5': '00001',
'6': '01101', '7': '11010', '8': '10100', '9': '01011', '0': '11000',
'-': '00011', '?': '00100', ':': '01010', '(': '11000', ')': '11101',
'.': '01000', ',': '00010', "'": '10001', '=': '01111', '/': '10011',
'+': '11011', ' ': '00100',
'FIG': '11011', 'LTR': '11111',
};
function generateTape() {
let rows = '';
for (let row = 0; row &lt; 5; row++) {
rows += '&lt;tr&gt;';
rows += `&lt;td class="line-number"&gt;${row + 1}&lt;/td&gt;`;
for (let col = 0; col &lt; 50; col++) {
rows += `&lt;td id="baudot_${row}_${col}" class="cell unpunched"&gt;
&lt;div class="cell-content"&gt;&lt;/div&gt;
${row === 2 ? '&lt;div class="sprocket-hole"&gt;&lt;/div&gt;' : ''}
&lt;/td&gt;`;
}
rows += '&lt;/tr&gt;';
}
tape.innerHTML = rows;
}
function updateITA2Code(word) {
clearTape();
word = word.toUpperCase();
let tapePosition = 0;
let currentCharType = 'LTR';
ltrButton.classList.add('active');
figButton.classList.remove('active');
for (let i = 0; i &lt; word.length; i++) {
const char = word[i];
let code = ita2Code[char] || ita2Code[' '];
let requiredCharType = /[A-Z ]/.test(char) ? 'LTR' : 'FIG';
if (requiredCharType !== currentCharType) {
const shiftCode = requiredCharType === 'LTR' ? ita2Code['LTR'] : ita2Code['FIG'];
punchTape(shiftCode, tapePosition++);
currentCharType = requiredCharType;
ltrButton.classList.toggle('active', currentCharType === 'LTR');
figButton.classList.toggle('active', currentCharType === 'FIG');
}
punchTape(code, tapePosition++);
}
}
function punchTape(code, tapePosition) {
if (tapePosition &gt;= 50) return;
for (let bit = 0; bit &lt; 5; bit++) {
const cell = document.getElementById(`baudot_${bit}_${tapePosition}`);
if (cell) {
cell.className = code[bit] === '1' ? 'cell punched' : 'cell unpunched';
}
}
}
function clearTape() {
for (let i = 0; i &lt; 50; i++) {
for (let bit = 0; bit &lt; 5; bit++) {
const cell = document.getElementById(`baudot_${bit}_${i}`);
if (cell) {
cell.className = 'cell unpunched';
}
}
}
}
generateTape();
textInput.addEventListener('input', function() {
updateITA2Code(this.value);
});
ltrButton.addEventListener('click', function() {
this.classList.add('active');
figButton.classList.remove('active');
if (textInput.value) {
updateITA2Code(textInput.value);
}
});
figButton.addEventListener('click', function() {
this.classList.add('active');
ltrButton.classList.remove('active');
if (textInput.value) {
updateITA2Code(textInput.value);
}
});
if (textInput.value) {
updateITA2Code(textInput.value);
}
}
&lt;/script&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id="ऐतहसक-पषठभम-टलगरफ-स-कपयटग-तक"&gt;ऐतिहासिक पृष्ठभूमि: टेलीग्राफ़ से कंप्यूटिंग तक&lt;/h2&gt;
&lt;p&gt;ITA2 (International Telegraph Alphabet No. 2) कोड, जिसे बोदो-मरे कोड भी कहते हैं, 1920 के दशक में एमिल बोदो के 1870 के दशक वाले मूल टेलीग्राफ़ कोड को सुधारकर बनाया गया था। इन शुरुआती दूरसंचार प्रणालियों का बाद के कंप्यूटिंग विकास पर सीधा असर पड़ा:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5-बिट एनकोडिंग योजना कैरेक्टर एनकोडिंग का एक आरंभिक उदाहरण थी&lt;/li&gt;
&lt;li&gt;वर्ण-समुच्चय की सीमा (5 बिट से केवल 32 संयोजन संभव) ने LETTERS/FIGURES शिफ़्ट की चतुर युक्ति को जन्म दिया&lt;/li&gt;
&lt;li&gt;यह प्रणाली टेलीटाइप मशीनों में बीसवीं सदी के काफ़ी अंदर तक इस्तेमाल होती रही&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="खल-खल-म-सटट-मशन"&gt;खेल-खेल में स्टेट मशीन&lt;/h2&gt;
&lt;p&gt;LETTERS/FIGURES शिफ़्ट की युक्ति स्टेट मशीन की अवधारणा को सहज ढंग से सामने ले आती है। विद्यार्थी प्रयोग करते-करते ख़ुद खोज लेते हैं कि एक ही पैटर्न मौजूदा मोड के हिसाब से अलग-अलग वर्ण दर्शा सकता है। अवस्था-आधारित एनकोडिंग का यह हाथों-हाथ अनुभव उन्हें कंप्यूटिंग की और जटिल अवधारणाओं के लिए तैयार करता है।
मिसाल के तौर पर, बिट-पैटर्न &lt;code&gt;00011&lt;/code&gt; का अर्थ है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LETTERS मोड में अक्षर &amp;lsquo;A&amp;rsquo;&lt;/li&gt;
&lt;li&gt;FIGURES मोड में अंक &amp;lsquo;1&amp;rsquo;
अवस्था के अनुसार बदलने वाली यह दोहरी व्याख्या कंप्यूटर के डेटा-संचालन की बुनियाद में है।&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ककष-क-गतवधय"&gt;कक्षा की गतिविधियाँ&lt;/h2&gt;
&lt;p&gt;ITA2 एम्युलेटर को पढ़ाई में शामिल करने के कुछ तरीक़े:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;कोड तोड़ने की चुनौती&lt;/strong&gt;: विद्यार्थियों से ITA2 पैटर्न में लिखे संदेश डिकोड करवाइए&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;किफ़ायती एनकोडिंग&lt;/strong&gt;: चर्चा कीजिए कि बैंडविड्थ बचाने के लिए शिफ़्ट की युक्ति क्यों ज़रूरी थी&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;एनकोडिंग का विकास&lt;/strong&gt;: ITA2 के 5-बिट कोड की तुलना ASCII (7-बिट) और Unicode से कीजिए&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;फ़िज़िकल कंप्यूटिंग&lt;/strong&gt;: इस ऐतिहासिक प्रणाली को Arduino जैसे आधुनिक माइक्रोकंट्रोलरों से जोड़िए&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="सगमत-क-लभ"&gt;सुगमता के लाभ&lt;/h2&gt;
&lt;p&gt;ऐतिहासिक दिलचस्पी से आगे, यह तरीक़ा अलग-अलग ढंग से सीखने वाले विद्यार्थियों के काम आता है:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;देखकर सीखने वाले पैटर्न देखते हैं&lt;/li&gt;
&lt;li&gt;हाथ से करके सीखने वाले एनकोडिंग की प्रक्रिया से सीधे जुड़ते हैं&lt;/li&gt;
&lt;li&gt;सैद्धांतिक रुचि वाले सूचना सिद्धांत के गणितीय पहलू खंगाल सकते हैं&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="करयनवयन-क-बयर"&gt;कार्यान्वयन का ब्योरा&lt;/h2&gt;
&lt;p&gt;एम्युलेटर JavaScript में लिखा गया है और किसी भी वेब-आधारित शिक्षण मंच में आसानी से जोड़ा जा सकता है। कोड मॉड्यूलर है और अलग-अलग शैक्षिक संदर्भों के अनुसार ढाला जा सकता है।
स्रोत कोड यहाँ मिलेगा, और एम्युलेटर को आप ख़ुद भी आज़मा सकते हैं:
&lt;/p&gt;</description></item><item><title>लेवांते का एक अनुभूत भूगोल</title><link>https://clementgodbarge.com/hi/post/levante/</link><pubDate>Sat, 29 Oct 2022 10:02:52 -0500</pubDate><guid>https://clementgodbarge.com/hi/post/levante/</guid><description>&lt;h1 id="भमक"&gt;भूमिका&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;लेवांते&lt;/em&gt; एक फिसलती हुई जगह है। उसकी परिभाषा आम तौर पर किसी दूसरे इलाक़े के संबंध में – या उसके विरोध में – की जाती है, इसलिए उसका अर्थ शायद ही कभी स्थिर रहा; जिस जगह और जिस समय यह शब्द इस्तेमाल हुआ, उसके हिसाब से यह अलग-अलग भूगोल जगाता रहा। लेकिन अगर इस शब्द की वस्तुनिष्ठ और सटीक परिभाषा गढ़ना कठिन है, तो भी उम्मीद की जा सकती है कि किसी दिए हुए पाठ-कॉर्पस के भीतर मौजूद सहसंबंधों के आधार पर उस क्षेत्र का एक व्यक्तिपरक नक़्शा खींचा जाए। दूसरे शब्दों में, पाठकों के किसी ख़ास समूह के मन में &lt;em&gt;लेवांते&lt;/em&gt; कौन-सा भूभाग जगा सकता था?&lt;br&gt;
इस पोस्ट में मैं आपको दिखाऊँगा कि Medici Archive Project के
के डेटा से उन ख़ास जगहों को कैसे देखा जा सकता है, जिनसे यह स्थान-नाम जुड़ा हुआ था।&lt;/p&gt;
&lt;h1 id="mia-डटबस"&gt;MIA डेटाबेस&lt;/h1&gt;
&lt;p&gt;MIA डेटाबेस उन शोधकर्ताओं का साझा मंच है, जो
की अभिलेखीय सामग्री की अपनी तस्वीरें अपलोड और साझा करना चाहते हैं। पिछले एक साल में,
के संरक्षण में, हमारी टीम ने फ़्लोरेंस के &lt;em&gt;Mediceo del Principato&lt;/em&gt; अभिलेखागार के &lt;em&gt;avvisi&lt;/em&gt; खंड में रखे हज़ारों दस्तावेज़ों की तस्वीरें ली हैं, उनकी प्रतिलिपि की है, सार लिखे हैं और उन्हें वर्गीकृत किया है। हमारा डेटाबेस मूलतः सांख्यिकीय विश्लेषण के लिए नहीं बना था, फिर भी जो मेटाडेटा हमने उपलब्ध कराया है, उसे डाउनलोड करके डेटासेट के रूप में इस्तेमाल किया जा सकता है।&lt;/p&gt;
&lt;h1 id="डटसट"&gt;डेटासेट&lt;/h1&gt;
&lt;p&gt;यहाँ मैंने जो डेटासेट बनाया है, वह 1543 से 1566 तक &lt;em&gt;लेवांते&lt;/em&gt; से आई सारी ख़बरों को समेटता है – यानी अभिलेखागार में दर्ज पहले avviso से लेकर उस साल तक, जब सुल्तान
की मृत्यु होती है। सर्वर से निकाले गए डेटा का एक नमूना यह रहा। तीन कॉलम के इस डेटा में एक अद्वितीय दस्तावेज़-संख्या, एक स्थान-नाम और एक तारीख़ है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csv" data-lang="csv"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Malta / Europe / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Modon / Messinias&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nomos / Peloponnisos / Ellas 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Al-Iskandariyah / Muhafazat al Iskandariyah / Egypt / Africa 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Evvoia / Evvoias&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nomos / Sterea Ellas-Evvoia / Ellas 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Venetian Republic / Italia / Europe / World 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Arsenale / Istanbul / Istanbul / Marmara 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386 Black Sea / Asia / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Otranto / Lecce / Puglia / Italia 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Nisoi Aiyaiou / Ellas / Europe / World 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Malta / Europe / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Buda / Budapest / Budapest / Magyarorszag 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Al-Iskandariyah / Muhafazat al Iskandariyah / Egypt / Africa 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Kipros / Asia / World / Top of the TGN hierarchy 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Rodhos / Rodos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt; Nisos / Sporadhes / Nisoi Aiyaiou 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Arsenale / Istanbul / Istanbul / Marmara 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389 Çorlu / Thraki / Ellas / Europe 1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="डट-क-सफई"&gt;डेटा की सफ़ाई&lt;/h2&gt;
&lt;p&gt;इस डेटा को देखने लायक़ बनाने के लिए पहले इसे csv (comma separated values) डेटासेट के रूप में पढ़ने योग्य बनाना होगा। साथ ही यहाँ दी गई भौगोलिक जानकारी को एक ज़्यादा “मशीन-अनुकूल” रूप में बदलना होगा: GPS निर्देशांक। डेटासेट में सैकड़ों प्रविष्टियाँ हैं, इसलिए बेहतर है कि यह काम स्वचालित हो।
,
या
जैसे पूर्व-प्रशिक्षित भाषा मॉडलों – और ऐसे कई अन्य – की मदद से यह काफ़ी जल्दी और काफ़ी सटीकता से हो जाता है। हाँ, इस पर कड़ी निगरानी रखनी होगी, क्योंकि पूर्व-प्रशिक्षित भाषा मॉडलों में मतिभ्रम की – यानी मनगढ़ंत बातें कहने की – हल्की-सी प्रवृत्ति होती है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csv" data-lang="csv"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;documentDate&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;35.899167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;14.514167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;37.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;22.116667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;31.200028&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;29.918719&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;38.366667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;23.666667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;45.438333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;12.331333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.018611&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.984444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57386&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;42.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;18.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;40.216667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;18.166667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;37.966667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;23.716667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;35.899167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;14.514167&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;47.4925&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;19.051389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;31.200028&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;29.918719&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;34.916667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;33.616667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;36.405419&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.227778&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.018611&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;28.984444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;57389&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;41.133333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;27.416667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;1565-1-3&lt;/span&gt;&lt;span class="p"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="घनतव-मनचतर"&gt;घनत्व-मानचित्र&lt;/h1&gt;
&lt;p&gt;घनत्व-मानचित्र एक ऐसा विज़ुअलाइज़ेशन है, जो दिखाता है कि किसी डेटासेट में कोई जगह कितनी बार आती है। इससे न सिर्फ़ अपने डेटा का भौगोलिक दायरा समझ आता है, बल्कि उसके केंद्र-बिंदु भी। नक़्शे पर कौन-सी जगहों का ज़िक्र ज़्यादा होता है? और कौन-सी बस कभी-कभार आती हैं? केंद्र कहाँ हैं, और परिधि कितनी दूर? नक़्शे पर पाठक का ध्यान सबसे ज़्यादा कहाँ टिकने की संभावना है?&lt;/p&gt;
&lt;iframe width='100%' height='600px' src="https://api.mapbox.com/styles/v1/clemclem/cl9q7c77p004y14mqytjrfnex.html?title=false&amp;access_token=pk.eyJ1IjoiY2xlbWNsZW0iLCJhIjoiY2lmbGpvbjMwZjh3NnJ5bHg4ZzkzeWZzeCJ9.IgOF4fphVbsWAIKyzAV-DQ&amp;zoomwheel=false#3.83/43.29/33.61" title="Levante" style="border:none;"&gt;&lt;/iframe&gt;
&lt;p&gt;इस प्रयोग के लिए – और चूँकि मुझे जल्दी थी – मैंने
के एक API का इस्तेमाल किया। वैसे कई विज़ुअलाइज़ेशन लाइब्रेरियाँ और भौगोलिक सूचना प्रणालियाँ (GIS) इसी तरह का घनत्व-मानचित्र बनाने देती हैं।&lt;/p&gt;
&lt;h1 id="कछ-अवलकन"&gt;कुछ अवलोकन&lt;/h1&gt;
&lt;p&gt;नतीजा किसी साफ़-साफ़ परिभाषित अवधारणा के सटीक चित्रण से ज़्यादा एक प्रभाववादी चित्र है, और इस प्रयोग में मुझे यही बात भाती है। दरअसल,
&lt;mark&gt;डेटा विज्ञान मानविकी का ताक़तवर साथी हो सकता है, लेकिन हमें उसके नियमों से बँधना ज़रूरी नहीं।&lt;/mark&gt;
&lt;/p&gt;
&lt;p&gt;इस प्रयोग का एक और दिलचस्प पहलू यह है कि नक़्शा एक ऐसा &lt;em&gt;लेवांते&lt;/em&gt; सामने लाता है, जो बाक़ी यूरोप और भूमध्यसागर से पूरी तरह जुड़ा हुआ है। यह उस्मानी साम्राज्य के राजनीतिक भूगोल में एदिर्ने की केंद्रीयता को भी उभारता है। इसके अलावा, नक़्शे पर स्पेन का सबसे अहम शहर न मैड्रिड है, न एस्कोरियाल, बल्कि नेपल्स। और आख़िर में – पर कम अहम नहीं – द्वीप और रागूज़ा जैसे छोटे नगर-राज्य क्षेत्र की विभिन्न शक्तियों के बीच मध्यस्थता की महत्वपूर्ण भूमिका निभाते दिखते हैं।&lt;/p&gt;
&lt;h1 id="mia-स-डट-कस-मग"&gt;MIA से डेटा कैसे माँगें&lt;/h1&gt;
&lt;p&gt;MIA शोधकर्ताओं के लिए सहयोग का शानदार उपकरण तो है, लेकिन उसके सर्वरों पर रखा डेटा आसानी से हाथ नहीं आता। मिसाल के तौर पर, उसका बैक-एंड सार्वजनिक रिपॉज़िटरी में प्रकाशित नहीं है। फिर भी, MIA पर पंजीकरण करके और python से सर्वर को अनुरोध भेजकर आप डेटा हासिल कर सकते हैं।&lt;/p&gt;
&lt;h3 id="अनरध"&gt;अनुरोध&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://mia.medici.org/Mia/json/de/advancedsearch/advancedSearchResults/0/90/docYear/asc/?isNewsFeedSearch=False&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;archivalLocationSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;archivalLocationAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;repository&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;collection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Mediceo del Principato&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;series&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2863&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;insert&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;categoryAndTypologySearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;categoryAndTypologyAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;category&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;News&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;typology&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcriptionSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcriptionAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transcription&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsisSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsisAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;synopsis&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placesSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placesAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;places&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;peopleSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;peopleAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;people&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicsSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicsAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topics&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicTitle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Place Index&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;topicId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;51&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;placeAllId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}]},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateFilterType&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateYear&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateMonth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateDay&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBYear&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBMonth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dateBDay&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;documentOwnerSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;documentOwnerAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;editType&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;searchSection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languagesSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languagesAdvancedSearch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;isActiveFilter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;languages&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:[]}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Content-type&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Accept&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;*/*&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;LOGIN&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;PASSWORD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;LOGIN और PASSWORD की जगह अपने क्रेडेंशियल डालना न भूलें।&lt;/p&gt;
&lt;h3 id="परतकरय-क-फइल-म-लख"&gt;प्रतिक्रिया को फ़ाइल में लिखें&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;response.json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;fd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iter_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="json-खल"&gt;JSON खोलें&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;response.json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;utf8&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="json-ऑबजकट-क-डकशनर-क-रप-म-लटए"&gt;JSON ऑब्जेक्ट को डिक्शनरी के रूप में लौटाएँ&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;json_complete&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="json-स-डट-चन-और-उस-csv-पररप-म-परट-कर"&gt;JSON से डेटा चुनें और उसे CSV प्रारूप में प्रिंट करें&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;results.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;csvfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fieldnames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;placeCited&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;documentDate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DictWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csvfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fieldnames&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fieldnames&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;writeheader&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;json_complete&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topics&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topics&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;placeCited&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;topicPlaceName&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docYear&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docMonth&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docDay&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;documentDate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;writer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;writerow&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;documentId&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;placeCited&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;placeCited&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;documentDate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;documentDate&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;results.csv&lt;/code&gt; फ़ाइल डाउनलोड हो जाने के बाद आप ऊपर बताए तरीक़े से डेटा की सफ़ाई कर सकते हैं।&lt;/p&gt;</description></item><item><title>पूर्व-प्रशिक्षित भाषा मॉडलों से बड़े पैमाने पर ग्रंथसूची की पार्सिंग</title><link>https://clementgodbarge.com/hi/post/bibliography/</link><pubDate>Thu, 07 Jul 2022 19:04:14 +0200</pubDate><guid>https://clementgodbarge.com/hi/post/bibliography/</guid><description>&lt;p&gt;डिजिटल मानविकी की परियोजनाओं की लागत घटानी है, तो कुंजी है स्वचालन। आज तक अकादमिक दुनिया में संपादकीय काम से जुड़े दोहराव भरे और उबाऊ काम या तो पहले से बोझ तले दबे शोधकर्ता भारी ख़र्च पर करते आए हैं, या फिर उन्हें छात्रों को “आउटसोर्स” कर दिया जाता रहा है।
में मेरी दलील है कि इन बेगार जैसे कामों में से ज़्यादातर को स्वचालित &lt;em&gt;किया जा सकता है&lt;/em&gt;, यही नहीं, &lt;em&gt;किया जाना चाहिए&lt;/em&gt;। संपादकीय कामों का स्वचालन डिजिटल मानविकी की परियोजनाओं की कुल लागत घटाता है। और सबसे अहम बात, यह कम आय वाले क्षेत्रों के शोधकर्ताओं को बहुमूल्य दस्तावेज़ जल्दी और सस्ते में प्रकाशित करने का रास्ता देता है।&lt;/p&gt;
&lt;p&gt;
में मैंने मिसाल के तौर पर दिखाया था कि पूर्व-प्रशिक्षित भाषा मॉडल किसी डिजिटल संस्करण की XML लेबलिंग का ज़्यादातर काम कैसे सँभाल सकते हैं।&lt;/p&gt;
&lt;p&gt;इस पोस्ट में मैं दूसरी मिसाल पेश करता हूँ – इस बार ग्रंथसूची की।&lt;/p&gt;
&lt;h2 id="समसय"&gt;समस्या&lt;/h2&gt;
&lt;p&gt;किसी शोध-लेख में उल्लिखित संदर्भों से ग्रंथसूची-डेटाबेस बनाना काफ़ी सीधा काम है। आप
जैसे कैटलॉग में झटपट खोज कर सकते हैं, संदर्भ को किसी ख़ास प्रारूप में डाउनलोड कर सकते हैं, या उसे स्थानीय डेटाबेस से स्वतः आयात कर सकते हैं। एक-दो लेखों के साथ यह ठीक चलता है।
लेकिन संदर्भों की एक निश्चित संख्या के बाद यह काम उबाऊ और समय खाने वाला बन जाता है। इसके इलाज के लिए
जैसे पार्सिंग एल्गोरिद्म इस्तेमाल किए जा सकते हैं। पर इन एल्गोरिद्मों को बड़े पैमाने पर चलाना मुश्किल हो सकता है।
जब मैंने हमारे
में शामिल 150 से ज़्यादा शोध-निबंधों को anystyle से बदलने की कोशिश की, तो जमा हुई ग़लतियाँ सँभालने लायक़ ही नहीं रहीं। वह हमारे कई स्रोतों को ठीक से पहचान नहीं पाया – मसलन, आरंभिक आधुनिक काल की किताबों के लंबे-लंबे शीर्षकों को कुछ और ही समझ बैठा – और कम प्रचलित दस्तावेज़ों, जैसे ख़ास वेबपेजों या ऑनलाइन वीडियो, को पहचानने में भी नाकाम रहा। पार्सर तभी ठीक काम करते हैं, जब लेखक Chicago, Turabian या MLA जैसी किसी जानी-मानी शैली के नियमों का धर्म की तरह पालन करे। मानक से ज़रा-सा हटे नहीं कि ग़लतियाँ शुरू।&lt;/p&gt;
&lt;h2 id="समधन"&gt;समाधान&lt;/h2&gt;
&lt;p&gt;यहीं
&lt;mark&gt;पूर्व-प्रशिक्षित भाषा मॉडल&lt;/mark&gt;
काम आते हैं, क्योंकि वे
&lt;mark&gt;किसी भी ग्रंथसूची-शैली के पैटर्न झट से समझ लेते हैं&lt;/mark&gt;
– आपकी अपनी ईजाद की हुई शैली के भी – और चंद उदाहरणों के सहारे स्वरूपित ग्रंथसूची के बड़े ढेर को ठीक-ठीक
में बदल देते हैं।&lt;/p&gt;
&lt;p&gt;2021 की शुरुआत में मुझे सौभाग्य से OpenAI के
तक शुरुआती पहुँच मिल गई थी। Codex ऐसा मॉडल है जो प्राकृतिक भाषा को कोड में और कोड को प्राकृतिक भाषा में बदलने देता है। OpenAI का दावा है कि यह एक दर्जन से ज़्यादा प्रोग्रामिंग भाषाओं में दक्ष है, और हालाँकि यह पोस्ट लिखे जाने तक इसका API अभी बीटा संस्करण के रूप में ही उपलब्ध है, यह GitHub के
जैसे लोकप्रिय ऐप्लिकेशनों को पहले से चला रहा है।&lt;/p&gt;
&lt;p&gt;इस API से थोड़ा खेलने के बाद मुझे एहसास हुआ कि यह &lt;code&gt;BibTeX&lt;/code&gt; जैसे सरल कोड के साथ भी बहुत अच्छा काम कर सकता है।&lt;/p&gt;
&lt;p&gt;और सचमुच, इसे भरोसेमंद ढंग से चलाने के लिए मुझे इनपुट प्रॉम्प्ट में सिर्फ़ चार उदाहरण देने पड़े।&lt;/p&gt;
&lt;h3 id="इनपट-परमपट"&gt;इनपुट प्रॉम्प्ट&lt;/h3&gt;
&lt;p&gt;References:
Bayle, Ariane. “Patients exemplaires: la correspondance médicale de Fioravanti.” In &lt;em&gt;Vulgariser la médecine. Du style médical en France et en Italie&lt;/em&gt;, edited by Andrea Carlino and Michel Jeanneret, 181–212. Geneva: Droz, 2009.&lt;/p&gt;
&lt;p&gt;Berns, Andrew D. &lt;em&gt;The Bible and Natural Philosophy in Renaissance Italy: Jewish and Christian Physicians in Search of Truth&lt;/em&gt;. Cambridge: Cambridge University Press, 2015.&lt;/p&gt;
&lt;p&gt;Gabler, Hans Walter. “Theorizing the Digital Scholarly Edition.” &lt;em&gt;Literature Compass&lt;/em&gt; 7, no. 2 (2010): 43–56.
.&lt;/p&gt;
&lt;p&gt;Findlen, Paula. &lt;em&gt;Possessing Nature: Museums, Collecting, and Scientific Culture in Early Modern Italy&lt;/em&gt;. Berkeley: University of California Press, 1994.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-BibTeX" data-lang="BibTeX"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@incollection&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;bayle2009&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Bayle, Ariane}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;booktitle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Vulgariser la médecine. Du style médical en France et en Italie}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Patients exemplaires: la correspondance médicale de Fioravanti}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;editor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Carlino, Andrea and Michel Jeanneret}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2009}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Geneva}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Droz}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{french}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@book&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;berns2015&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{The Bible and Natural Philosophy in Renaissance Italy: Jewish and Christian Physicians in Search of Truth}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Berns, Andrew D.}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Cambridge}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Cambridge University Press}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{english}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;date&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2015}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@article&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;gabler2010&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Gabler, Hans Walter}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Theorizing the Digital Scholarly Edition}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;journal&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Literature Compass}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;volume&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{7}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;number&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;pages&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{43-56}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;doi&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{10.1111/j.1741-4113.2009.00675.x}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{english}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2010}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@book&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;findlen1994&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Possessing Nature: Museums, Collecting, and Scientific Culture in Early Modern Italy}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Findlen, Paula}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Berkeley}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{University of California Press}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{english}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;date&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{1994}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="नतज"&gt;नतीजे&lt;/h3&gt;
&lt;p&gt;
&lt;mark&gt;चौंकाने वाले हैं: 2,000 से ज़्यादा ग्रंथसूची-संदर्भ चंद दिनों में बदल गए।&lt;/mark&gt;
इस तरीक़े ने मेरे इनपुट प्रॉम्प्ट में दिखाए पैटर्न को सटीक ढंग से दोहराया ही नहीं, बल्कि ऐसे प्रविष्टि-प्रकार और फ़ील्ड-प्रकार भी सही-सही जोड़ दिए, जो इनपुट प्रॉम्प्ट में थे ही नहीं। दूसरे शब्दों में, &lt;code&gt;GPT-3&lt;/code&gt; &lt;code&gt;BibTeX&lt;/code&gt; में पूरी तरह धाराप्रवाह है। और मूलतः अंग्रेज़ी में प्रशिक्षित मॉडल के लिए शायद ज़्यादा हैरानी की बात यह कि उसने सारी भाषाएँ (रूसी, फ़्रांसीसी, इतालवी, लातीनी, यूनानी, जर्मन, स्पेनी वग़ैरह) पहचान लीं और हर बार सही &lt;code&gt;langid&lt;/code&gt; फ़ील्ड जोड़ा।&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;टिप्पणी&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;GPT-3 के इनपुट और आउटपुट का आकार फ़िलहाल सीमित है: यह अधिकतम 2048 भाषाई टोकन प्रोसेस कर सकता है। यह सीमा हटते ही यही काम शायद एक घंटे या उससे भी कम में हो जाएगा।&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;कुछ अप्रत्याशित ढंग से, GPT-3 ने ऐसी जानकारी भी जोड़ी जो मूल संदर्भों में नहीं थी।&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Baillot, Anne, and Anna Busch. “Editing for Man and Machine.” In &lt;em&gt;Users of Scholarly Editions: Editorial Anticipations of Reading, Studying and Consulting&lt;/em&gt;, Vol. 13. Variants (Journal of the European Society for Textual Scholarship). Leicester, 2015.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;मसलन, इस ग्रंथसूची-संदर्भ में GPT-3 ने उस ओपन-एक्सेस रिपॉज़िटरी (
) का स्थायी लिंक जोड़ दिया, जहाँ यह लेख पढ़ा जा सकता है – HAL रिपॉज़िटरी की बनाई ख़ास फ़ील्डें &lt;code&gt;HAL_ID&lt;/code&gt; और &lt;code&gt;HAL_VERSION&lt;/code&gt; समेत:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-BibTeX" data-lang="BibTeX"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@inproceedings&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;baillot2015&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Editing for Man and Machine}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Baillot, Anne and Busch, Anna}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;year&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;2015&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;booktitle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Users of Scholarly Editions: Editorial Anticipations of Reading, Studying and Consulting}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Leicester}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;series&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Variants (Journal of the European Society for Textual Scholarship)}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;volume&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;editor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Bruhn, Siglinde and Schreiber, Manfred}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{english}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;hal_id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{halshs-01233380}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;hal_version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{v1}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ये जोड़ बताते हैं कि
&lt;mark&gt;GPT-3 ग्रंथसूची-संदर्भ को सिर्फ़ पार्स नहीं करता, बल्कि जो कुछ उसने पहले सीखा है, उसके आधार पर उसे पूरा भी करता है।&lt;/mark&gt;
इस लिहाज़ से यह देखना दिलचस्प होगा कि GPT-3 के प्रशिक्षण के बाद की तारीख़ों वाले संदर्भों के साथ भी वह ऐसा ही करता है या नहीं…&lt;/p&gt;
&lt;h2 id="समए"&gt;सीमाएँ&lt;/h2&gt;
&lt;p&gt;पर GPT-3 बेदाग़ नहीं है। उस पर इंसान की निगरानी ज़रूरी है। उसकी एक जानी-मानी कमज़ोरी
है: कभी-कभी वह चीज़ें गढ़ लेता है और कुछ अटपटी धारणाएँ बना लेता है।&lt;/p&gt;
&lt;p&gt;मेरे प्रयोग में GPT-3 की असंगति के दौरे तब ज़ाहिर हुए, जब उसने अपने-आप एक लेखक का कुलनाम “Ruscelli” से बदलकर “Ruscello” कर दिया। तकनीकी तौर पर यह ग़लती नहीं है, क्योंकि आरंभिक आधुनिक काल के इतालवी कुलनाम बहुवचन या एकवचन में बिना भेद के इस्तेमाल हो सकते थे। लेकिन आज का रिवाज यह है कि कुलनाम बहुवचन में हो या एकवचन में, उसे जस का तस रखा जाए। आज कोई Machiavelli को Machiavello नहीं कहेगा, ठीक जैसे हमसे Rosselli नहीं, Rossello नाम इस्तेमाल करने की अपेक्षा की जाती है। क्या GPT-3 ने कालक्रम-बोध की कमी के कारण इस रिवाज को अनदेखा किया? या फिर उसने आसपास के कुलनामों के आधार पर धारणा बना ली, जो ग्रंथसूची के इस हिस्से में संयोग से सभी एकवचन में हैं (Bariletto, Cesano, Rossello)?
कौन जाने।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Bibtex" data-lang="Bibtex"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@book&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;rossello1565&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Della summa de’ secreti universali}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Rossello, Timoteo}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Venice}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Giovanni Bariletto}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{italian}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;date&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{1565}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;@book&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;ruscello1559&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{La seconda parte de’ secreti del Reverendo Donno Alessio Piemontese}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Ruscello, Girolamo}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Pesaro}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Bartolomeo Cesano}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;langid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{italian}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;date&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{1559}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="नषकरष"&gt;निष्कर्ष&lt;/h2&gt;
&lt;p&gt;चार साल के गहन सहयोग में लिखे गए,
150 से ज़्यादा निबंध न सिर्फ़ उस पांडुलिपि के बारे में अहम जानकारी देते हैं, जिसका हमने संपादन और अनुवाद किया, बल्कि बहुमूल्य ग्रंथसूची-सामग्री भी समेटे हैं।&lt;/p&gt;
&lt;p&gt;इन ग्रंथसूची-संदर्भों को एक डेटाबेस में जुटा लेने से संपादक पलक झपकते ग्रंथसूची का प्रारूप बदल सकते हैं, और इस जानकारी को मनचाहे ढंग से दिखाने की ज़्यादा छूट पा जाते हैं। यह डेटाबेस संस्करण और उसे संभव बनाने वाली परियोजना के बारे में भी बहुमूल्य जानकारी देता है, और शोधकर्ताओं के लिए विश्लेषण के नए दरवाज़े खोलता है। ऐसा डेटाबेस ऊँची सटीकता के साथ और रिकॉर्ड समय में पूरा किया जा सकता है।&lt;/p&gt;
&lt;p&gt;माना कि कुछ ग़लतियाँ घुस सकती हैं – ख़ास तौर पर GPT-3 की मतिभ्रम की प्रवृत्ति के कारण। लेकिन पूर्व-प्रशिक्षित भाषा मॉडलों के आने वाले संस्करण इस समस्या को कम कर देंगे।&lt;/p&gt;</description></item><item><title>Avviso | उन ख़बरों का प्रकाशन जिन्होंने हमें आधुनिक बनाया (1537—1743)</title><link>https://clementgodbarge.com/hi/project/map/</link><pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/project/map/</guid><description>&lt;p&gt;&lt;em&gt;Avviso&lt;/em&gt; परियोजना का मुख्य उद्देश्य है आरंभिक आधुनिक काल की उन 35,000 हस्तलिखित समाचार-पत्रिकाओं – जिन्हें &lt;em&gt;avvisi&lt;/em&gt; कहा जाता है – का डिजिटलीकरण, संरक्षण, सूचीकरण, संपादन, संदर्भीकरण और प्रसार, जो मेदिची संग्रह का हिस्सा थीं और अब फ़्लोरेंस के राज्य अभिलेखागार में रखी हैं।
लगभग 35,000 &lt;em&gt;avvisi&lt;/em&gt; – यानी आरंभिक आधुनिक काल की हस्तलिखित समाचार-पत्रिकाओं – का सूचीकरण, डिजिटलीकरण और प्रसार, Medici Archive Project के Medici Interactive Archive मंच के माध्यम से।&lt;/p&gt;</description></item><item><title>The Spy Who Wished Them Well</title><link>https://clementgodbarge.com/hi/project/book1/</link><pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/project/book1/</guid><description>&lt;p&gt;और जानकारी जल्द ही।&lt;/p&gt;</description></item><item><title>किफ़ायती संपादन</title><link>https://clementgodbarge.com/hi/project/dce/</link><pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/project/dce/</guid><description>&lt;p&gt;डिजिटल आलोचनात्मक संस्करण महँगे सौदे हैं। प्रतिलेखन, अनुवाद और टिप्पणी का जो श्रम उच्च-योग्य कार्यबल को करना पड़ता है, वह हज़ारों घंटों का काम है; उसके लिए भारी धन चाहिए, और ऊपर से लंबे समय तक संस्थागत सहारा।&lt;/p&gt;
&lt;p&gt;एक अर्थ में यह वरदान ही है कि डिजिटल मानविकी की चर्चित परियोजनाएँ अपने संचालन के लिए ज़रूरी भारी-भरकम धनराशि जुटा पाती हैं।&lt;/p&gt;
&lt;p&gt;लेकिन धनी फ़ाउंडेशनों, विश्वविद्यालयों और सरकारी एजेंसियों की उदारता पर इतनी निर्भरता, और लंबे अरसे तक बड़े मानव-संसाधन की ज़रूरत – यह भविष्य के लिए कोई टिकाऊ आर्थिक मॉडल नहीं है। ज़्यादा से ज़्यादा शोधकर्ता अगर प्राथमिक स्रोतों के महत्वाकांक्षी डिजिटल संस्करण बना भी पा रहे हैं, तो यह चलन अब भी मुट्ठी-भर धनी देशों का विशेषाधिकार बना हुआ है, और इस तरह उनके सांस्कृतिक वर्चस्व को और पुख़्ता करता है।&lt;/p&gt;
&lt;p&gt;दुनिया भर के ऐतिहासिक दस्तावेज़ों को व्यापक जनता तक पहुँचाना है, तो
&lt;mark&gt;डिजिटल आलोचनात्मक संस्करणों की लागत कई गुना नहीं, कई दर्जे घटनी चाहिए&lt;/mark&gt;
।&lt;/p&gt;
&lt;p&gt;ब्लॉग पोस्टों की इस शृंखला में मैं उन अलग-अलग तरीक़ों और तकनीकी ईंटों का जायज़ा लेता हूँ, जिनकी मदद से दुनिया भर के शोधकर्ता प्राथमिक स्रोत ज़्यादा तेज़ी से और न्यूनतम ख़र्च में प्रकाशित कर सकते हैं।&lt;/p&gt;
&lt;p&gt;ख़ास तौर पर मैं मशीन लर्निंग, ब्लॉकचेन और विकेंद्रीकृत भंडारण जैसी तकनीकों को परखूँगा।&lt;/p&gt;</description></item><item><title>डिजिटल विद्वत्तापूर्ण संस्करणों में मार्कअप का स्वचालन</title><link>https://clementgodbarge.com/hi/post/gpt3/</link><pubDate>Mon, 22 Nov 2021 18:15:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/gpt3/</guid><description>&lt;h1 id="भमक"&gt;भूमिका&lt;/h1&gt;
&lt;p&gt;तिजोरी ख़ाली किए बिना डिजिटल विद्वत्तापूर्ण संस्करण कैसे बनाए जाएँ? किफ़ायती संपादन पर समर्पित शृंखला की इस पहली पोस्ट में मैं जायज़ा लेता हूँ कि सिमेंटिक मार्कअप जैसे संपादकीय कामों के स्वचालन में पूर्व-प्रशिक्षित भाषा मॉडल क्या भूमिका निभा सकते हैं।&lt;/p&gt;
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;सामग्री तालिका&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#परम-क-शरम"&gt;प्रेम का श्रम&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ऊच-दहलज"&gt;ऊँची दहलीज़&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#टरसफरमर-सवचलन-क-सबस-सरल-रसत"&gt;ट्रांसफ़ॉर्मर: स्वचालन का सबसे सरल रास्ता?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#codex"&gt;Codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#openai-स-आग"&gt;OpenAI से आगे&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#परयग-1--पठ-क-वरगकरण"&gt;प्रयोग 1 – पाठ का वर्गीकरण&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#परमपट-इजनयरग"&gt;प्रॉम्प्ट इंजीनियरिंग&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#परकषण"&gt;परीक्षण&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#नतज"&gt;नतीजा&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#परयग-2--समटक-मरकअप"&gt;प्रयोग 2 – सिमेंटिक मार्कअप&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#परमपट-इजनयरग-1"&gt;प्रॉम्प्ट इंजीनियरिंग&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#परकषण-1"&gt;परीक्षण&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;h1 id="समसय"&gt;समस्या&lt;/h1&gt;
&lt;h2 id="परम-क-शरम"&gt;प्रेम का श्रम&lt;/h2&gt;
&lt;p&gt;प्रेम में हिसाब कौन रखता है… कहावत तो यही कहती है। डिजिटल विद्वत्तापूर्ण संस्करणों पर यह ख़ास तौर पर लागू होती है: उन्हें तैयार करने में प्रतिलेखन, अनुवाद और टिप्पणी का जो काम लगता है, वह हज़ारों घंटों का है, और – जैसा कि
के मामले में हुआ – सैकड़ों उच्च-योग्य सहयोगी उसे अंजाम देते हैं।&lt;/p&gt;
&lt;p&gt;एक अर्थ में यह वरदान ही है कि डिजिटल मानविकी की चर्चित परियोजनाएँ अपने संचालन के लिए ज़रूरी भारी-भरकम धनराशि जुटा पाती हैं। लेकिन धनी फ़ाउंडेशनों, विश्वविद्यालयों और सरकारी एजेंसियों की उदारता पर इतनी निर्भरता, और लंबे अरसे तक बड़े मानव-संसाधन की ज़रूरत – यह भविष्य के लिए कोई टिकाऊ आर्थिक मॉडल नहीं है।&lt;/p&gt;
&lt;p&gt;दरअसल, अगर हम चाहते हैं कि दुनिया भर के शोधकर्ता ऐतिहासिक दस्तावेज़ों को व्यापक जनता तक पहुँचाएँ, तो
&lt;mark&gt;डिजिटल आलोचनात्मक संस्करणों की लागत कई गुना नहीं, कई दर्जे घटनी चाहिए&lt;/mark&gt;
।&lt;/p&gt;
&lt;h2 id="ऊच-दहलज"&gt;ऊँची दहलीज़&lt;/h2&gt;
&lt;p&gt;कुछ विरोधाभासी ढंग से,
&lt;mark&gt;समाधान
जैसी श्रमसाध्य परियोजनाओं से ही आ सकता है, क्योंकि वे एक बहुमूल्य प्रशिक्षण-सामग्री हैं&lt;/mark&gt;
– डिजिटल संपादन के सबसे खीज पैदा करने वाले और दोहराव भरे कामों, जैसे मार्कअप, को स्वचालित करने के लिए।&lt;/p&gt;
&lt;p&gt;ऐसा नहीं कि मार्कअप ग़ैर-ज़रूरी है। सच तो यह है कि
&lt;mark&gt;मार्कअप किसी भी गंभीर डिजिटल विद्वत्तापूर्ण परियोजना का अनिवार्य अंग बन चुका है।&lt;/mark&gt;
द्वारा मानकीकृत यह हमें दस्तावेज़ और उसके ज़रिये आने वाले पाठ के अधिक से अधिक पहलू दर्ज करने देता है: संरचना, हाशिये की टिप्पणियाँ, काट-छाँट, पाठांतर, काग़ज़ का प्रकार, धब्बे, लिखावट… जो चाहे गिन लीजिए।&lt;/p&gt;
&lt;p&gt;
से लिया गया यह उदाहरण दिखाता है कि मार्कअप पाठ को अतिरिक्त जानकारी (श्रेणी, संरचना, सिमेंटिक क्षेत्र, काट-छाँट आदि) से कैसे समृद्ध करता है, और अंततः डिजिटल संस्करणों को उनके काग़ज़ी पूर्वजों पर एक बड़ी बढ़त देता है।&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Plain Text &lt;/th&gt;
&lt;th&gt; XML Markup&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Pour rompre grenades et donner
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;violence aux artifices de foeu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mects parmy la pouldre et la sixiesme
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;partye dicelle de vif argent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p008r_2&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;categories=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;arms and armor&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;Pour rompre &lt;span class="nt"&gt;&amp;lt;wp&amp;gt;&lt;/span&gt;grenades&lt;span class="nt"&gt;&amp;lt;/wp&amp;gt;&lt;/span&gt; et donner&lt;span class="nt"&gt;&amp;lt;lb/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;violence aux &lt;span class="nt"&gt;&amp;lt;wp&amp;gt;&lt;/span&gt;artifices de foeu&lt;span class="nt"&gt;&amp;lt;/wp&amp;gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;ab&amp;gt;&lt;/span&gt;Mects parmy la &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;pouldre&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;del&amp;gt;&amp;lt;ms&amp;gt;&lt;/span&gt;six fois autant&lt;span class="nt"&gt;&amp;lt;/ms&amp;gt;&lt;/span&gt; de
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;vif argent&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&amp;lt;/del&amp;gt;&amp;lt;lb/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;del&amp;gt;&lt;/span&gt;et&lt;span class="nt"&gt;&amp;lt;/del&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;ms&amp;gt;&lt;/span&gt;la sixiesme partye&lt;span class="nt"&gt;&amp;lt;/ms&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dicelle de &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;vif argent&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&amp;lt;/ab&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;यह जानकारी अभिलेखीय उद्देश्यों के लिए तो मूल्यवान है ही, संश्लेषण और विश्लेषण के लिए भी है – जैसा मैं पहले कई मौक़ों पर दिखा चुका हूँ। फिर भी, इस तरह की टिप्पणी में बेहद समय लग सकता है, क्योंकि एक ही पाठ अक्सर कई रूपों में उपलब्ध कराना पड़ता है: अनुवाद के रूप में, प्रतिलेखन के रूप में, आधुनिकीकृत रूप में, वग़ैरह।&lt;/p&gt;
&lt;h1 id="समधन"&gt;समाधान&lt;/h1&gt;
&lt;h2 id="टरसफरमर-सवचलन-क-सबस-सरल-रसत"&gt;ट्रांसफ़ॉर्मर: स्वचालन का सबसे सरल रास्ता?&lt;/h2&gt;
&lt;p&gt;2020 में
ने ख़ूब ढोल-नगाड़ों के साथ सामान्य-उद्देश्य वाले बड़े पैमाने के भाषा मॉडलों का अपना नया परिवार जारी किया – GPT-3, यानी “Generative Pre-trained Transformer 3”। ट्रांसफ़ॉर्मर कृत्रिम बुद्धि में हाल की एक बड़ी उपलब्धि हैं। वे नए काम प्रभावशाली रफ़्तार से सीखते हैं – बस एक प्रॉम्प्ट पढ़कर और बहुत थोड़े-से उदाहरण देखकर। उन्हें किसी ख़ास डेटासेट से अतिरिक्त प्रशिक्षण (फ़ाइन-ट्यूनिंग) भी दिया जा सकता है, जिससे प्रतिक्रिया-समय और सटीकता दोनों सुधरते हैं। इसीलिए GPT-3 और उस जैसे ट्रांसफ़ॉर्मरों को
कहा जाता है।&lt;/p&gt;
&lt;p&gt;OpenAI का दावा है कि GPT-3 में रिकॉर्ड 175 अरब पैरामीटर हैं और उसे 570 GB से ज़्यादा पाठ पर प्रशिक्षित किया गया है, जिसका ज़्यादातर हिस्सा संभवतः
से लिए गए अंग्रेज़ी दस्तावेज़ हैं। अपने विशाल आकार के बल पर GPT-3 ने इस क्षेत्र में नया मानदंड स्थापित कर दिया है: बिना किसी अतिरिक्त तैयारी के वह तरह-तरह के काम बेचैन कर देने वाली सजीवता से कर डालता है। वह विश्वसनीय
लिखता है, चैट रूम में
,
,
, दस्तावेज़ों का अनुवाद करता है, तकनीकी शब्दजाल समझाता है, वग़ैरह।&lt;/p&gt;
&lt;p&gt;मई 2021 से OpenAI के API तक शुरुआती पहुँच होने के कारण मैं मॉडल की क्षमता को कई कथित रूप से कठिन कामों पर आज़मा सका हूँ: फ़्रांसीसी कविता और नव-लातीनी पाठों का अंग्रेज़ी अनुवाद, उपमाओं की व्याख्या, यहाँ तक कि कांट के &lt;em&gt;Groundwork for a Metaphysics of Morals&lt;/em&gt; के तीसरे खंड को सात साल के बच्चे के लिए सरल बनाना (हालाँकि वह कुछ ख़ास जमा नहीं)।&lt;/p&gt;
&lt;h3 id="codex"&gt;Codex&lt;/h3&gt;
&lt;p&gt;GPT-3 के ताज़ा विकासों में से एक कंप्यूटर भाषाओं पर केंद्रित है। &lt;em&gt;Codex&lt;/em&gt; नाम का यह मॉडल प्राकृतिक भाषा को कंप्यूटर भाषा में और कंप्यूटर भाषा को प्राकृतिक भाषा में बदलता है। मिसाल के तौर पर, अगर मुझे ऐसा रेगुलर एक्सप्रेशन चाहिए जो “सिर्फ़ बड़े अक्षर से शुरू होने वाले शब्द ढूँढ़े”, तो GPT-3 झट से इसे एक काम करने वाले रेगुलर एक्सप्रेशन में बदल देता है: &lt;code&gt;[A-Z]+\w+&lt;/code&gt;।&lt;/p&gt;
&lt;p&gt;OpenAI का दावा है कि &lt;em&gt;Codex&lt;/em&gt; एक दर्जन कंप्यूटर भाषाओं के साथ काम कर सकता है, जिनमें Python, JavaScript, Go, Perl, PHP, Ruby और Swift शामिल हैं। छद्म-कोड को सहजता से कोड में बदलकर &lt;em&gt;Codex&lt;/em&gt; लोगों को इस लायक़ बनाता है कि वे किसी कंप्यूटर भाषा के थकाऊ सिंटैक्स पर नहीं, बल्कि उन तार्किक चरणों और रणनीतियों पर ध्यान दें, जिनसे ऐप्लिकेशन समस्याएँ सुलझाते हैं।&lt;/p&gt;
&lt;h3 id="openai-स-आग"&gt;OpenAI से आगे&lt;/h3&gt;
&lt;p&gt;ज़ाहिर है, OpenAI मैदान में अकेला खिलाड़ी नहीं है। जैसा पहले कहा, Beijing Academy for Artificial Intelligence ने 2021 में उससे भी बड़े और अधिक सक्षम मॉडल &lt;em&gt;Wu Dao 2&lt;/em&gt; की घोषणा की। Nvidia और Microsoft ने हाथ मिलाकर &lt;em&gt;Megatron-Turing NLG 530B&lt;/em&gt; नाम का – नाम के अनुरूप ही विशाल – मॉडल बनाया।
और
जैसे छोटे स्टार्ट-अप भी जनता को API उपलब्ध कराते हैं।
जैसी ओपन-सोर्स पहलों का ज़िक्र भी ज़रूरी है। एआई की दुनिया, ज़ाहिर है, बहुत तेज़ी से बदल रही है; इस क्षेत्र की नई पहलों पर नज़र रखने के लिए
देखिए।&lt;/p&gt;
&lt;h1 id="परयग"&gt;प्रयोग&lt;/h1&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;टिप्पणी&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;इन प्रयोगों का उद्देश्य संपादकीय कामों के भरोसेमंद स्वचालन का सबसे किफ़ायती रास्ता ढूँढ़ना है। कोई कह सकता है कि इनमें से कुछ काम पर्यवेक्षित लर्निंग एल्गोरिद्मों से भी स्वचालित किए जा सकते हैं। इस परिकल्पना को हम आगे किसी पोस्ट में परखेंगे।&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;क्या GPT-3 जैसा ट्रांसफ़ॉर्मर, मसलन, सोलहवीं सदी की किसी तकनीकी और वैज्ञानिक पांडुलिपि पर टिप्पणी करना सीख सकता है?&lt;/p&gt;
&lt;h2 id="परयग-1--पठ-क-वरगकरण"&gt;प्रयोग 1 – पाठ का वर्गीकरण&lt;/h2&gt;
&lt;p&gt;शुरुआत अपेक्षाकृत सरल चीज़ से करते हैं। “few-shot learner” होने के नाते GPT-3 को जल्दी समझ लेना चाहिए कि हमारी संपादकीय टीम ने Ms Fr 640 की प्रविष्टियों को कैसे वर्गीकृत किया है।&lt;/p&gt;
&lt;h3 id="परमपट-इजनयरग"&gt;प्रॉम्प्ट इंजीनियरिंग&lt;/h3&gt;
&lt;p&gt;उसे प्रशिक्षित करने के लिए मैंने एक बहुत ही न्यूनतम प्रॉम्प्ट इस्तेमाल किया और उदाहरण के तौर पर सादे पाठ की चार छोटी प्रविष्टियाँ चुनीं – जिनमें “medicine”, “arms and armor” और “painting” की एक-एक प्रविष्टि शामिल थी।&lt;/p&gt;
&lt;h3 id="परकषण"&gt;परीक्षण&lt;/h3&gt;
&lt;p&gt;फिर मैंने एक और अंश कॉपी किया, जो शुरुआती क्रम में नहीं था:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Working neatly
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Never put down, if you can, two colors one on top of the other.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;But next, having made your design carefully, keep the place of shadows for them alone,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;amp; also separately that of lights &amp;amp; highlights, without layering one color all over &amp;amp; then highlighting or else shading on it.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;And in this way, you further your work, economize your colors &amp;amp; work neatly.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Which is the reason that, the colors not being muddled nor mixed together, they do not die &amp;amp; you soften the colors better, since they are not so thick.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;आउटपुट विषय-वस्तु से पूरी तरह मेल खाता है:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;categories&lt;/span&gt;&lt;span class="err"&gt;=&amp;#34;painting&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;अब अगर ऐसी प्रविष्टि आज़माएँ, जिसकी श्रेणी GPT-3 को प्रशिक्षित करने के लिए चुने गए शुरुआती पाठों में शामिल ही नहीं थी, तो नतीजा हैरान करता है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;categories&lt;/span&gt;&lt;span class="err"&gt;=&amp;#34;jewelry&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="नतज"&gt;नतीजा&lt;/h3&gt;
&lt;p&gt;Ms. Fr. 640 के हमारे संस्करण में “jewelry” श्रेणी है ही नहीं। संपादकीय टीम ने “Stones” की व्यापक श्रेणी को
। फिर भी GPT-3 की सूझ अच्छी है, और यह संकेत देती है कि थोड़े और प्रशिक्षण से वह Ms. Fr. 640 की किसी भी प्रविष्टि को – और शायद सोलहवीं सदी के मिलते-जुलते तकनीकी पाठों की प्रविष्टियों को भी – वर्गीकृत करना सीख सकता है।&lt;/p&gt;
&lt;h2 id="परयग-2--समटक-मरकअप"&gt;प्रयोग 2 – सिमेंटिक मार्कअप&lt;/h2&gt;
&lt;p&gt;अब दहलीज़ थोड़ी ऊँची करते हैं। अगर GPT-3 जैसे ट्रांसफ़ॉर्मर पाठों को ख़ास संपादकीय कसौटियों के अनुसार वर्गीकृत करना सीख सकते हैं, तो क्या वे पाठ के कुछ मार्कअप की पहचान भी कर सकते हैं?&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;टिप्पणी&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;&lt;em&gt;Secrets of Craft and Nature&lt;/em&gt; सिमेंटिक और संरचनात्मक लेबलों का
पेश करता है। दुर्भाग्य से GPT-3 छवियाँ प्रोसेस नहीं करता, जबकि
जैसी दूसरी परियोजनाएँ करती हैं। संभावना है कि GPT के आने वाले संस्करणों में यह क्षमता होगी, जो किसी दस्तावेज़ के ज़्यादातर संरचनात्मक और भौतिक पहलुओं को पहचानने के लिए ज़रूरी है। हम इन ख़ास टैगों को छोड़ देंगे और उस मार्कअप पर ध्यान देंगे, जिसके लिए छवि-पहचान की ज़रूरत नहीं।&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="परमपट-इजनयरग-1"&gt;प्रॉम्प्ट इंजीनियरिंग&lt;/h3&gt;
&lt;p&gt;सिमेंटिक टैगों में जानवरों, पौधों, स्थान-नामों, इंद्रिय-अनुभवों आदि के संदर्भ शामिल हैं। प्रशिक्षण-प्रॉम्प्ट में मैंने संस्करण से कुछ उदाहरण चुने:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--Input prompt--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The following is a list of words and their corresponding semantic tags
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cannons: &lt;span class="nt"&gt;&amp;lt;wp&amp;gt;&lt;/span&gt;cannons&lt;span class="nt"&gt;&amp;lt;/wp&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;powder: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;powder&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;flasks: &lt;span class="nt"&gt;&amp;lt;tl&amp;gt;&lt;/span&gt;flasks&lt;span class="nt"&gt;&amp;lt;/tl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wooden: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;wooden&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iron: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;iron&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parchment: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;parchment&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;goats: &lt;span class="nt"&gt;&amp;lt;al&amp;gt;&lt;/span&gt;goats&lt;span class="nt"&gt;&amp;lt;/al&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lambs: &lt;span class="nt"&gt;&amp;lt;al&amp;gt;&lt;/span&gt;lambs&lt;span class="nt"&gt;&amp;lt;/al&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;leather: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;leather&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;earth: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;earth&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fine fatty earth: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;fine fatty earth&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Venice: &lt;span class="nt"&gt;&amp;lt;pl&amp;gt;&lt;/span&gt;Venice&lt;span class="nt"&gt;&amp;lt;/pl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Flemish: &lt;span class="nt"&gt;&amp;lt;pl&amp;gt;&lt;/span&gt;Flemish&lt;span class="nt"&gt;&amp;lt;/pl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;almond: &lt;span class="nt"&gt;&amp;lt;pa&amp;gt;&lt;/span&gt;almond&lt;span class="nt"&gt;&amp;lt;/pa&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;almond oil: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;pa&amp;gt;&lt;/span&gt;almond&lt;span class="nt"&gt;&amp;lt;/pa&amp;gt;&lt;/span&gt; oil&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;walnuts skin: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;pa&amp;gt;&lt;/span&gt;walnuts&lt;span class="nt"&gt;&amp;lt;/pa&amp;gt;&lt;/span&gt; skin&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;molten lead: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;molten lead&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;today: &lt;span class="nt"&gt;&amp;lt;tmp&amp;gt;&lt;/span&gt;today&lt;span class="nt"&gt;&amp;lt;/tmp&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;In the past: &lt;span class="nt"&gt;&amp;lt;tmp&amp;gt;&lt;/span&gt;In the past&lt;span class="nt"&gt;&amp;lt;/tmp&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Clockmakers: &lt;span class="nt"&gt;&amp;lt;pro&amp;gt;&lt;/span&gt;Clockmakers&lt;span class="nt"&gt;&amp;lt;/pro&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;red copper: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;red copper&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;crucible: &lt;span class="nt"&gt;&amp;lt;tl&amp;gt;&lt;/span&gt;crucible&lt;span class="nt"&gt;&amp;lt;/tl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bellows: &lt;span class="nt"&gt;&amp;lt;tl&amp;gt;&lt;/span&gt;bellows&lt;span class="nt"&gt;&amp;lt;/tl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;charcoal: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;charcoal&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;founders: &lt;span class="nt"&gt;&amp;lt;pro&amp;gt;&lt;/span&gt;founders&lt;span class="nt"&gt;&amp;lt;/pro&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="परकषण-1"&gt;परीक्षण&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Davinci-codex&lt;/code&gt; मॉडल के साथ कुछ आसान शब्द आज़माते हैं, जैसे &lt;em&gt;Apothecary&lt;/em&gt;, &lt;em&gt;smoke&lt;/em&gt;, &lt;em&gt;glassmakers&lt;/em&gt;, &lt;em&gt;latten&lt;/em&gt; और &lt;em&gt;snake&lt;/em&gt;। नतीजे तुरंत और बेदाग़ हैं:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--Output--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Apothecary: &lt;span class="nt"&gt;&amp;lt;pro&amp;gt;&lt;/span&gt;Apothecary&lt;span class="nt"&gt;&amp;lt;/pro&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;smoke: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;smoke&lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;glassmakers: &lt;span class="nt"&gt;&amp;lt;pro&amp;gt;&lt;/span&gt;glassmakers&lt;span class="nt"&gt;&amp;lt;/pro&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;latten: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;latten&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;snake: &lt;span class="nt"&gt;&amp;lt;al&amp;gt;&lt;/span&gt;snake&lt;span class="nt"&gt;&amp;lt;/al&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;कठिन परीक्षा में &lt;em&gt;copper plates&lt;/em&gt;, &lt;em&gt;walnut oil&lt;/em&gt; और &lt;em&gt;wood block&lt;/em&gt; जैसे यौगिक शब्द आते हैं। इस परीक्षा का मक़सद यह देखना है कि GPT-3 नेस्टेड टैगों को ठीक से सँभालता है या नहीं।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--Output--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;copper plates: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;copper plates&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;walnut oil: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;pa&amp;gt;&lt;/span&gt;walnut&lt;span class="nt"&gt;&amp;lt;/pa&amp;gt;&lt;/span&gt; oil&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wood block: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&lt;/span&gt;wood block&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;पर नतीजे मिले-जुले हैं: &lt;code&gt;Davinci-codex&lt;/code&gt; ने सिर्फ़ &lt;em&gt;walnut oil&lt;/em&gt; को सही लेबल किया और &lt;em&gt;copper plates&lt;/em&gt; तथा &lt;em&gt;wood block&lt;/em&gt; में &lt;code&gt;tl&lt;/code&gt; और &lt;code&gt;m&lt;/code&gt; के नेस्टेड टैग पकड़ने में चूक गया। हालाँकि, जैसा अगली परीक्षा नीचे दिखाती है, बेहतर प्रशिक्षण-प्रॉम्प्ट से इन ग़लतियों को कम किया जा सकता है। नेस्टेड टैगों के पाँच और उदाहरण जोड़ने के बाद &lt;code&gt;Davinci-codex&lt;/code&gt; ने लगभग बेदाग़ नतीजा दिया, बस एक ग़लती के साथ (&lt;em&gt;oil paintbrushes&lt;/em&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--Output--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cannon powder: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;wp&amp;gt;&lt;/span&gt;cannon&lt;span class="nt"&gt;&amp;lt;/wp&amp;gt;&lt;/span&gt; powder&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arquebus powder: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;wp&amp;gt;&lt;/span&gt;arquebus&lt;span class="nt"&gt;&amp;lt;/wp&amp;gt;&lt;/span&gt; powder&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;oil paintbrushes: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;al&amp;gt;&lt;/span&gt;oil&lt;span class="nt"&gt;&amp;lt;/al&amp;gt;&lt;/span&gt; paintbrushes&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sheep footbones: &lt;span class="nt"&gt;&amp;lt;m&amp;gt;&amp;lt;al&amp;gt;&lt;/span&gt;sheep&lt;span class="nt"&gt;&amp;lt;/al&amp;gt;&lt;/span&gt; footbones&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bronze mortar: &lt;span class="nt"&gt;&amp;lt;tl&amp;gt;&amp;lt;m&amp;gt;&lt;/span&gt;bronze&lt;span class="nt"&gt;&amp;lt;/m&amp;gt;&lt;/span&gt; mortar&lt;span class="nt"&gt;&amp;lt;/tl&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="नषकरष"&gt;निष्कर्ष&lt;/h1&gt;
&lt;p&gt;यह याद रखना ज़रूरी है कि ये परीक्षण छोटे-छोटे पाठ-खंडों पर किए गए। मेरा अनुमान है कि उदाहरणों और प्रॉम्प्ट में ज़्यादा संदर्भ देने पर GPT-3 मॉडल और भी बेहतर नतीजे देंगे। इसके अलावा, ख़ास प्रशिक्षण-डेटासेट से मॉडल की फ़ाइन-ट्यूनिंग लेबलिंग की सटीकता को निस्संदेह और बढ़ाएगी।&lt;br&gt;
पूर्व-प्रशिक्षित भाषा मॉडलों की विश्वसनीयता साबित करने के लिए ये प्रयोग अभी बड़े पैमाने पर दोहराए जाने बाक़ी हैं, फिर भी हम इतना निष्कर्ष निकाल सकते हैं कि
&lt;mark&gt;यह तरीक़ा संपादकों को टिप्पणी के कई काम चंद आसान क़दमों में स्वचालित करने देता है, और इस प्रक्रिया में समय और धन की भारी बचत की संभावना रखता है।&lt;/mark&gt;
&lt;/p&gt;</description></item><item><title>पांडुलिपियों का विज़ुअलाइज़ेशन 2 (अपडेट)</title><link>https://clementgodbarge.com/hi/post/treemap2/</link><pubDate>Sat, 20 Nov 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/treemap2/</guid><description>&lt;p&gt;वादे के मुताबिक़,
में पेश किए गए इंटरैक्टिव ट्रीमैप का नया संस्करण – इस बार देखने के दो मोड के साथ।&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;टिप्पणी&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;बेहतर अनुभव के लिए वेबपेज की सेटिंग Light मोड में रखें (ऊपर दाईं ओर चंद्रमा के आइकन पर क्लिक करें)।&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;head&gt;
&lt;meta charset="UTF-8" /&gt;
&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel="preconnect" href="https://fonts.gstatic.com" /&gt;
&lt;link
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&amp;display=swap"
rel="stylesheet"
/&gt;
&lt;link rel="stylesheet" href="css/index.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-treemap.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-tooltip.css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="stacked"&gt;
&lt;div class="switch"&gt;
&lt;input
type="checkbox"
name="group-by-category-switch"
id="group-by-category-switch"
checked
/&gt;
&lt;label for="group-by-category-switch"&gt; Group folios by category &lt;/label&gt;
&lt;/div&gt;
&lt;div id="treemap"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js" integrity="sha384-CjloA8y00+1SDAUkjs099PVfnY2KmDC2BZnws9kh8D/lX1s46w6EPhpXdqMfjK6i" crossorigin="anonymous" referrerpolicy="no-referrer"&gt;&lt;/script&gt;
&lt;script src="js/vis-treemap.js"&gt;&lt;/script&gt;
&lt;script src="js/vis-tooltip.js"&gt;&lt;/script&gt;
&lt;script src="js/index.js"&gt;&lt;/script&gt;
&lt;/body&gt;</description></item><item><title>अभिलेखागार का एक दृश्य ब्राउज़र</title><link>https://clementgodbarge.com/hi/post/treemap/</link><pubDate>Sun, 20 Jun 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/treemap/</guid><description>&lt;h1 id="समसय"&gt;समस्या&lt;/h1&gt;
&lt;p&gt;डिजिटल संस्करण एक विरोधाभास से ग्रस्त हैं: एक ओर वे दुरूह दस्तावेज़ों को व्यापक जनता तक पहुँचाते हैं, दूसरी ओर उनके अभौतिक हो जाने से जो इंद्रिय-अनुभव खो जाता है, वह पाठकों को भटका देता है, यहाँ तक कि उन्हें सामग्री से जुड़ने से हतोत्साहित भी कर देता है। दस्तावेज़ों के विशाल भंडारों में रास्ता ढूँढ़ना बोझिल और डराने वाला काम बन जाता है। यह सिर्फ़ उन पाठकों की बात नहीं है जिन्हें अभिलेखागार अनुसंधान का अनुभव नहीं; संज्ञानात्मक अक्षमताओं से प्रभावित पाठकों के लिए भी यह उतना ही सच है।&lt;/p&gt;
&lt;h1 id="समधन"&gt;समाधान&lt;/h1&gt;
&lt;p&gt;यहीं अभिलेखीय मेटाडेटा हमारे काम आ सकता है। दरअसल ऐसे डेटा से हम इंटरैक्टिव दृश्य-अमूर्तन रच सकते हैं, जो पाठकों को एक वैकल्पिक इंद्रिय-सहारा देते हैं और इस तरह सुविधा और सुगमता दोनों बढ़ाते हैं। अभिलेखागार को आँखों से घूमने लायक़ बनाने के लिए एक ट्रीमैप – या कोई भी आरेख जो श्रेणीबद्ध डेटा को कुशलता से खोलकर दिखाए – काम कर जाता है।&lt;/p&gt;
&lt;h1 id="परयग"&gt;प्रयोग&lt;/h1&gt;
&lt;p&gt;मेरा पहला प्रयोग &lt;code&gt;D3.js&lt;/code&gt; के लिए बने
को अपनाता है और उसमें हाइपरलिंक जोड़ता है। यह पांडुलिपि BnF Ms Fr 640, उसके फ़ोलियो, और हर फ़ोलियो के भीतर की प्रविष्टियों को दर्शाता है। रंग प्रमुख श्रेणी दिखाते हैं। हर प्रविष्टि पर कर्सर ले जाने से और जानकारी मिलती है, पांडुलिपि का हाइपरलिंक भी।&lt;br&gt;
इस तरह ट्रीमैप एक इंटरैक्टिव दृश्य अनुक्रमणिका बन जाता है, जो पाठकों को बहुत तेज़ और सजीव झलक देता है – न सिर्फ़ पांडुलिपि की विषय-वस्तु की, बल्कि हर फ़ोलियो और हर प्रविष्टि के आकार की भी।&lt;br&gt;
&lt;del&gt;आने वाले महीनों में मैं इस विचार पर प्रयोग जारी रखूँगा, दूसरे आरेख और दूसरी श्रेणी-व्यवस्थाएँ आज़माते हुए… इंतज़ार कीजिए!&lt;/del&gt; ट्रीमैप के नए संस्करण के लिए
क्लिक करें।&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;टिप्पणी&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;बेहतर अनुभव के लिए वेबपेज की सेटिंग Light मोड में रखें (ऊपर दाईं ओर चंद्रमा के आइकन पर क्लिक करें)।&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;head&gt;
&lt;meta charset="UTF-8" /&gt;
&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel="preconnect" href="https://fonts.gstatic.com" /&gt;
&lt;link
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&amp;display=swap"
rel="stylesheet" /&gt;
&lt;link rel="stylesheet" href="css/index.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-treemap.css" /&gt;
&lt;link rel="stylesheet" href="css/vis-tooltip.css" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;Click any cell to zoom in, or the top to zoom out.&lt;/p&gt;
&lt;div id="treemap"&gt;&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js" integrity="sha384-CjloA8y00+1SDAUkjs099PVfnY2KmDC2BZnws9kh8D/lX1s46w6EPhpXdqMfjK6i" crossorigin="anonymous" referrerpolicy="no-referrer"&gt;&lt;/script&gt;
&lt;script src="js/vis-treemap.js"&gt;&lt;/script&gt;
&lt;script src="js/vis-tooltip.js"&gt;&lt;/script&gt;
&lt;script src="js/index.js"&gt;&lt;/script&gt;
&lt;/body&gt;</description></item><item><title>एक नज़र में पूरा अभिलेखागार</title><link>https://clementgodbarge.com/hi/post/dashboard/</link><pubDate>Mon, 24 May 2021 16:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/dashboard/</guid><description>&lt;h1 id="समसय"&gt;समस्या&lt;/h1&gt;
&lt;p&gt;ऐतिहासिक अभिलेखागार डरावनी हद तक अस्त-व्यस्त हो सकते हैं।
का &lt;em&gt;Mediceo del Principato&lt;/em&gt; इसकी सटीक मिसाल है। उसका बस एक छोटा-सा हिस्सा सूचीबद्ध है, और उसके बहुत-से दस्तावेज़ बिना किसी ज़ाहिर वजह के 6,500 से ज़्यादा जिल्दों में बिखरे पड़े हैं। मुश्किल यहीं ख़त्म नहीं होती: अभिलेखागार एक बार में सीमित संख्या में ही जिल्दें (या &lt;em&gt;filze&lt;/em&gt; – फ़ाइल/बस्ता – जैसा वहाँ कहते हैं) देखने देता है। सामान्य दिनों में यह सीमा प्रतिदिन 4 &lt;em&gt;filze&lt;/em&gt; की है। महामारी के दौर में यह घटकर हर दो हफ़्ते में 4 रह गई है। विस्तृत सूचियों के अभाव में अभिलेखागार का विशाल आकार शोधकर्ताओं को मजबूर करता है कि वे मनचाहे दस्तावेज़ जल्दी ढूँढ़ने की रणनीतियाँ गढ़ें।&lt;/p&gt;
&lt;h1 id="समधन"&gt;समाधान&lt;/h1&gt;
&lt;p&gt;कुछ लोग क़िस्मत पर छोड़ देते हैं; कुछ अन्य कालक्रम, प्राप्तकर्ता, लेखक, अभिलेख-समूह के उद्गम, भाषा वग़ैरह के आधार पर सोच-समझकर अंदाज़ा लगाने की कोशिश भी करते हैं। लेकिन इन सारे चरों को एक साथ &lt;em&gt;देखने&lt;/em&gt; से अभिलेखागार की बनावट के अप्रत्याशित पैटर्न उभर सकते हैं और हमारे अनुमान बेहतर हो सकते हैं। मेरा अनुभव कहता है कि जो मेटाडेटा शोधकर्ता आम तौर पर किसी स्प्रेडशीट में इकट्ठा करते हैं, उसे ग्राफ़ में उतार दिया जाए तो अभिलेखागार में स्थिति-बोध काफ़ी बढ़ जाता है।&lt;/p&gt;
&lt;h1 id="परयग"&gt;प्रयोग&lt;/h1&gt;
&lt;p&gt;मेरा वर्तमान शोध सोलहवीं सदी के एक जासूस के पत्र-व्यवहार पर केंद्रित है। उसके पत्र सैकड़ों &lt;em&gt;filze&lt;/em&gt; में फैले हुए हैं। वे अलग-अलग पहचानों से, अलग-अलग और कभी-कभी अप्रत्याशित प्राप्तकर्ताओं को, अलग-अलग जगहों से लिखे गए हैं, और भी बहुत कुछ। जिन &lt;em&gt;filze&lt;/em&gt; में अपेक्षित पत्र मिलने की संभावना ज़्यादा है, उन्हें ढूँढ़ने के लिए मैंने एक डैशबोर्ड बनाया है – इंटरैक्टिव डेटा विज़ुअलाइज़ेशन का एक वेब ऐप्लिकेशन (
) – जो हर तरह के डेटा को, भौगोलिक और कालक्रमिक जानकारी समेत, अभिलेख-समूह के एक श्रेणीबद्ध आरेख (
) से जोड़ देता है। डैशबोर्ड मुझे एक नज़र में बता देता है कि अब तक क्या मिला है, वह कुल का कितना हिस्सा है, और मोटे तौर पर यह भी कि नए पत्र कहाँ ढूँढ़े जा सकते हैं। किसी ख़ास चर पर क्लिक करते ही सारे आरेख ख़ास सहसंबंध दिखाने के लिए अपडेट भी हो जाते हैं।&lt;/p&gt;
&lt;h1 id="अगल-कदम"&gt;अगले क़दम&lt;/h1&gt;
&lt;p&gt;शायद इससे भी अहम बात यह है कि इस डैशबोर्ड को एक दृश्य अनुक्रमणिका के रूप में नए काम में लाया जा सकता है। जब इन पत्रों का आलोचनात्मक संस्करण ऑनलाइन प्रकाशित होगा, तो यह डैशबोर्ड एक वैकल्पिक प्रवेश-द्वार का काम करेगा, जहाँ से पाठक डेटा में घूम-फिर सकेंगे। गोपनीयता के कारणों से फ़िलहाल मैं सिर्फ़ एक ढका-छिपा स्क्रीनशॉट दिखा सकता हूँ, लेकिन अगले साल पूरा डैशबोर्ड जारी करूँगा। तब तक एक प्रोटोटाइप जल्द ही उपलब्ध होगा। इंतज़ार कीजिए!&lt;/p&gt;</description></item><item><title>Making &amp; Knowing Project</title><link>https://clementgodbarge.com/hi/project/mk/</link><pubDate>Sun, 27 Dec 2020 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/project/mk/</guid><description>&lt;p&gt;
की स्थापना 2014 में पामेला एच. स्मिथ ने की थी। सैकड़ों सहयोगियों को जोड़ने वाली यह शोध और शिक्षण की पहल कोलंबिया विश्वविद्यालय के
के अंतर्गत चलती है।&lt;/p&gt;
&lt;p&gt;पोस्टडॉक्टरल फ़ेलो के रूप में मैं इस परियोजना का हिस्सा रहा, और दूसरे कामों के अलावा BnF Ms. Fr. 640 के
पर काम किया। सोलहवीं सदी की यह अनूठी फ़्रांसीसी पांडुलिपि उस ज़माने के शिल्प और सामग्रियों की पहली-हाथ की झलक देती है, जब कलाकार ही वैज्ञानिक हुआ करते थे।&lt;/p&gt;
&lt;p&gt;डिजिटल संस्करण अपने
पर ढेर सारा डेटा मुफ़्त उपलब्ध कराता है। अगले साल भर में मैं इस संस्करण और इसके डेटा पर ब्लॉग पोस्टों की एक शृंखला प्रकाशित करने की सोच रहा हूँ। मैं दिखाऊँगा कि Python या R से इस पाठ को डाउनलोड करना और उसका विश्लेषण करना कितना आसान है। इंतज़ार कीजिए!&lt;/p&gt;</description></item><item><title>BnF Ms. Fr. 640 के सिमेंटिक मार्कअप का विज़ुअलाइज़ेशन</title><link>https://clementgodbarge.com/hi/post/visualization/</link><pubDate>Sun, 20 Dec 2020 18:15:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/post/visualization/</guid><description>&lt;h1 id="परचय"&gt;परिचय&lt;/h1&gt;
&lt;p&gt;डेटा-समृद्ध विद्वत्तापूर्ण संस्करणों में बहुमूल्य संपादकीय टिप्पणियाँ होती हैं, जिन्हें तरह-तरह के शोध-उद्देश्यों के लिए निकाला, विश्लेषित और विज़ुअलाइज़ किया जा सकता है। 2020 में जारी
इसी तरह का संस्करण है, जो अपनी मेटाडेटा फ़ाइल अपने GitHub रिपॉज़िटरी से डाउनलोड के लिए उपलब्ध कराता है। इस पोस्ट में मैं दिखाता हूँ कि इन सारे चरों को एक सहसंबंध-मैट्रिक्स में कैसे इकट्ठा किया जाए और उन्हें अलग-अलग ढंग से कैसे देखा जाए।&lt;/p&gt;
&lt;h1 id="डट"&gt;डेटा&lt;/h1&gt;
&lt;p&gt;Making and Knowing Project पांडुलिपि की विषय-वस्तु की अद्यतन जानकारी वाली एक स्प्रेडशीट तैयार करता है: &lt;code&gt;entry_metadata.csv&lt;/code&gt;। यह फ़ाइल Making &amp;amp; Knowing के
से ली जा सकती है। वैकल्पिक रूप से, मैथ्यू कुमार के शानदार
– BnF Ms. Fr. 640 का Python संस्करण – की मदद से अपनी ज़रूरत के मुताबिक़ .csv फ़ाइलें बनाई जा सकती हैं, और मार्कअप जोड़ते हुए।&lt;/p&gt;
&lt;h2 id="python-क-तयर"&gt;Python की तैयारी&lt;/h2&gt;
&lt;p&gt;डेटा सँवारने के लिए हम Pandas, हीटमैप के लिए Matplotlib और seaborn, और आख़िर में सहसंबंध-आधारित नेटवर्क बनाने के लिए NetworkX इस्तेमाल करेंगे।&lt;br&gt;
इस तरह के चरों के लिए हम Pearson विधि से बचेंगे और उसकी जगह 𝜙𝐾 विधि अपनाएँगे। इस सहसंबंध विधि और उसकी लाइब्रेरी &lt;code&gt;PhiK&lt;/code&gt; के बारे में
।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#install packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;phik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# import modules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;sns&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;networkx&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;nx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="डट-तयर-कर"&gt;डेटा तैयार करें&lt;/h2&gt;
&lt;p&gt;सबसे पहले संस्करण की नवीनतम मेटाडेटा फ़ाइल उनके
के metadata फ़ोल्डर से डाउनलोड करते हैं।
हम सिर्फ़ ज़रूरी कॉलम चुनेंगे। इस प्रदर्शन के लिए मैं अंग्रेज़ी अनुवाद &lt;code&gt;tl&lt;/code&gt; के सारे सिमेंटिक टैग चुन रहा हूँ, लेकिन आप फ़्रांसीसी प्रतिलेखन &lt;code&gt;tc&lt;/code&gt; या सामान्यीकृत संस्करण &lt;code&gt;tcn&lt;/code&gt; के टैग भी चुन सकते हैं।
डेटा अर्धविराम से अलग किए गए मानों के रूप में आता है, और हमें Python से उन्हें गिनवाना है। इसके लिए हम stack-unstack विधि और रेगुलर एक्सप्रेशन &lt;code&gt;[^;\s][^\;]*[^;\s]*&lt;/code&gt; का इस्तेमाल करेंगे।
मैट्रिक्स को पढ़ने में आसान बनाने के लिए हम हर कॉलम का नाम बदल देते हैं। जल्दी में हों तो यह क़दम छोड़ सकते हैं – बस इतना याद रखें कि इस चरण पर हमारे डेटाफ़्रेम का नाम &lt;code&gt;tagsrn&lt;/code&gt; है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# load the edition&amp;#39;s metadata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;entry_metadata.csv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# select the tags you want to correlate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dftags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;al_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;bp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;df_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;env_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;m_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;md_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ms_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;mu_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pa_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pro_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tmp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;de_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;el_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;it_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;la_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;oc_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;po_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# count comma separated values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tagcount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dftags&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dropna&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[^;\s][^\;]*[^;\s]*&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unstack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# rename columns&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tagsrn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tagcount&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;al_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;animals&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;bp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;body parts&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;currency&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;df_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;definitions&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;env_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;environment&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;m_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;material&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;md_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;medical&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ms_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;measurement&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;mu_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;music&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pa_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;plant&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;toponym&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;person&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pro_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;profession&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sn_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sensory&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tl_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tool&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tmp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;temporal&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wp_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;weapons&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;de_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;German&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;el_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Greek&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;it_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Italian&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;la_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Italian&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;oc_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Occitan&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;po_tl&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Poitevin&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="सहसबध-नकल"&gt;सहसंबंध निकालें&lt;/h1&gt;
&lt;p&gt;डेटाफ़्रेम साफ़ हो जाए, तो हर चर के बीच सहसंबंध-गुणांक निकालने की ओर बढ़ सकते हैं। इस चरण पर अपने डेटा को समझना और सबसे उपयुक्त सहसंबंध विधि चुनना ज़रूरी है। इस काम में &lt;code&gt;pandas-profiling&lt;/code&gt; पैकेज ख़ास तौर पर मददगार है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# calculate correlation coefficient with the phi k method&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cortag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tagsrn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;phik_matrix&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;cortag&lt;/code&gt; हमारा सहसंबंध-मैट्रिक्स है। अब हम अलग-अलग तरह के विज़ुअलाइज़ेशन आज़मा सकते हैं।&lt;/p&gt;
&lt;h1 id="वजअलइज-कर"&gt;विज़ुअलाइज़ करें&lt;/h1&gt;
&lt;p&gt;सबसे पहले इसे रंग-कोडित मैट्रिक्स के रूप में देखने की कोशिश करते हैं, &lt;code&gt;seaborn&lt;/code&gt; के
से।&lt;/p&gt;
&lt;h3 id="सहसबध-हटमप"&gt;सहसंबंध हीटमैप&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subplots&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;heatmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linewidths&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vmin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Oranges&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;square&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Correlation Heatmap of BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/heatmap_hu_943abdd98e24b0a3.webp 320w, https://clementgodbarge.com/post/visualization/heatmap_hu_eca41311a0e0ac17.webp 480w, https://clementgodbarge.com/post/visualization/heatmap_hu_1650defb643c0285.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/heatmap_hu_943abdd98e24b0a3.webp"
width="760"
height="665"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;पाठ को अच्छी तरह जानते हों, तो तुरंत दिखेगा कि हीटमैप काफ़ी हद तक तर्कसंगत है। मिसाल के तौर पर, नाम लातीनी से मज़बूती से जुड़े हैं, क्योंकि उन्हें लातीनी रूप देना उस ज़माने का – ख़ास तौर पर सोलहवीं सदी के मानववादियों का – रिवाज था।&lt;/p&gt;
&lt;p&gt;कुछ लोग कह सकते हैं कि यह हीटमैप तो बस “सूरज को दीया दिखा” रहा है। वे पूरी तरह ग़लत नहीं हैं, और पहली नज़र में चिकित्सा-टैग इसकी मिसाल लगते हैं: वे शरीर के अंगों, मापों और पौधों से जुड़े हैं, जिसका अंदाज़ा पहले से था।&lt;/p&gt;
&lt;p&gt;लेकिन हीटमैप को ज़्यादा ध्यान से, पंक्ति-दर-पंक्ति पढ़ें, तो कुछ दिलचस्प और अप्रत्याशित सहसंबंध मिल सकते हैं। मसलन, चिकित्सा-टैगों का इतालवी और लातीनी शब्दों से जुड़ा होना Ms. Fr. 640 के चिकित्सा-नुस्ख़ों के उद्गम का कुछ सुराग़ देता है। इसी तरह पेशों, परिभाषाओं और मापों के बीच का सहसंबंध दिखाता है कि सोलहवीं सदी के तकनीकी विमर्श को पेशेवर पहचान किस हद तक गढ़ती थी।&lt;/p&gt;
&lt;h3 id="सहसबध-कलसटरमप"&gt;सहसंबंध क्लस्टरमैप&lt;/h3&gt;
&lt;p&gt;हीटमैप “खोजबीन” के संदर्भ में उपयोगी हैं, लेकिन श्रोताओं को थोड़े बिखरे-बिखरे लग सकते हैं – ख़ास तौर पर जब आप पांडुलिपि में ख़ास सिमेंटिक क्लस्टरों की चर्चा कर रहे हों, या अभी उन्हें ढूँढ़ ही रहे हों। Seaborn का &lt;code&gt;clustermap&lt;/code&gt; मॉड्यूल दिलचस्प नतीजे दे सकता है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;clustermap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clustermap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;dendrogram_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;vmin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Oranges&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cbar_pos&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;.06&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;.68&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Correlation Clustermap of BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/clustermap_hu_677e6e5028f9d902.webp 320w, https://clementgodbarge.com/post/visualization/clustermap_hu_2dac945fa40a8ac6.webp 480w, https://clementgodbarge.com/post/visualization/clustermap_hu_3abaf7b36a53572.webp 753w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/clustermap_hu_677e6e5028f9d902.webp"
width="753"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;एक पिक्सेलयुक्त (जी हाँ, यह शब्द OED में है) कीड़े जैसा दिखने के अलावा, क्लस्टरमैप अलग-थलग टैगों (ऊपर और बाईं ओर) को उन टैगों से साफ़ अलग करता है जो आपस में ज़्यादा जुड़े हैं। हम अलग-थलग क्लस्टर भी पहचान सकते हैं – जैसे संगीत और प्वातवैं (किसने सोचा होगा!) – और उनके मुक़ाबले ज़्यादा केंद्रीय क्लस्टर, जैसे माप, सामग्री, परिभाषाएँ और हथियार। पेशे ज़्यादा जुड़े हुए हैं, लेकिन कम से कम इस ख़ास सहसंबंध-मैट्रिक्स में वे किसी एक क्लस्टर का हिस्सा नहीं।&lt;/p&gt;
&lt;h3 id="सहसबध-नटवरक"&gt;सहसंबंध नेटवर्क&lt;/h3&gt;
&lt;p&gt;अगर हम अपने मैट्रिक्स के सहसंबंधों को और भी संक्षेप में समेटना चाहें, तो नेटवर्क ग्राफ़ एक सुरुचिपूर्ण समाधान है। यह ख़ास तौर पर उन संदर्भों में सच है, जहाँ हमें पांडुलिपि की विषय-वस्तु के बारे में दूसरों को बताना हो।&lt;br&gt;
इसके लिए हमें अपने मैट्रिक्स को किनारों (edges) और गाँठों (nodes) की सूची में बदलना होगा और कमज़ोर सहसंबंधों को ग्राफ़ से हटाने के लिए एक दहलीज़ (threshold) तय करनी होगी।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# transform the data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cortag&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reset_index&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# threshold &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;.6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# create edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;G&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pandas_edgelist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links_filtered&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# draw network using Kamada &amp;amp; Kawai&amp;#39;s algorithm &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;draw_kamada_kawai&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;with_labels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node_color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;red&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edge_color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;black&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linewidths&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;font_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Correlation graph of BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/graph_hu_396032c00cb7f7f3.webp 320w, https://clementgodbarge.com/post/visualization/graph_hu_85295e5fba6293bc.webp 480w, https://clementgodbarge.com/post/visualization/graph_hu_4190dbca7e86ffc1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/graph_hu_396032c00cb7f7f3.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;किनारे और गाँठें बहुत ज़्यादा हों, तो साफ़ नतीजे के लिए दहलीज़ बदली जा सकती है। वरना &lt;code&gt;.write_gexf()&lt;/code&gt; फ़ंक्शन से ग्राफ़ को निर्यात करके &lt;code&gt;Gephi&lt;/code&gt; में उससे खेला जा सकता है।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write_gexf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;graph.gexf&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;नतीजा इस पोस्ट की शुरुआत में देखा जा सकता है।&lt;/p&gt;
&lt;h3 id="अपडट-वततकर-भरत-नटवरक"&gt;अपडेट: वृत्ताकार भारित नेटवर्क&lt;/h3&gt;
&lt;p&gt;मैं सहसंबंध-मैट्रिक्स को भारित नेटवर्क के रूप में दिखाने के तरीक़े ढूँढ़ रहा था, और मुझे
यह दिलचस्प तरीक़ा मिला, जिसे मैं यहाँ अपने डेटासेट के लिए ढाल रहा हूँ।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# create graph weighted by correlation coefficients (unfiltered)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Gx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pandas_edgelist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;links&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;var2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edge_attr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# determine a threshold to remove some edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;threshold&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# list to store edges to remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;remove&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# loop through edges in Gx and find correlations which are below the threshold&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var2&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;edges&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;corr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;var2&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#add to remove node list if abs(corr) &amp;lt; threshold&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;corr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# remove edges contained in the remove list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remove_edges_from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39; edges removed&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;कुछ किनारे हटा देने के बाद हम उनका रंग और मोटाई तय कर सकते हैं।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# determine the colors of edges&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_colour&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;correlation&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#ff872c&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# orange&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#f11d28&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# red&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_thickness&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;benchmark_thickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;benchmark_thickness&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;correlation&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;scaling_factor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;assign_node_size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;degree&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;degree&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;scaling_factor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;गाँठों को भी उनके संबंधों की संख्या के अनुपात में आकार देते हैं।&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# assign node size depending on number of connections (degree)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;node_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Gx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;degree&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;node_size&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;assign_node_size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;नतीजा एक भारित ग्राफ़ है, जिसमें ज़्यादा गाँठें और कहीं ज़्यादा किनारे समा जाते हैं, और जो फिर भी पढ़ने योग्य और जानकारी से भरा रहता है।&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Weighted correlation graph of BnF Ms. Fr. 640"
srcset="https://clementgodbarge.com/post/visualization/weightedgraph_hu_7b75f2e5fc7edb1b.webp 320w, https://clementgodbarge.com/post/visualization/weightedgraph_hu_9f0550eb49c17f11.webp 480w, https://clementgodbarge.com/post/visualization/weightedgraph_hu_a9106989817361fb.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://clementgodbarge.com/post/visualization/weightedgraph_hu_7b75f2e5fc7edb1b.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>फ़िलिप्पो कावरियाना का गुप्त पत्र-व्यवहार, 1568—1589</title><link>https://clementgodbarge.com/hi/project/cavrianas-correspondence/</link><pubDate>Fri, 27 Dec 2019 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/hi/project/cavrianas-correspondence/</guid><description>&lt;p&gt;फ़िलिप्पो कावरियाना के गुप्त पत्र फ़्रांस के धर्मयुद्धों की एक अनूठी गवाही हैं: बीस से ज़्यादा वर्षों तक वे उन साज़िशों, लड़ाइयों, समझौतों और षड्यंत्रों का हाल बताते हैं, जिनकी धड़कन पर फ़्रांस के दरबार और उसके बाहर का जीवन चलता था।&lt;/p&gt;
&lt;p&gt;ये पत्र
में हैं, और उनमें से ज़्यादातर सैकड़ों ऐसे बस्तों में बिखरे पड़े हैं जिनकी कोई सूची नहीं बनी – फ़्लोरेंस में इन्हें &lt;em&gt;filze&lt;/em&gt; (फ़ाइल या बस्ता) कहते हैं। पिछले वर्षों में मैं दर्जनों नए पत्र खोज सका हूँ, लेकिन इस तरह का अभिलेखागार अनुसंधान दिन-ब-दिन कठिन होता जा रहा है। फ़्लोरेंस से भौगोलिक दूरी, इटली की कुछ सार्वजनिक सेवाओं की बदहाली और कोविड-19 महामारी – ये सब मिलकर इस तरह की प्रकाशन परियोजनाओं को लंबा और अनिश्चित बना देते हैं।&lt;/p&gt;
&lt;p&gt;तमाम बढ़ती कठिनाइयों के बावजूद, प्राथमिक स्रोतों का प्रकाशन इतिहासकार के काम का हिस्सा बना रहना चाहिए। हाँ, इन प्रकाशनों का रूप शायद बदलना चाहिए। प्राथमिक स्रोतों के प्रकाशन को न सिर्फ़ ऊपर बताई गई परिस्थितियों के अनुसार ढलना होगा, बल्कि इस शोध के क्रमिक स्वभाव को बेहतर ढंग से दर्शाना भी होगा – और यह भी संभव करना होगा कि कोई और इसे आगे बढ़ा सके।&lt;/p&gt;
&lt;p&gt;यहीं से एक नए ढंग की डिजिटल प्रकाशन परियोजना का विचार जन्मा: ऐसी परियोजना जो &lt;strong&gt;बढ़ने योग्य&lt;/strong&gt;, &lt;strong&gt;टिकाऊ&lt;/strong&gt;, &lt;strong&gt;भरोसेमंद&lt;/strong&gt;, &lt;strong&gt;प्लेटफ़ॉर्म से स्वतंत्र&lt;/strong&gt; और संभवतः &lt;strong&gt;सहयोगी&lt;/strong&gt; हो।&lt;/p&gt;
&lt;p&gt;संस्करण अब ऑनलाइन है: &lt;strong&gt;
&lt;/strong&gt;। इसमें अब तक प्रतिलिपि किए गए पत्र संकलित हैं – फ़्लोरेंस और मांतुआ के राज्य अभिलेखागारों तथा BnF से – और जैसे-जैसे नए पत्र सामने आते हैं, यह बढ़ता जाता है। इसके डिज़ाइन के पीछे का तर्क मैंने
में समझाया है।&lt;/p&gt;</description></item></channel></rss>