कोई अपलोड नहीं, 100% स्थानीय, कोई खाता नहीं

लेख

शब्द, अक्षर और केस: टेक्स्ट की गिनती वास्तव में कैसे होती है

टेक्स्ट गिनना ऐसा काम लगता है जिसमें कंप्यूटर कभी गलती नहीं कर सकता, फिर भी दो अलग-अलग टूल एक ही पैराग्राफ के लिए अलग-अलग संख्या बता सकते हैं, एक इमोजी आपके SMS के 70 अक्षरों की सीमा तक खा सकता है, और X पर "280 अक्षर" का मतलब वह नहीं जो दिखता है। किसी सीमा के भीतर लिखने, वेरिएबल के नाम बदलने या मॉकअप भरने जैसे रोज़मर्रा के कामों के पीछे कुछ ऐसे नियम छिपे हैं जो जानने लायक हैं। यह लेख इन्हीं नियमों को क्रम से समझाता है, और उदाहरण के तौर पर इस साइट के छोटे टेक्स्ट टूल इस्तेमाल करता है।

एक शब्द के तौर पर क्या गिना जाता है

हमारे सहित ज़्यादातर काउंटर शब्द को उसी तरह परिभाषित करते हैं जैसे टाइपिस्ट करते थे: स्पेस या लाइन-ब्रेक के बीच दिखने वाले अक्षरों की एक लगातार श्रृंखला। यह अकेला नियम ज़्यादातर मतभेदों की वजह बता देता है। अंग्रेज़ी का "state-of-the-art" एक शब्द है या चार? स्पेस के आधार पर बाँटने पर यह एक शब्द है। नंबर, URL और ईमेल पते भी हर एक को एक शब्द माना जाता है। यह चलन उन भाषाओं में काम नहीं करता जो बिना स्पेस के लिखी जाती हैं: चीनी या जापानी में बाँटने के लिए कोई स्पेस ही नहीं है, इसलिए वहाँ "शब्दों की संख्या" का कोई खास अर्थ नहीं रह जाता और इसकी जगह अक्षरों की गिनती को आधार बनाना चाहिए। पढ़ने के समय का अनुमान इसके ऊपर एक और चलन जोड़ देता है: हमारा वर्ड काउंटर शब्दों की संख्या को 200 शब्द प्रति मिनट से भाग देता है, जो वयस्कों के मन में पढ़ने की एक आम औसत गति है, इसलिए नतीजे को एक वादे की तरह नहीं बल्कि योजना बनाने के लिए एक अनुमानित आँकड़े की तरह लें।

एक अक्षर हमेशा एक ही चिह्न नहीं होता

अक्षरों की गिनती और भी उलझी हुई है, क्योंकि यूनिकोड टेक्स्ट की कई परतें होती हैं। जिसे आप एक अक्षर (ग्रैफीम) मानते हैं, वह असल में कई कोड पॉइंट से मिलकर बना हो सकता है, और हर कोड पॉइंट JavaScript की length प्रॉपर्टी द्वारा गिनी जाने वाली 16-बिट यूनिट में से एक या दो यूनिट लेता है। मुस्कुराते चेहरे वाला इमोजी एक ग्रैफीम है लेकिन उन यूनिट में से दो है, इसलिए एक साधारण काउंटर 2 बताता है। कई व्यक्ति-इमोजी को जोड़कर बना परिवार वाला इमोजी एक ग्रैफीम, पाँच कोड पॉइंट और आठ यूनिट है। सामान्य टेक्स्ट में भी यही समस्या है: "café" को é को एक कोड पॉइंट के रूप में या e के बाद एक संयोजक एक्सेंट के रूप में स्टोर किया जा सकता है, स्क्रीन पर दोनों एक जैसे दिखते हैं लेकिन गिनती में अलग हैं। यही वजह है कि दो काउंटर आपस में मेल नहीं खाते: वे अलग-अलग परतें नाप रहे होते हैं। कोड पॉइंट को उपयोगकर्ता द्वारा समझे जाने वाले अक्षरों में जोड़ने के नियम यूनिकोड के टेक्स्ट सेगमेंटेशन मानक (UAX #29) में तय किए गए हैं, और सही तरीके से बने काउंटर इसी को मानते हैं।

तीन यूनिकोड परतों पर मापी गई तीन स्ट्रिंग: मुस्कुराते चेहरे वाला इमोजी 1 ग्रैफीम और 2 UTF-16 यूनिट है, परिवार वाला इमोजी 1 ग्रैफीम, 5 कोड पॉइंट और 8 यूनिट है, और अलग किया गया café 4 ग्रैफीम है लेकिन 5 कोड पॉइंट

वे सीमाएँ जिनके लिए आप असल में गिनती करते हैं

अक्षर सीमाओं पर ही गिनती का मामला पैसों तक पहुँचता है। एक SMS सघन GSM-7 वर्णमाला में 160 अक्षर ले जाता है, लेकिन इससे बाहर का एक भी अक्षर (कोई इमोजी, या ऐसा अक्षर जो उस वर्णमाला में नहीं है) पूरे मैसेज को UCS-2 में बदल देता है और सीमा घटकर 70 रह जाती है; लंबे मैसेज 153 या 67 अक्षरों वाले हिस्सों में बँट जाते हैं, और हर हिस्से का बिल अलग-अलग बनता है। X हर पोस्ट में 280 अक्षरों की इजाज़त देता है, लेकिन इनका वज़न अलग-अलग रखता है: हर URL, चाहे उसकी असली लंबाई कुछ भी हो, 23 अक्षर के बराबर गिना जाता है, और ज़्यादातर इमोजी व CJK (चीनी-जापानी-कोरियाई) अक्षर 2 अक्षर के बराबर गिने जाते हैं। सर्च स्निपेट में इसके बजाय ढीली सीमाएँ होती हैं: Google शीर्षक और विवरण को पिक्सेल चौड़ाई के आधार पर काटता है, इसलिए शीर्षक के लिए 60 अक्षर और विवरण के लिए 155 अक्षर वाले जाने-पहचाने आँकड़े गारंटी नहीं बल्कि काम-चलाऊ रिवाज़ हैं। जब कोई सीमा वाकई मायने रखती है, तो उसी नियम से गिनें जो वह प्लेटफ़ॉर्म इस्तेमाल करता है, और थोड़ी गुंजाइश छोड़ दें।

केस एक रिवाज़ है, और हर स्टाइल की अपनी जगह है

केस बदलना मामूली-सा लगता है, जब तक आप इसके ऊपर बने रिवाज़ों से नहीं टकराते। यह बात लैटिन लिपि वाले टेक्स्ट से जुड़ी है, जैसे कोड के आइडेंटिफ़ायर या अंग्रेज़ी शीर्षक, क्योंकि हिंदी में अक्षरों का बड़ा-छोटा रूप नहीं होता। गद्य में Title Case है, जिसे अमेरिकी हेडलाइन पसंद करती हैं, और sentence case है, जिसे ज़्यादातर यूरोपीय स्टाइल गाइड तरजीह देते हैं। कोड के अपने अलग परिवार हैं: JavaScript और Java में वेरिएबल के लिए camelCase, क्लास और कंपोनेंट नामों के लिए PascalCase, Python और डेटाबेस में snake_case, कॉन्स्टेंट के लिए SCREAMING_SNAKE_CASE, और CSS क्लास, फ़ाइल नाम व URL स्लग के लिए kebab-case, जहाँ छोटे अक्षर उस क्लासिक जाल से बचाते हैं जिसमें दो लिंक सिर्फ़ केस की वजह से अलग दिखते हैं। मुट्ठी भर आइडेंटिफ़ायर हाथ से बदलना ठीक है; लेकिन अस्सी आइडेंटिफ़ायर की लिस्ट बदलना टाइपो पैदा करने का पक्का तरीका है। केस कनवर्टर यह बदलाव मशीनी तरीके से करता है, जिसमें एक्रोनिम और मौजूदा सेपरेटर के साथ क्या करना है जैसे बारीक फ़ैसले भी शामिल हैं।

user profile page वाक्यांश छह केस स्टाइल में लिखा गया: camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case और Title Case

फ़िलर टेक्स्ट, और वे फ़ाइलें जिन्हें आपका फ़ोन खोलने से मना कर देता है

इस लिस्ट को पूरा करने वाले दो और काम हैं। लेआउट को अक्सर प्लेसहोल्डर टेक्स्ट से परखा जाता है, क्योंकि असली वाक्य ध्यान को अपने अर्थ की ओर खींच लेते हैं; lorem ipsum इसीलिए काम करता है क्योंकि यह लगभग पढ़ने लायक लैटिन दिखता है, लेकिन पूरी तरह पढ़ा नहीं जा सकता। हमारा जेनरेटर इसे पैराग्राफ़, वाक्य या शब्द के हिसाब से बनाता है, ताकि मॉकअप को एक ही ब्लॉक को बार-बार चिपकाने के बजाय असली लंबाई तक भरा जा सके। और जब कोई ऐसी .md, .json, .csv या .log फ़ाइल भेजता है जिसे फ़ोन खोलने से मना कर देता है, तो ब्राउज़र में चलने वाला टेक्स्ट व्यूअर बिना कोई एडिटर इंस्टॉल किए या फ़ाइल को किसी कन्वर्ज़न साइट पर भेजे उसे दिखा देता है। ऊपर बताई गई हर चीज़, गिनती सहित, पूरी तरह आपके ब्राउज़र के भीतर चलती है: टेक्स्ट कभी आपकी डिवाइस से बाहर नहीं जाता, और यह बात सामान्य से कहीं ज़्यादा मायने रखती है जब आप जो माप रहे हों वह कोई ड्राफ़्ट, कोई कॉन्ट्रैक्ट या इंटरनल पाथ से भरा कोई लॉग हो।

इस लेख में उल्लेखित टूल्स

अक्सर पूछे जाने वाले सवाल

एक पेज में कितने शब्द समाते हैं?

प्रकाशन के रिवाज़ के मुताबिक सिंगल-स्पेस वाले पेज में लगभग 500 शब्द और डबल-स्पेस वाले पेज में लगभग 250 शब्द आते हैं, यह मानते हुए कि A4 या लेटर पेपर पर स्टैंडर्ड 12-पॉइंट फ़ॉन्ट इस्तेमाल हो रहा है। असली दस्तावेज़ फ़ॉन्ट, मार्जिन या हेडिंग बदलते ही इन आँकड़ों से हट जाते हैं, इसीलिए असाइनमेंट और सबमिशन में अब पेज की संख्या के बजाय शब्दों की संख्या तय करने का चलन बढ़ रहा है। अगर आपके पास टेक्स्ट पहले से मौजूद है, तो अंदाज़ा लगाने के बजाय सीधे गिन लें; पेज वाले रिवाज़ तभी काम के हैं जब टेक्स्ट अभी लिखा ही नहीं गया हो।

lorem ipsum का असल में मतलब क्या है?

यह बेतरतीब बकवास नहीं बल्कि उलट-पुलट किया हुआ लैटिन है। यह मानक अंश सिसरो की 45 ईसा पूर्व की दार्शनिक रचना De finibus bonorum et malorum से काटकर फिर से फेरबदल किया गया है; इसका टुकड़ा "dolorem ipsum" का मतलब है "दर्द अपने आप में"। यह फेरबदल ही असली मुद्दा है: यह टेक्स्ट स्वाभाविक भाषा जैसा दिखता है, जिसमें शब्दों की लंबाई और वाक्यों की लय भी जँचती हुई लगती है, लेकिन इसे पढ़ना मुश्किल होता है, इसलिए देखने वाला कॉपी के बजाय लेआउट को परखता है। इसका आधुनिक प्रसार आमतौर पर 1960 के दशक की Letraset ट्रांसफ़र शीट और 1980 के दशक के डेस्कटॉप पब्लिशिंग सॉफ़्टवेयर को दिया जाता है।

कोई प्लेटफ़ॉर्म मेरे काउंटर से कम अक्षर क्यों गिनता है?

क्योंकि प्लेटफ़ॉर्म अपने ही वज़न के हिसाब से गिनते हैं। X 280 से शुरू करता है लेकिन हर URL को 23 अक्षर मानकर बिल करता है और ज़्यादातर इमोजी व CJK अक्षरों को हर एक 2 अक्षर मानकर। SMS गेटवे पूरे मैसेज को 160-अक्षर वाली GSM-7 वर्णमाला से 70-अक्षर वाले UCS-2 मोड में तभी बदल देते हैं जब सिर्फ़ एक भी अक्षर इसकी माँग करता है। और कोई भी प्लेटफ़ॉर्म ग्रैफीम की बजाय कोड यूनिट गिन सकता है, इसलिए अकेला परिवार वाला इमोजी सीमा के 8 अक्षर तक खा सकता है। जब बटन पर दिखने वाली संख्या आपके काउंटर से मेल नहीं खाती, तो प्लेटफ़ॉर्म के नियम ही मान्य होते हैं; भेजने से पहले गुंजाइश रखकर लिखें या प्लेटफ़ॉर्म के अपने काउंटर से जाँच लें।

स्रोत