भारतीय भाषाओं के लिए AIमध्यमपाठ 2406 मिनट का पाठ

कोड-मिक्सिंग: हिंग्लिश और उसके साथी

लोग अक्सर एक ही वाक्य में कई भाषाएँ मिला देते हैं और उन्हें रोमन अक्षरों में टाइप करते हैं। सीखें कि ऐसे मिले-जुले इनपुट को कैसे संभालें, उसे सावधानी से नॉर्मलाइज़ करें, और असली वाक्यों के साथ टेस्ट करें।

पाठ वीडियो में

60 सेकंड में

कोड-मिक्सिंग: हिंग्लिश और उसके साथी

लोग अक्सर एक ही वाक्य में कई भाषाएँ मिला देते हैं और उन्हें रोमन अक्षरों में टाइप करते हैं। सीखें कि ऐसे मिले-जुले इनपुट को कैसे संभालें, उसे सावधानी से नॉर्मलाइज़ करें, और असली…

1/5
आसान शब्दों में
जब आप दोस्तों से चैट करते हैं, तो शायद आप लिखें "Kal cricket match hai, tu aa raha hai na?" आपने कोई गलती नहीं की। आपने दो भाषाओं को मिलाया, जिस तरह भारत में बहुत से लोग स्वाभाविक रूप से बात करते हैं। AI को भी यह समझना होगा।
कोड-मिक्सिंग (Code-mixing) का मतलब है एक ही बातचीत या एक ही वाक्य में दो या दो से ज़्यादा भाषाओं का इस्तेमाल करना। यह पूरे भारत में आम है: हिंदी के साथ अंग्रेज़ी (जिसे अक्सर हिंग्लिश कहा जाता है), और कई अन्य मेल जैसे तमिल के साथ अंग्रेज़ी या बंगाली के साथ अंग्रेज़ी, और दो भारतीय भाषाओं का मेल। यह बात करने का एक सामान्य और स्वाभाविक तरीका है, कोई "टूटी-फूटी" भाषा नहीं।

मिला-जुला इनपुट कैसा दिखता है

पैटर्नउदाहरणइसे समझना मुश्किल क्यों है
मिले-जुले शब्द"Mera order cancel kar do"मॉडल को एक साथ दो भाषाओं के शब्दों को समझना होता है
रोमनाइज़्ड लिपि"kya aap delivery date bata sakte ho"रोमन अक्षरों में लिखी गई कोई भारतीय भाषा, जिसकी कोई तय स्पेलिंग नहीं होती
मिली-जुली लिपियाँ"मेरा order अभी तक नहीं आया"एक ही वाक्य में दो लिपियाँ
स्पेलिंग के अलग-अलग रूप"nahi" / "nahin" / "nai" / "nhi"एक ही शब्द की कई तरह की स्पेलिंग
चैट स्टाइल"plz jaldi bhejo!!! 😡"शॉर्ट फॉर्म, दोहराए गए अक्षर, इमोजी और विराम चिह्न
ट्रांसलिट्रेशन (Transliteration) का मतलब है किसी भाषा को दूसरी लिपि में लिखना, उदाहरण के लिए हिंदी को रोमन अक्षरों में लिखना। यह अनुवाद (translation) से अलग है: शब्द उसी भाषा के रहते हैं। रोमनाइज़्ड टेक्स्ट को वापस भारतीय लिपियों में ट्रांसलिट्रेट करने के लिए टूल्स मौजूद हैं, और AI4Bharat ने इस पर खुला (open) काम पब्लिश किया है।

सावधानी से नॉर्मलाइज़ करना

सर्च करने, मैच करने या गिनने से पहले, टेक्स्ट को साफ करके एक जैसे रूप में लाना मददगार होता है। सावधानी बरतें: हर नियम अर्थ को बिगाड़ भी सकता है। यहाँ केवल स्टैंडर्ड लाइब्रेरी का इस्तेमाल करते हुए एक छोटा सा उदाहरण दिया गया है।
A small, careful normaliser for chat textpython
import re
import unicodedata

# A small, hand-checked list. Real systems learn variants from real user data.
VARIANTS = {
    "nahin": "nahi", "nai": "nahi", "nhi": "nahi",
    "kyaa": "kya",
    "h": "hai",
    "pls": "please", "plz": "please",
}

def normalise(text: str) -> str:
    text = unicodedata.normalize("NFC", text).lower()   # same letters, same code points
    text = re.sub(r"(.)\1{2,}", r"\1\1", text)          # "bohottt" -> "bohott"
    # Remove punctuation and emoji by Unicode category, so Indic vowel signs survive.
    text = "".join(" " if unicodedata.category(c)[0] in "PS" else c for c in text)
    return " ".join(VARIANTS.get(w, w) for w in text.split())

for msg in ["Mera order abhi tak nahin aaya!!!", "order nhi aaya h, plz check",
            "Order NAI aayaaa 😡", "मेरा ऑर्डर नहीं आया"]:
    print(f"{msg!r:40} -> {normalise(msg)!r}")
  • भारतीय लिपियों के लिए Unicode NFC बहुत ज़रूरी है: कुछ अक्षरों को एक से ज़्यादा तरीकों से स्टोर किया जा सकता है (उदाहरण के लिए नुक्ते वाला अक्षर), और NFC दोनों रूपों को एक जैसा बना देता है।
  • Unicode कैटेगरी के हिसाब से विराम चिह्नों को हटाने से भारतीय भाषाओं की मात्राएँ बची रहती हैं। पायथन के re में \w+ जैसे आसान पैटर्न भारतीय शब्दों को टुकड़ों में काट सकते हैं।
  • वेरिएंट लिस्ट जानबूझकर बहुत छोटी रखी गई है। हर एंट्री की जाँच उस भाषा को बोलने वाले व्यक्ति से करवाई जानी चाहिए।
सावधान रहें
नॉर्मलाइज़ेशन चीज़ों को बिगाड़ भी सकता है। "he" को "hai" में बदलने से अंग्रेज़ी के वाक्य खराब हो जाएँगे। लोअरकेस करने से कोई नाम किसी आम शब्द के साथ मिल सकता है। इमोजी हटाने से वह भावना हट जाती है जिसकी सपोर्ट टीम को ज़रूरत हो सकती है। असली टेक्स्ट को भी संभाल कर रखें, और मैचिंग के लिए केवल एक कॉपी को नॉर्मलाइज़ करें।

ऐप में मिले-जुले इनपुट को संभालना

  1. 1

    इसे स्वीकार करें

    यूज़र्स को कोई एक भाषा या लिपि चुनने के लिए मजबूर न करें। उन्हें उसी तरह लिखने दें जैसे वे बात करते हैं।
  2. 2

    असली टेक्स्ट को सुरक्षित रखें

    यूज़र ने जो लिखा है उसे स्टोर करें। सर्च और मैचिंग के लिए नॉर्मलाइज़ की गई कॉपी का इस्तेमाल करें।
  3. 3

    उन्हीं के स्टाइल में जवाब दें

    यूज़र ने जिस भाषा और लिपि का इस्तेमाल किया है, उसी में जवाब दें, या उन्हें चुनने का विकल्प दें। टेस्ट करें कि मॉडल ऐसा कर रहा है या नहीं।
  4. 4

    नामों और नंबरों को सुरक्षित रखें

    नामों, ऑर्डर आईडी, रकम या फ़ोन नंबरों को ट्रांसलिट्रेट या "सही" न करें।
  5. 5

    असली वाक्यों के साथ टेस्ट करें

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

और देखें और पढ़ें

लैब

एक 20-वाक्यों का कोड-मिक्स टेस्ट सेट, जिसमें एक नॉर्मलाइज़र शामिल हो जिसे आपने आगे बढ़ाया और जाँचा हो।

~30 min

समस्या

किसी ऐसे शहर के लिए फ़ूड डिलीवरी ऐप के सपोर्ट बॉट की कल्पना करें जिसे आप जानते हैं।

  1. ग्राहकों के 20 ऐसे स्वाभाविक मैसेज लिखें जैसे लोग वास्तव में टाइप करते हैं: मिली-जुली भाषाएँ, रोमनाइज़्ड और अपनी लिपि, शॉर्ट फॉर्म, इमोजी। असली लोगों के मैसेज कॉपी न करें।
  2. प्रत्येक के लिए, इंटेंट (उदाहरण के लिए: देर से आया ऑर्डर, रिफ़ंड, गलत सामान) और कोई भी मुख्य जानकारी (ऑर्डर आईडी, रकम) लिखें।
  3. पाठ में दिए गए नॉर्मलाइज़र को इन सभी 20 पर चलाएँ। लिस्ट में ज़्यादा से ज़्यादा पाँच नए वेरिएंट जोड़ें, और उस भाषा को बोलने वाले व्यक्ति से हर एक की जाँच कराएँ।
  4. कम से कम दो ऐसे मैसेज खोजें जहाँ नॉर्मलाइज़ेशन ने कुछ ज़रूरी बदल दिया हो या खो दिया हो। समझाएँ कि क्या गड़बड़ हुई।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1आपका इंटेंट क्लासिफ़ायर देवनागरी हिंदी पर तो अच्छा काम करता है लेकिन रोमनाइज़्ड हिंदी पर खराब। इसे ठीक करने के दो अलग-अलग तरीके और हर एक का एक जोखिम बताइए।दिखाएं

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

Q2किसी कोड-मिक्स चैटबॉट का मूल्यांकन केवल इस आधार पर करना जोखिम भरा क्यों है कि वह कितनी बार "सही" भाषा में जवाब देता है?दिखाएं

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

जारी रखने के लिए कृपया साइन इन करें।

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

क्या कोड-मिक्सिंग कमज़ोर भाषा कौशल की निशानी है?

नहीं। द्विभाषी (दो भाषाएँ बोलने वाले) लोगों पर अध्ययन करने वाले शोधकर्ता कोड-मिक्सिंग को बातचीत का एक सामान्य और अक्सर कुशल तरीका मानते हैं। प्रोडक्ट्स को इसका समर्थन करना चाहिए, इसे सुधारने की कोशिश नहीं करनी चाहिए।

अगर यूज़र हिंग्लिश में लिखता है, तो क्या मेरे बॉट को भी हिंग्लिश में जवाब देना चाहिए?

अक्सर हाँ, क्योंकि यह स्वाभाविक लगता है। लेकिन कुछ यूज़र्स अपनी भाषा की मूल लिपि में या अंग्रेज़ी में जवाब पाना पसंद करते हैं। यूज़र्स के साथ टेस्ट करें और उन्हें खुद चुनने का विकल्प देने पर विचार करें।

पहले सब कुछ भारतीय लिपि में ट्रांसलिट्रेट ही क्यों न कर लिया जाए?

यह कुछ कामों में मदद कर सकता है, लेकिन गड़बड़ भी हो सकती है: अंग्रेज़ी शब्द, नाम और ब्रांड के नाम अजीब तरीके से बदल सकते हैं, और अलग-अलग स्पेलिंग से अलग नतीजे मिलते हैं। इसे किसी असली टेस्ट सेट पर आज़माएँ और असली टेक्स्ट को सुरक्षित रखें।

प्राइवेसी का उल्लंघन किए बिना मैं असली वाक्य कैसे जुटा सकता हूँ?

यूज़र्स से अनुमति लें, किसी के भी डेटा पढ़ने से पहले नाम, फ़ोन नंबर, पते और आईडी हटा दें, केवल वही रखें जिसकी आपको ज़रूरत है, और इसे सुरक्षित रूप से स्टोर करें। अगला पाठ सहमति पर और गहराई से चर्चा करता है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें