TensorFlow.js: किसी स्पैम टिप्पणी का पता लगाने वाले मॉडल को फिर से तैयार करके, एज केस को मैनेज करना

1. शुरू करने से पहले

इस कोडलैब को इस सीरीज़ में, स्पैम से पहले के लैब का नतीजा बनाने के लिए डिज़ाइन किया गया है. ऐसा, TensorFlow.js का इस्तेमाल करके, स्पैम का पता लगाने वाली टिप्पणी के लिए किया जाता है.

पिछले कोडलैब में आपने किसी काल्पनिक वीडियो ब्लॉग के लिए पूरी तरह से काम करने वाला वेबपेज बनाया था. आप टिप्पणियों को स्पैम के लिए फ़िल्टर कर सकते थे. इससे पहले उन्हें स्टोरेज के लिए सर्वर पर या दूसरे कनेक्ट किए गए क्लाइंट को भेजा जाता था. इसके लिए, ब्राउज़र में TensorFlow.js का इस्तेमाल करके, स्पैम टिप्पणी की पहचान करने वाले पहले से प्रशिक्षित मॉडल का इस्तेमाल किया जाता था.

उस कोडलैब का आखिरी नतीजा नीचे दिखाया गया है:

ee0f13398ea4e91e.gif

हालांकि यह काफ़ी अच्छी तरह से काम कर पाया, लेकिन किनारे का पता लगाने के कई ऐसे मामले हैं जिनका पता नहीं लगाया जा सका. आप उन स्थितियों के लिए मॉडल को फिर से प्रशिक्षित कर सकते हैं जिन्हें हैंडल नहीं किया जा सका.

यह कोडेलैब, भाषा की सामान्य प्रोसेसिंग (कंप्यूटर में मानवीय भाषा को समझने की कला) का इस्तेमाल करने पर फ़ोकस करता है और आपको सुझाव देता है कि आप बनाए गए मौजूदा वेब ऐप्लिकेशन में बदलाव कैसे करें (आपको कोडलैब को क्रम से लगाने की पुरज़ोर सलाह दी जाती है). ऐसा करना इसलिए ज़रूरी है, क्योंकि कई वेब डेवलपर आज के दौर में सबसे ज़्यादा लोकप्रिय वेब ऐप्लिकेशन में से किसी एक पर काम करते हैं.

इस कोडलैब में आप #3

ज़रूरी बातें

  • इस सीरीज़ का पहला कोडलैब (कोड बनाना सीखना) पूरा किया.
  • एचटीएमएल, सीएसएस, और JavaScript सहित वेब टेक्नोलॉजी की बुनियादी जानकारी.

आप क्या बनाते हैं

आप रीयल टाइम टिप्पणी सेक्शन के साथ, काल्पनिक वीडियो ब्लॉग के लिए पहले से तैयार की गई वेबसाइट का फिर से इस्तेमाल करेंगे. साथ ही, TensorFlow.js का इस्तेमाल करके स्पैम का पता लगाने वाले मॉडल का कस्टम ट्रेनिंग वाला वर्शन लोड करने के लिए, उसे अपग्रेड करें. ऐसा करने से, यह उन बाहरी मामलों में बेहतर परफ़ॉर्म करेगा जो पहले नहीं कर पाते थे. बेशक, वेब डेवलपर और इंजीनियर के रूप में आप किसी भी ऐसी वेबसाइट पर इस्तेमाल करने के लिए इस काल्पनिक UX को बदल सकते हैं जिस पर आप रोज़ काम कर रहे हैं. साथ ही, क्लाइंट के इस्तेमाल के किसी भी उदाहरण में फ़िट होने के लिए समाधान को बदल सकते हैं - उदाहरण के लिए, यह कोई ब्लॉग, फ़ोरम या कॉन्टेंट मैनेजमेंट सिस्टम है.

चलिए, #39; हैकिंग शुरू करते हैं...

आप क्या #39;जानेंगे

आप:

  • उन मामलों की पहचान करें जिन पर पहले से प्रशिक्षित मॉडल काम नहीं कर रहा था
  • मॉडल मेकर का इस्तेमाल करके बनाए गए स्पैम क्लासिफ़िकेशन मॉडल को फिर से सिखाएं.
  • ब्राउज़र में इस्तेमाल करने के लिए, Python के इस मॉडल को TensorFlow.js फ़ॉर्मैट में एक्सपोर्ट करें.
  • होस्ट किए गए मॉडल और उसके शब्दकोश को नए प्रशिक्षित मॉडल के साथ अपडेट करें और नतीजे देखें

इस लैब के लिए, HTML5, सीएसएस, और JavaScript के बारे में जानकारी है. मॉडल को मॉडल करने के लिए, आपको &kot;co lab" notebook की मदद से भी कुछ Python कोड चलाना होगा. हालांकि, ऐसा करने के लिए आपको Python को जानने की ज़रूरत नहीं है.

2. कोड सेट अप करें

एक बार फिर, आप वेब ऐप्लिकेशन को होस्ट करने और उसमें बदलाव करने के लिए Glitch.com का इस्तेमाल करेंगे. अगर आपने पहले से ही ज़रूरी कोडलैब की शर्त पूरी नहीं की है, तो आप शुरुआत के पॉइंट के तौर पर यहां नतीजा खत्म कर सकते हैं. अगर आपके पास कोड के काम करने के तरीके के बारे में कोई सवाल है, तो हमारी सलाह है कि आप पहले वाला कोडलैब भरें. इसमें, आगे बढ़ने से पहले यह काम करने वाला वेब ऐप्लिकेशन बनाने का तरीका बताया गया है.

ग्लिच पर, बस इसे रीमिक्स करें बटन पर क्लिक करके उसे फ़ोर्क करें और फ़ाइलों का एक नया सेट बनाएं जिसमें आप बदलाव कर सकते हैं.

3. पिछले समाधान में एज केस के बारे में जानें

अगर आप उस पूरी वेबसाइट को खोलते हैं जिसे आपने अभी-अभी कॉपी किया है और कुछ टिप्पणियां टाइप करने की कोशिश की हैं, तो आप पाएंगे कि ज़्यादातर समय उम्मीद के मुताबिक काम करता है. साथ ही, यह उम्मीद के मुताबिक स्पैम जैसी लगने वाली टिप्पणियों को ब्लॉक करता है और मान्य जवाबों की अनुमति देता है.

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

समस्या के बिना (ऐसी टिप्पणियां जो सही नहीं हैं) पोस्ट की गई हैं:

  1. बहुत बढ़िया, मुझे वह वीडियो बहुत पसंद है. यह शानदार काम है. संभावना स्पैम: 47.91854%
  2. ये कोटेशन पूरी तरह से पसंद आए! कोई और जानकारी पाएं! संभावना स्पैम: 47.15898%
  3. &कोटेशन;ज़्यादा जानने के लिए मैं किस वेबसाइट पर जा सकता/सकती हूं; संभावना स्पैम: 15.32495%

यह बहुत बढ़िया है, ऊपर दिए गए सभी संभावनाओं की संभावना बहुत कम है और यह कार्रवाई किए जाने से पहले 75% की कम से कम संभावना के डिफ़ॉल्ट SPAM_THRESHOLD के ज़रिए सफल हो जाती है (पहले कोडलैब से script.js कोड में परिभाषित किया गया).

अब कुछ ऐसी और टिप्पणियों को लिखने की कोशिश करें जो स्पैम के तौर पर मार्क की गई हों. भले ही, उन पर कोई स्पैम न हो...

गलत (स्पैम) के तौर पर मार्क की गई कानूनी टिप्पणियां:

  1. क्या कोट में पहनी गई मास्क के लिए कोई व्यक्ति वेबसाइट को लिंक कर सकता है; संभावना स्पैम: 98.46466%
  2. "क्या मैं यह गाना Spotify पर खरीद सकता/सकती हूं? कृपया मुझे कोई बताएं!&कोटेशन; संभावना स्पैम: 94.40953%
  3. "क्या TensorFlow.jsberkot डाउनलोड करने के बारे में ज़्यादा जानकारी पाने के लिए, कोई व्यक्ति मुझसे संपर्क कर सकता है; संभावना स्पैम: 83.20084%

अरे नहीं! ऐसा लगता है कि इन वैध टिप्पणियों को अनुमति मिलने पर, इन्हें स्पैम के तौर पर मार्क किया जा रहा है. इसे कैसे ठीक किया जा सकता है?

इसका एक आसान विकल्प यह है कि आप SPAM_THRESHOLD को 98.5% से ज़्यादा सुरक्षित बनाएं. ऐसे में, उन गलत टिप्पणियों को पोस्ट कर दिया जाएगा. इसे ध्यान में रखते हुए, नीचे दिए गए अन्य संभावित नतीजों के साथ जारी रखें...

स्पैम के तौर पर मार्क की गई स्पैम टिप्पणियां (सही पॉज़िटिव)

  1. "यह मज़ेदार है, लेकिन मेरी वेबसाइट पर मौजूद डाउनलोड लिंक बेहतर देखें!" संभावना स्पैम: 99.77873%
  2. &kot;मुझे पता है कि कुछ लोग जो आपको कुछ दवाएँ दे सकते हैं, वे बस जानकारी के लिए मेरी pr0file देख सकते हैं &&tt; संभावना स्पैम: 98.46955%
  3. &kot;और भी शानदार वीडियो डाउनलोड करने के लिए मेरी प्रोफ़ाइल देखें जो और भी बेहतर है! http://example.com&quat; प्रॉबेबिलिटी स्पैम: 96.26383%

ठीक है, इसलिए यह हमारी मूल 75% सीमा के साथ उम्मीद के मुताबिक काम कर रहा है, लेकिन पिछले कदम में आपने SPAM_THRESHOLD को 98.5% से ज़्यादा भरोसे के साथ बदला है, इसका मतलब है कि यहां दो उदाहरण दिए जाएंगे, इसलिए हो सकता है कि सीमा बहुत ज़्यादा हो. हो सकता है कि 96% बेहतर हो? अगर आप ऐसा करते हैं, तो पिछले सेक्शन की किसी टिप्पणी (गलत धनात्मक) को स्पैम के तौर पर तब मार्क किया जाएगा, जब वह 98.46466% रेट की गई थी.

ऐसी स्थिति में, इन सभी वास्तविक स्पैम टिप्पणियों को कैप्चर करना और ऊपर दी गई विफलता के लिए फिर से प्रशिक्षित करना सबसे अच्छा होता है. पेमेंट की सीमा को 96% पर सेट करने से, सभी पॉजिटिव अब भी कैप्चर होते हैं. साथ ही, ऊपर दी गई दो फ़ॉल्स पॉज़िटिव वैल्यू हटा दी जाती हैं. सिर्फ़ एक नंबर बदलने से परेशानी नहीं होगी.

जारी रखें...

ऐसी स्पैम टिप्पणियां जिन्हें पोस्ट करने की अनुमति दी गई थी (गलत नेगेटिव):

  1. &कोटेशन; और भी बेहतर वीडियो डाउनलोड करने के लिए मेरी प्रोफ़ाइल देखें, जो पहले से कहीं बेहतर है! संभावना स्पैम: 7.54926%
  2. &कोटेशन; संभावना स्पैम: 17.49849%
  3. "omg GOOG स्टॉक बस तैयार हो गया! बहुत देर हो जाने से पहले कोशिश करें!&कोटेशन; संभावना स्पैम: 20.42894%

इन टिप्पणियों के लिए, SPAM_THRESHOLD वैल्यू को और बदलकर आपको कुछ नहीं करना है. स्पैम की सीमा को 96% से कम करके ~9% तक कम करने के बाद, स्पैम के तौर पर मार्क की गई टिप्पणियों को असली के तौर पर मार्क किया जाएगा - इनमें से एक टिप्पणी के लिए दी गई रेटिंग 58% है. इस तरह की टिप्पणियों से निपटने का सिर्फ़ एक तरीका यह है कि ये मॉडल को ट्रेनिंग डेटा में शामिल किए जाने के साथ फिर से सिखाएं. इससे यह पता चलता है कि दुनिया भर में स्पैम क्या है और क्या नहीं.

फ़िलहाल, मॉडल को फिर से ट्रेनिंग देना ही बाकी है. साथ ही, हमने यह भी देखा कि जब आप कुछ खास स्पैम पर कॉल करने का फ़ैसला करते हैं, तो इससे जुड़ी परफ़ॉर्मेंस को बेहतर बनाने के लिए, थ्रेशोल्ड को कैसे बेहतर बनाया जा सकता है. एक इंसान के तौर पर, 75% बहुत आत्मविश्वास दिखाई देता है, लेकिन इस मॉडल के लिए आपको उदाहरण इनपुट के साथ ज़्यादा असरदार होने के लिए 81.5% की बढ़ोतरी करनी होगी.

कोई भी ऐसी जादुई वैल्यू नहीं है जो अलग-अलग मॉडल के साथ अच्छी तरह काम करती हो. साथ ही, इस थ्रेशोल्ड वैल्यू को हर मॉडल के हिसाब से सेट करना होगा. ऐसा, असल दुनिया के डेटा के साथ प्रयोग करने के बाद किया जाता है.

कुछ मामलों में, फ़ॉल्स पॉज़िटिव (या नेगेटिव) होने के गंभीर नतीजे हो सकते हैं (उदाहरण के लिए, मेडिकल इंडस्ट्री में) इसलिए, आप अपनी सीमा को बहुत ज़्यादा बढ़ा सकते हैं. साथ ही, ऐसे थ्रेशोल्ड के लिए ज़्यादा मैन्युअल तरीके से समीक्षा करने का अनुरोध कर सकते हैं जो थ्रेशोल्ड के बराबर नहीं है. यह डेवलपर के तौर पर आपका विकल्प है. इसके लिए, आपको कुछ प्रयोग करना होगा.

4. स्पैम टिप्पणी की पहचान करने वाले मॉडल को फिर से बताना

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

पहले से बने मॉडल का रीकैप

आपके बनाए गए पहले से बनाए गए मॉडल को मॉडल मेकर के ज़रिए किसी तीसरे पक्ष ने बनाया था. यह मॉडल काम करने के लिए एक &कोटेशन, औसत शब्द एम्बेड और कोट का इस्तेमाल करता है.

मॉडल को मॉडल मेकर के साथ बनाया गया था. इसलिए, मॉडल को फिर से अपनी ज़रूरत के मुताबिक बनाने के लिए, आपको Python में स्विच करना होगा. इसके बाद, बनाए गए मॉडल को TensorFlow.js फ़ॉर्मैट में एक्सपोर्ट करना होगा, ताकि आप मॉडल को ब्राउज़र में इस्तेमाल कर सकें. शुक्र है कि मॉडल मेकर उनके मॉडल का इस्तेमाल करना बहुत आसान बना देता है, ताकि उन्हें फ़ॉलो करना आसान हो. साथ ही, हम आपको इस प्रोसेस के बारे में बताएंगे, ताकि अगर आप Python का इस्तेमाल पहले कभी नहीं कर सकें, तो चिंता न करें!

Colab

आप इस कोडलैब से बहुत परेशान हैं, क्योंकि Python की सभी अलग-अलग यूटिलिटी के साथ एक Linux सर्वर सेट अप करना है. ये notebook किसी &kot&backend&kot; से कनेक्ट हो सकते हैं; - यह सिर्फ़ एक सर्वर है, जिसके पास पहले से कोई कॉन्टेंट इंस्टॉल होता है. इससे आप वेब ब्राउज़र में आर्बिट्ररी कोड को चलाकर नतीजे देख सकते हैं. यह तेज़ी से प्रोटोटाइप करने के लिए या इस तरह के ट्यूटोरियल में इस्तेमाल के लिए बहुत मददगार है.

colab.research.google.com पर जाएं और आपको वेलकम स्क्रीन के साथ दिखाया जाएगा, जैसा कि दिखाया गया है:

b2df89c1f7b38cc9.png

अब पॉप-अप विंडो में सबसे नीचे दाईं ओर मौजूद New Notebook बटन पर क्लिक करें. ऐसा करने पर, आपको एक खाली सहयोग दिखेगा:

94a875f67d6e34f6.png

वाह! अगला चरण, फ़्रंटएंड सहयोग को कुछ बैकएंड सर्वर से कनेक्ट करना है, ताकि आप Python कोड चला सकें. ऐसा करने के लिए, सबसे ऊपर दाईं ओर मौजूद कनेक्ट करें पर क्लिक करें. इसके बाद, होस्ट किए गए रनटाइम से कनेक्ट करें चुनें.

f4fcd56ae53527bd.png

कनेक्ट होने के बाद, आपको उसकी जगह पर रैम और डिस्क आइकॉन दिखेंगे:

d979e93ba595d1de.png

बहुत खूब! अब आपके पास, मॉडल बनाने की सुविधा को फिर से बनाने के लिए, Python में कोडिंग शुरू की जा सकती है. बस नीचे दिए गए चरणों का पालन करें.

पहला चरण

पहले खाली सेल में, नीचे दिया गया कोड कॉपी करें. यह आपके लिए Python's पैकेज मैनेजर का इस्तेमाल करके TensorFlow Light Maker Maker इंस्टॉल करेगा. इस टूल को &pit&pip&quot नाम से जाना जाता है. यह npm के जैसा है, जो इस कोड लैब के ज़्यादातर रीडर JS नेटवर्क से परिचित हो सकता है:

!pip install -q tflite-model-maker

हालांकि, सेल में कोड चिपकाने से उसकी परफ़ॉर्मेंस नहीं होगी. फिर, अपने माउस को ऊपर दिए गए स्लेटी सेल में घुमाएं और ऊपर कोड को पेस्ट करें. इसके बाद, सेल के बाईं ओर एक छोटा &कोटेशन आइकॉन दिखेगा:

be966130d68b5aac.png अभी-अभी सेल में टाइप किए गए कोड को चलाने के लिए, 'चलाएं' बटन पर क्लिक करें.

अब आपको दिखेगा कि मॉडल मेकर इंस्टॉल किया जा रहा है:

376bc0fbde89a60d.png

इस सेल का एक्ज़ीक्यूशन, दिखाए गए तरीके से पूरा होने के बाद, नीचे दिए गए अगले चरण पर जाएं.

दूसरा चरण

इसके बाद, दिखाए गए तरीके से एक नया कोड सेल जोड़ें, ताकि आप पहले सेल के बाद कुछ और कोड चिपका सकें और उसे अलग से लागू कर सकें:

7ec405d0d82b2143.png

अगली सेल में कई इंपोर्ट किए जाएंगे जिन्हें notebook के बाकी बचे हिस्से में इस्तेमाल करना होगा. नीचे दिए गए नए सेल में कॉपी करें और चिपकाएं:

import numpy as np
import os

from tflite_model_maker import configs
from tflite_model_maker import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import text_classifier
from tflite_model_maker.text_classifier import DataLoader

import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')

काफ़ी सामान्य आइटम, भले ही आप Python से न जानते हों. आप बस कुछ सुविधाएं इंपोर्ट कर रहे हैं और स्पैम की कैटगरी तय करने वाली सुविधा के लिए, मॉडल मेकर फ़ंक्शन ज़रूरी हैं. यह इस बात की भी जांच करेगा कि क्या आप TensorFlow 2.x चला रहे हैं, जो मॉडल मेकर का इस्तेमाल करने के लिए ज़रूरी है.

आखिर में, पहले की तरह ही सेल पर माउस घुमाते समय &kot;play&कोटेशन; आइकॉन दबाकर सेल को चलाएं और फिर अगले चरण के लिए एक नया कोड सेल जोड़ें.

तीसरा चरण

इसके बाद, आप अपने डिवाइस पर किसी रिमोट सर्वर से डेटा डाउनलोड करके training_data वैरिएबल को, डाउनलोड की गई स्थानीय फ़ाइल के पाथ के तौर पर सेट करें:

data_file = tf.keras.utils.get_file(fname='comment-spam-extras.csv', origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/jm_blog_comments_extras.csv', extract=False)

मॉडल मेकर डाउनलोड की गई आसान CSV फ़ाइलों से मॉडल को ट्रेनिंग दे सकता है. आपको बस यह बताना होगा कि किस कॉलम में टेक्स्ट है और किस लेबल पर. आपको इसे #39 चरण में देखना होगा. CSV फ़ाइल को खुद डाउनलोड करें और देखें कि उसमें क्या शामिल है.

कृपया ध्यान दें कि इस फ़ाइल का नाम jm_blog_comments_extras.csv है. यह वह मूल ट्रेनिंग डेटा है जिसका इस्तेमाल करके, हमने स्पैम टिप्पणियों के उस पहले मॉडल को मिले-जुले जनरेट किया है जिसे आपने खोज के नतीजों में, नए यूआरएल के साथ जोड़ा है. आपको जिन नए वाक्यों से सीखना है उनके अलावा, मॉडल को ट्रेनिंग देने के लिए आपको मूल ट्रेनिंग डेटा का इस्तेमाल करना होगा.

ज़रूरी नहीं: अगर आप इस CSV फ़ाइल को डाउनलोड करते हैं और आखिरी कुछ लाइनों की जांच करते हैं, तो आपको उन एज केस के उदाहरण दिखेंगे जो पहले ठीक से काम नहीं कर रहे थे. उन्हें ट्रेनिंग के मौजूदा डेटा के आखिर में जोड़ा गया है. पहले से बने मॉडल को ट्रेनिंग देने के लिए इस्तेमाल किया जाता था.

इस सेल को एक्ज़ीक्यूट करें. इसके बाद, इस टास्क को पूरा करने के बाद, एक नया सेल जोड़ें और चौथे चरण पर जाएं.

चौथा चरण

मॉडल मेकर का इस्तेमाल करने पर, आप नए सिरे से मॉडल नहीं बनाते. आम तौर पर, आप मौजूदा मॉडल का इस्तेमाल करते हैं, जिन्हें आप अपनी ज़रूरतों के मुताबिक बना सकते हैं.

मॉडल मेकर कई ऐसे प्री-लर्निंग मॉडल एम्बेडिंग का इस्तेमाल करता है जिनका आप इस्तेमाल कर सकते हैं. हालांकि, शुरू करने का यह सबसे आसान और तेज़ तरीका है average_word_vec जिसका इस्तेमाल आपने अपनी वेबसाइट बनाने के लिए पहले के कोडलैब में किया था. कोड यहां है:

spec = model_spec.get('average_word_vec')
spec.num_words = 2000
spec.seq_len = 20
spec.wordvec_dim = 7

आगे बढ़ें और नए सेल में चिपकाने के बाद इसे चलाएं.

समझना

num_words

पैरामीटर

यह शब्दों की वह संख्या है जिनका इस्तेमाल आप मॉडल को करना चाहते हैं. आपको लगता है कि यह जितना बेहतर होगा, लेकिन हर शब्द के इस्तेमाल की फ़्रीक्वेंसी के हिसाब से भी यह एक अच्छी जगह है. अगर आप पूरे संग्रह में हर शब्द का इस्तेमाल करते हैं, तो आप कुछ नया सीखने की कोशिश कर सकते हैं और सिर्फ़ एक बार इस्तेमाल किए जाने वाले शब्दों के महत्व को जानना चाहते हैं. यह बहुत काम का नहीं है. आपको हर # इसलिए, num_words पैरामीटर का इस्तेमाल करके, आप अपने मॉडल को जितने चाहें उतने शब्दों पर ट्यून कर सकते हैं. यहां छोटी संख्या का मॉडल छोटा और तेज़ होगा, लेकिन यह कम सटीक हो सकता है, क्योंकि यह कम शब्दों की पहचान करती है. यहां एक बड़ी संख्या में एक बड़ा और संभावित रूप से धीमा मॉडल होगा. आपको क्या करना है, यह पता लगाना अहम है. एक मशीन लर्निंग इंजीनियर के तौर पर यह आप पर निर्भर करता है कि आपके इस्तेमाल के लिए सबसे बेहतर क्या है.

समझना

wordvec_dim

पैरामीटर

wordvec_dim पैरामीटर उन डाइमेंशन की संख्या है जिनका इस्तेमाल आप हर शब्द के वेक्टर के लिए करना चाहते हैं. इन डाइमेंशन में खास तौर पर अलग-अलग एट्रिब्यूट होते हैं (मशीन लर्निंग एल्गोरिदम को ट्रेनिंग देते समय बनाए गए). किसी भी शब्द को मेज़र करने के लिए उसके इस्तेमाल किया जा सकता है. इस प्रोग्राम का इस्तेमाल करके, किसी खास शब्द से मिलते-जुलते शब्दों को ढूंढा जा सकता है.

उदाहरण के लिए, अगर आपके पास एक शब्द था, जैसे कि "मेडिकल" हो सकता है कि यह &एक कोट (मेडिकल) डाइमेंशन&कोटेशन; अन्य अहम डाइमेंशन के साथ जोड़ने पर स्पैम को तय करने का काम का हो सकता है.

& बात में मेडिकल क्षेत्र के हिसाब से सबसे ज़्यादा स्कोर करने वाले शब्दों के मामले में; ऐसा हो सकता है कि यह दूसरा डाइमेंशन, व्यक्ति के शरीर से शब्दों को जोड़ने वाला हो. यहां "leg", "arm&कोटेशन;, &कोटेशन;नेक&जैसे शब्द; मेडिकल क्षेत्र में भी बहुत ज़्यादा और काफ़ी ज़्यादा स्कोर भी दे सकते हैं.

मॉडल, इन डाइमेंशन का इस्तेमाल करके उन शब्दों का पता लगाने के लिए इस्तेमाल कर सकता है जो स्पैम से जुड़े हो सकते हैं. हो सकता है कि स्पैम ईमेल में ऐसे शब्द शामिल होने की ज़्यादा संभावना हो जो शरीर और चिकित्सा से जुड़े हों.

रिसर्च से पता चला है कि शब्दों की संख्या का चौथा रूट इस पैरामीटर के लिए अच्छी तरह काम करता है. अगर मैं और #39;2,000 शब्दों का इस्तेमाल करता हूं, तो शुरुआत के लिए अच्छा मतलब है कि सात डाइमेंशन हैं. अगर आप इस्तेमाल किए गए शब्दों की संख्या बदलते हैं, तो आप इसे भी बदल सकते हैं.

समझना

seq_len

पैरामीटर

जब इनपुट वैल्यू की बात आती है, तो आम तौर पर मॉडल बहुत सख्त होते हैं. किसी भाषा के मॉडल के लिए, इसका मतलब होता है कि भाषा के मॉडल में किसी खास, स्टैटिक, लंबाई के वाक्यों को बांटा जा सकता है. इसे #39;seq_len पैरामीटर से तय किया जाता है. इसका मतलब है, “क्रम की लंबाई '. जब आप शब्दों को संख्याओं (या टोकन) में बदलते हैं, तो एक वाक्य फिर इन टोकन का क्रम बन जाता है. इसलिए, आपके मॉडल को 20 टोकन वाले वाक्यों की कैटगरी तय करने और पहचानने के लिए इस मामले में ट्रेनिंग दी जाएगी. अगर वाक्य का साइज़ इससे बड़ा है, तो उसे छोटा कर दिया जाएगा. अगर यह छोटा है, तो इसे इस सीरीज़ में शामिल पहले कोडलैब की तरह ही पैड किया जाएगा.

पांचवां चरण - ट्रेनिंग का डेटा लोड करें

आपने पहले CSV फ़ाइल डाउनलोड की थी. अब डेटा लोड करने की सुविधा का इस्तेमाल करके, इसे ट्रेनिंग डेटा में बदलें, ताकि मॉडल इसे पहचान सके.

data = DataLoader.from_csv(
      filename=data_file,
      text_column='commenttext', 
      label_column='spam', 
      model_spec=spec,
      delimiter=',',
      shuffle=True,
      is_training=True)

train_data, test_data = data.split(0.9)

अगर आप किसी एडिटर में CSV फ़ाइल खोलते हैं, तो आपको दिखेगा कि हर लाइन में सिर्फ़ दो मान हैं. साथ ही, फ़ाइल की पहली पंक्ति में टेक्स्ट के साथ इनकी जानकारी दी गई है. आम तौर पर, हर एंट्री को कॉलम [#39;] माना जाता है. आप देख सकते हैं कि पहले कॉलम का डिस्क्रिप्टर commenttext है और हर लाइन पर पहली एंट्री, टिप्पणी का टेक्स्ट है.

इसी तरह, दूसरे कॉलम का डिस्क्रिप्टर spam है और आपको दिखेगा कि हर लाइन पर दूसरी एंट्री सही या गलत है, जो बताती है कि उस टेक्स्ट को स्पैम टिप्पणी माना गया है या नहीं. अन्य प्रॉपर्टी में डीलिमिटर वर्ण के साथ उस मॉडल को सेट किया जाता है जिसे आपने चौथे चरण में बनाया था. इस मामले में फ़ाइल के कॉमा लगाकर अलग किए जाने पर, एक कॉमा लगता है. आप ट्रेनिंग पैरामीटर को रैंडम तौर पर फिर से व्यवस्थित करने के लिए शफ़ल पैरामीटर भी सेट करते हैं, ताकि जो भी डेटा एक जैसा या इकट्ठा किया गया हो वह पूरे डेटा सेट में बीच-बीच में बंट जाए.

इसके बाद, data.split() का इस्तेमाल करके, ट्रेनिंग और डेटा की टेस्टिंग की जाएगी. .9 से यह पता चलता है कि 90% डेटासेट का इस्तेमाल ट्रेनिंग के लिए किया जाएगा, बाकी का इस्तेमाल जांच के लिए किया जाएगा.

छठा चरण - मॉडल बनाना

एक और सेल जोड़ें जहां हम मॉडल बनाने के लिए कोड जोड़ेंगे:

model = text_classifier.create(train_data, model_spec=spec, epochs=50)

इससे मॉडल मेकर के साथ एक टेक्स्ट क्लासीफ़ायर मॉडल तैयार होता है. साथ ही, आप जिस ट्रेनिंग डेटा का इस्तेमाल करना चाहते हैं (जो चौथे चरण में बताया गया था), मॉडल की खास बातों (जो चौथे चरण में भी सेट की गई थी) और कई यूआरएल (यहां दी गई जानकारी) के लिए 50 मामलों की जानकारी देते हैं.

मशीन लर्निंग का बुनियादी सिद्धांत यह है कि यह पैटर्न मैच करने का एक तरीका है. शुरुआत में, यह शब्दों के लिए पहले से तैयार किए गए वेट को लोड करेगा. साथ ही, उन्हें एक अनुमान के साथ ग्रुप करने की कोशिश करेगा ' इनमें से किसे एक ग्रुप के तौर पर स्पैम के तौर पर दिखाया गया है और किसे नहीं. पहली बार 50:50 के आस-पास के तौर पर, यह पहली बार 50:50 के करीब हो सकता है, क्योंकि मॉडल सिर्फ़ शुरू किया जा रहा है, जैसा कि नीचे दिखाया गया है:

d6c8116f8e7e781b.png

ऐसा करने के बाद, यह पता लगाता है कि मॉडल के नतीजे में क्या बदलाव है. साथ ही, उसके अनुमान में बदलाव करने के लिए, मॉडल का महत्व बदल जाता है. इसके बाद, वह कोशिश करेगा. यह epoch है. इसलिए, epoch=50 तय करने से यह लूप' की तरह दिखेगा, जैसा कि दिखाया गया है:

fc7bf6a948b7aa26.png

इसलिए, जब आप 50वें युग तक पहुंच जाएंगे, तब यह मॉडल आपको बहुत ज़्यादा सटीक जानकारी देने की कोशिश करेगा. इस मामले में, 99.1% रिपोर्ट दिख रही है!

सातवां चरण - मॉडल को एक्सपोर्ट करना

ट्रेनिंग पूरी हो जाने के बाद, आप मॉडल को एक्सपोर्ट कर सकते हैं. TensorFlow मॉडल को उसके फ़ॉर्मैट में प्रशिक्षित करता है, और वेब पेज पर इस्तेमाल करने के लिए इसे TensorFlow.js फ़ॉर्मैट में बदलना होगा. बस, नीचे दी गई जानकारी को एक नए सेल में चिपकाएं और उसे हटा दें:

model.export(export_dir="/js_export/", export_format=[ExportFormat.TFJS, ExportFormat.LABEL, ExportFormat.VOCAB])
!zip -r /js_export/ModelFiles.zip /js_export/

इस कोड को लागू करने के बाद, अगर आप Colab के बाईं ओर मौजूद छोटे फ़ोल्डर आइकॉन पर क्लिक करते हैं, तो आप ऊपर दिए गए फ़ोल्डर (रूट डायरेक्ट्री में - आपको एक लेवल ऊपर जाना पड़ सकता है) पर जाकर, ModelFiles.zip में मौजूद फ़ाइलों का ज़िप बंडल मिल सकता है.

इस ज़िप फ़ाइल को अभी अपने कंप्यूटर पर डाउनलोड करें क्योंकि आप पहले कोडलैब की तरह उन फ़ाइलों का इस्तेमाल करेंगे:

a9d8595a3e2564dc.png

वाह! Python का यह हिस्सा ख़त्म हो गया है. अब आप JavaScript वाले देश को लौटा सकते हैं, जिसे आप जानते हैं और पसंद करते हैं. वाह!

5. मशीन लर्निंग का नया मॉडल दिखाना

अब आप मॉडल को लोड करने के लिए करीब तैयार हैं. ऐसा करने से पहले, आपको कोडलैब में पहले से डाउनलोड की गई नई मॉडल फ़ाइलें अपलोड करनी होंगी, ताकि इन्हें आपके कोड में होस्ट और इस्तेमाल किया जा सके.

सबसे पहले, अगर आपने पहले से ऐसा नहीं किया है, तो हाल ही में चलाई गई मॉडल मेकर Colab नोटबुक से मॉडल की गई फ़ाइलों को अनज़िप करें. आपको इसके अलग-अलग फ़ोल्डर में मौजूद फ़ाइलें दिखनी चाहिए:

5634d536ef8be9ca.png

आपके पास यहां क्या है?

  • model.json - यह प्रशिक्षित TensorFlow.js मॉडल में से एक फ़ाइल है. आप इस खास फ़ाइल को JS कोड में रेफ़रंस दे सकते हैं.
  • group1-shard1of1.bin - यह ऐसी बाइनरी फ़ाइल है जिसमें एक्सपोर्ट किया गया TensorFlow.js मॉडल का ज़्यादातर डेटा सेव होता है और इसे ऊपर दिए गए डायरेक्ट्री में डाउनलोड करने के लिए आपके सर्वर पर कहीं भी होस्ट करना होगा model.json ऊपर.
  • vocab - बिना एक्सटेंशन वाली यह अजीब फ़ाइल, मॉडल मेकर की एक ऐसी चीज़ है जो हमें वाक्यों में शब्दों को कोड में बदलने का तरीका बताती है, ताकि मॉडल यह समझ सके कि उनका इस्तेमाल कैसे किया जाता है. हम अगले सेक्शन में इसके बारे में ज़्यादा जानकारी देंगे.
  • labels.txt - इसमें सिर्फ़ क्लास के नाम शामिल होते हैं, जिनका अनुमान मॉडल लगाता है. इस मॉडल के लिए, अगर आप इस फ़ाइल को अपने टेक्स्ट एडिटर में खोलते हैं, तो इसमें "false" और &कोटेशन;सही&kot; सूची में शामिल है. "न कि स्पैम&कोटेशन; या &कोटेशन;कोटेशन; इसका अनुमान आउटपुट के रूप में है.

TensorFlow.js मॉडल फ़ाइलें होस्ट करना

सबसे पहले, किसी वेब सर्वर पर जनरेट की गई model.json और *.bin फ़ाइलें रखें, ताकि आप उन्हें अपने वेब पेज से ऐक्सेस कर सकें.

मौजूदा मॉडल फ़ाइलें मिटाना

जब आप इस सीरीज़ के पहले कोडलैब के आखिरी नतीजे के साथ तैयार हो रहे हैं, तो आपको सबसे पहले अपलोड की गई मौजूदा मॉडल फ़ाइलें मिटानी होंगी. अगर आप Glitch.com का इस्तेमाल कर रहे हैं, तो बस model.json और group1-shard1of1.bin के लिए बाईं ओर मौजूद फ़ाइल पैनल की जांच करें. इसके बाद, हर फ़ाइल के लिए तीन बिंदु वाले मेन्यू ड्रॉपडाउन पर क्लिक करें और नीचे दिए गए तरीके से मिटाएं चुनें:

7412b0b795d3b84f.png

ग्लिच में नई फ़ाइलें अपलोड करना

वाह! अब नए अपलोड करें:

  1. अपने ग्लिच प्रोजेक्ट के बाएं पैनल में, एसेट फ़ोल्डर खोलें. साथ ही, अगर अपलोड किए गए सभी एसेट के नाम एक जैसे हैं, तो उन्हें मिटा दें.
  2. एसेट अपलोड करें पर क्लिक करें और इस फ़ोल्डर में अपलोड करने के लिए group1-shard1of1.bin चुनें. अपलोड होने के बाद यह कुछ ऐसा दिखाई देगा:

25a2251c7f165184.png

  1. वाह! अब मॉडल.json फ़ाइल के लिए भी यही करें, ताकि 2 फ़ाइलें आपके एसेट फ़ोल्डर में इस तरह की होनी चाहिए:

51a6dbd5d3097ffc.png

  1. अगर आप अभी-अभी अपलोड की गई group1-shard1of1.bin फ़ाइल पर क्लिक करते हैं, तो आप यूआरएल को उसकी जगह पर कॉपी कर सकते हैं. इस पाथ को अभी कॉपी करें, जैसा कि दिखाया गया है:

92ded8d46442c404.png

  1. अब स्क्रीन के नीचे बाईं ओर, टूल &g; टर्मिनल पर क्लिक करें. टर्मिनल विंडो के लोड होने का इंतज़ार करें.
  2. लोड होने के बाद निम्न करें और निर्देशिका को www फ़ोल्डर में बदलने के लिए enter दबाएं:

टर्मिनल:

cd www
  1. इसके बाद, wget की मदद से अपलोड की गई दो फ़ाइलों को डाउनलोड करने के लिए, नीचे दिए गए यूआरएल को ग्लिच के एसेट फ़ोल्डर में फ़ाइलों के लिए जनरेट किए गए यूआरएल से बदलें. हर फ़ाइल और यूआरएल के एसेट फ़ोल्डर की जांच करें.

ध्यान दें कि दो यूआरएल के बीच में अंतर होता है और आप जिन यूआरएल का इस्तेमाल करना चाहेंगे वे अलग-अलग यूआरएल से अलग होंगे, लेकिन वे एक जैसे दिखेंगे:

टर्मिनल

wget https://cdn.glitch.com/1cb82939-a5dd-42a2-9db9-0c42cab7e407%2Fmodel.json?v=1616111344958 https://cdn.glitch.com/1cb82939-a5dd-42a2-9db9-0c42cab7e407%2Fgroup1-shard1of1.bin?v=1616017964562

शानदार! अब आपने www फ़ोल्डर में अपलोड की गई फ़ाइलों की एक कॉपी बना ली है.

हालांकि, उस समय उन्हें अजीब नामों से डाउनलोड किया जाएगा. अगर आप टर्मिनल में ls टाइप करते हैं और Enter दबाएं, तो आपको कुछ ऐसा दिखेगा:

9CC90f1d053f517f.png

  1. mv निर्देश का इस्तेमाल करके, फ़ाइलों का नाम बदलें. कंसोल में इन्हें टाइप करें और हर लाइन के बाद Enter दबाएं:

टर्मिनल:

mv *group1-shard1of1.bin* group1-shard1of1.bin
mv *model.json* model.json
  1. आखिर में, टर्मिनल में refresh का इस्तेमाल करके ग्लिच प्रोजेक्ट रीफ़्रेश करें और Enter दबाएं:

टर्मिनल:

refresh

रीफ़्रेश करने के बाद, आपको यूज़र इंटरफ़ेस के www फ़ोल्डर में model.json और group1-shard1of1.bin दिखेंगे:

50dd98c0a8f3e629.png

वाह! आखिरी चरण में dictionary.js फ़ाइल को अपडेट करना है.

  1. अपनी नई डाउनलोड की गई वोकाब फ़ाइल को अपने टेक्स्ट एडिटर या इस टूल का इस्तेमाल करके मैन्युअल तरीके से सही JS फ़ॉर्मैट में बदलें. इसके बाद, आउटपुट को www फ़ोल्डर में dictionary.js के तौर पर सेव करें. अगर आपके पास पहले से कोई dictionary.js फ़ाइल है, तो आप उसमें से नया कॉन्टेंट कॉपी करके सेव कर सकते हैं.

बहुत बढ़िया! आपने सभी फ़ाइलों में बदलाव किया है. अगर आप अब वेबसाइट को आज़माते और इस्तेमाल करते हैं, तो आपको दिखेगा कि किस तरह से ट्रेनिंग के लिए इस्तेमाल किए गए मॉडल को उन मामलों में शामिल किया जा सकता है जिनकी जानकारी फिर से मिल चुकी है:

3ece5dbd0a673987.gif

जैसा कि आप देख सकते हैं, पहले छह अब सही तरीके से स्पैम के तौर पर तय नहीं किए गए हैं और छह के दूसरे बैच को स्पैम के तौर पर पहचाना गया है. बढ़िया!

आइए, कुछ वैरिएशन को आज़मा कर देखें कि क्या वह सामान्य तरीके से बनाया गया है. मूल रूप से कोई वाक्य न हो सका. जैसे:

&अहम जानकारी;om GOOG स्टॉक अभी तैयार है! बहुत देर हो जाने से पहले कोशिश करें!&कोटेशन;

इसे सही तरीके से स्पैम के तौर पर मार्क कर दिया गया है. हालांकि, अगर आप इसे बदलते हैं, तो क्या होगा:

&कोटेशन; इसलिए XYZ स्टॉक की वैल्यू अब-अभी बढ़ गई है! #39; देर से पहले कुछ खरीदें!&कोटेशन;

यहां 98% स्पैम के अनुमान लगाए गए हैं, जो स्टॉक के चिह्न और थोड़ा शब्दों में बदलाव करने के बावजूद सही है.

बेशक, अगर आप वाकई इस नए मॉडल को तोड़ने की कोशिश करेंगे, तो आप ऐसा कर सकेंगे. साथ ही, आपको उन सामान्य स्थितियों के लिए ज़्यादा से ज़्यादा खास वैरिएशन पाने का मौका मिल जाएगा जो आपको ऑनलाइन दिख सकती हैं. आने वाले समय के कोडलैब (कोड बनाना सीखना) में, हम आपको बताएंगे कि लाइव डेटा की मदद से, मॉडल को लगातार कैसे बेहतर बनाया जाए.

6. बधाई हो!

बधाई हो, आपने एक मौजूदा मशीन लर्निंग मॉडल को फिर से ट्रेनिंग दी है. इससे, आपको पता चला है कि आपने खोज के नतीजों में जो एज केस डाले हैं, वे ब्राउज़र पर सही तरीके से लागू हो गए हैं. साथ ही, असली दुनिया में इस्तेमाल किए जाने वाले ऐप्लिकेशन के लिए, TensorFlow.js की मदद से ब्राउज़र में ये बदलाव लागू किए जा सकते हैं.

रीकैप

इस कोडलैब में आप:

  1. पहले से बने टिप्पणी स्पैम मॉडल का इस्तेमाल करते समय खोजे गए ऐसे एज केस जो काम नहीं कर रहे थे
  2. आपने जिन एज केस का पता लगाया है उन्हें ध्यान में रखने के लिए मॉडल मेकर मॉडल को फिर से ट्रेनिंग दी है
  3. नए प्रशिक्षित मॉडल को TensorFlow.js फ़ॉर्मैट में एक्सपोर्ट किया गया
  4. नई फ़ाइलों का इस्तेमाल करने के लिए, आपके वेब ऐप्लिकेशन को अपडेट किया गया

आगे क्या होगा?

इसलिए, यह अपडेट बहुत अच्छा काम करता है, लेकिन किसी भी वेब ऐप्लिकेशन की तरह, इसमें समय के साथ बदलाव होते रहेंगे. बेहतर होगा कि अगर ऐप्लिकेशन समय के साथ लगातार बेहतर होता जाए, तो हमें हर बार मैन्युअल तरीके से ही ऐसा करना पड़े. क्या आपको ऐसा लग सकता है कि मॉडल को अपने-आप फिर से ट्रेनिंग देने के लिए, आप इन चरणों को अपने-आप फिर से चालू करने का तरीका क्या है? उदाहरण के लिए, 100 नई टिप्पणियों को गलत तरीके से अलग-अलग कैटगरी में मार्क किया गया है? अपनी नियमित वेब इंजीनियरिंग हैट लगाएं. शायद आप अपने-आप ऐसा करने का तरीका पता कर लें. अगर नहीं, तो कोई बात नहीं, सीरीज़ में अगला कोडलैब देखें जो आपको यह तरीका दिखाएगा.

अपने अनुभव हमारे साथ शेयर करें

आप आज की किसी भी क्रिएटिव गतिविधि को भी आसानी से बढ़ा सकते हैं. हमारा सुझाव है कि आप बॉक्स के बाहर सोचें और हैकिंग करना जारी रखें.

हमें #MadeWithTFJS हैशटैग का इस्तेमाल करके, सोशल मीडिया पर टैग करें. इससे आप, अपने प्रोजेक्ट को TensorFlow ब्लॉग या आने वाले समय में होने वाले इवेंट में दिखा सकेंगे. हमें यह देखकर खुशी होगी कि आप क्या बनाते हैं.

ज़्यादा जानकारी के लिए TensorFlow.js कोडलैब (कोड बनाना सीखना) देखें

चेक आउट करने के लिए वेबसाइटें