Python में AI की अवधारणाएँ

Python में टोकनाइज़ेशन: शब्दावली, one-hot और byte pair encoding

न्यूरल नेटवर्क सिर्फ़ संख्याएँ समझते हैं, इसलिए टेक्स्ट को पहले टोकन में बाँटा जाता है और हर टोकन को एक id मिलती है। GPT जैसे भाषा मॉडल byte pair encoding इस्तेमाल करते हैं, जो शब्दों के बार-बार आने वाले टुकड़ों से टोकन बनाता है।

आसान शब्दों में अवधारणा

न्यूरल नेटवर्क सिर्फ़ संख्याएँ समझते हैं, इसलिए टेक्स्ट को पहले टोकन में बाँटा जाता है और हर टोकन को एक id मिलती है। GPT जैसे भाषा मॉडल byte pair encoding इस्तेमाल करते हैं, जो शब्दों के बार-बार आने वाले टुकड़ों से टोकन बनाता है।

भाषा मॉडल की तरह टेक्स्ट को संख्याओं में बदलें: शब्दावली बनाएँ, शब्दों को one-hot में एन्कोड करें और BPE से सबवर्ड टोकन सीखें।

मुख्य बातें

  • टोकन टेक्स्ट की एक इकाई है, जैसे शब्द, शब्द का हिस्सा या अक्षर।
  • one-hot वेक्टर सरल हैं, पर बड़ी शब्दावली में बहुत लंबे हो जाते हैं।
  • BPE दुर्लभ और नए शब्दों को जाने-पहचाने टुकड़ों में बाँटकर संभालता है।
  • इसके बाद मॉडल हर टोकन id को एक सीखे हुए वेक्टर में बदलते हैं, जिसे एम्बेडिंग कहते हैं।

इसका उपयोग कब करें?

  • समझें कि न्यूरल नेटवर्क और AI लाइब्रेरी के अंदर क्या होता है।
  • संबंधित चुनौतियों में खुद लागू करने से पहले विचार को समझें।
  • मशीन लर्निंग कोर्स, इंटरव्यू और प्रोजेक्ट की तैयारी करें।

इसे काम करते देखें

शब्दावली बनाने के लिए अपना वाक्य लिखें, फिर अगला चरण दबाकर देखें कि byte pair encoding सबसे ज़्यादा आने वाले जोड़े को कैसे मिलाता है।

उदाहरण कोड

कोड चलाएँ →
main.py
from collections import Counter

text = "the cat sat on the mat"

# 1. Build a vocabulary: every distinct word gets an id.
words = text.split()
vocab = {word: i for i, word in enumerate(sorted(set(words)))}
print("vocab:", vocab)
print("ids:", [vocab[w] for w in words])

# 2. One-hot encoding: a vector with a single 1 at the word's id.
def one_hot(word):
    return [1 if vocab[word] == i else 0 for i in range(len(vocab))]
print("one-hot 'cat':", one_hot("cat"))

# 3. Byte pair encoding: repeatedly merge the most frequent pair of symbols.
tokens = list("banana")
for _ in range(2):
    pairs = Counter(zip(tokens, tokens[1:]))
    best = max(pairs, key=pairs.get)
    merged, i = [], 0
    while i < len(tokens):
        if i + 1 < len(tokens) and (tokens[i], tokens[i + 1]) == best:
            merged.append(tokens[i] + tokens[i + 1])
            i += 2
        else:
            merged.append(tokens[i])
            i += 1
    tokens = merged
    print("merge", best, "->", tokens)

अपेक्षित आउटपुट

vocab: {'cat': 0, 'mat': 1, 'on': 2, 'sat': 3, 'the': 4}
ids: [4, 0, 3, 2, 4, 1]
one-hot 'cat': [1, 0, 0, 0, 0]
merge ('a', 'n') -> ['b', 'an', 'an', 'a']
merge ('b', 'an') -> ['ban', 'an', 'a']

यह कैसे काम करता है

शब्दावली हर अलग शब्द को एक id देती है, और वाक्य id की सूची बन जाता है। one-hot वेक्टर में सिर्फ़ शब्द की id वाली जगह पर 1 होता है। BPE पास-पास के चिह्नों के जोड़े गिनता है और सबसे ज़्यादा आने वाले जोड़े को मिलाता है, पहले ('a', 'n') और फिर ('b', 'an')।

मान बदलें और Python इंस्टॉल किए बिना CodeUtility ऑनलाइन Python कंपाइलर में प्रोग्राम चलाएँ।

अभ्यास के कार्य

बड़े dataset पर जाने से पहले input बदलें और edge cases की जाँच करें।

  1. इनपुट या वेट बदलें और रन करने से पहले आउटपुट का अनुमान लगाएँ।
  2. हर गणना चरण को देखने के लिए बीच के मान प्रिंट करें।
  3. नीचे दी गई चुनौतियाँ हल करके विचार को खुद लागू करें।
Python IDE में चलाएँ →

चैलेंज से अभ्यास करें

इस पाठ में सीखी बात से एक असली समस्या हल करें। हर चैलेंज ब्राउज़र में चलता है, तुरंत टेस्ट और AI रिव्यू के साथ।

सभी चैलेंज