अपनी पसंद के मुताबिक टेक्स्ट की कैटगरी तय करने वाला मॉडल बनाएं और उससे अपने ऐप्लिकेशन अपडेट करें

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

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

ज़रूरी शर्तें

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

  • मैसेजिंग की बुनियादी स्टाइल वाला ऐप्लिकेशन बनाना
  • टिप्पणियों में होने वाले स्पैम का पता लगाने के लिए मशीन लर्निंग मॉडल बनाना
  • स्पैम फ़िल्टर करने वाले मशीन लर्निंग मॉडल का इस्तेमाल करने के लिए, ऐप्लिकेशन को अपडेट करें

आपको क्या सीखने को मिलेगा

  • 'मोबाइल पर टेक्स्ट क्लासिफ़िकेशन की सुविधा का इस्तेमाल शुरू करना' पाथवे में बनाए गए टेक्स्ट क्लासिफ़िकेशन मॉडल को अपडेट करने का तरीका
  • अपने मॉडल को पसंद के मुताबिक बनाने का तरीका, ताकि वह आपके ऐप्लिकेशन में सबसे ज़्यादा होने वाले स्पैम को ब्लॉक कर सके

आपको किन चीज़ों की ज़रूरत होगी

  • मैसेजिंग ऐप्लिकेशन और स्पैम फ़िल्टर करने वाला मॉडल, जिसे आपने पिछली गतिविधियों में देखा और बनाया था.

2. टेक्स्ट क्लासिफ़िकेशन की सुविधा को बेहतर बनाना

इसके लिए, इस रेपो को क्लोन करके कोड पाया जा सकता है. इसके बाद, TextClassificationStep2 से ऐप्लिकेशन लोड किया जा सकता है. यह आपको TextClassificationOnMobile->Android पाथ में दिखेगा.

पूरा हो चुका कोड भी आपके लिए TextClassificationStep3 के तौर पर उपलब्ध है.

अगर आपने बनाए गए मैसेज सेवा वाले ऐप्लिकेशन को खोलकर यह मैसेज भेजा, तो आपको स्पैम स्कोर बहुत कम मिलेगा:

f111e21903d6fd1f.png

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

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

c96613a0a4d1fef0.png

3. अपनी CSV फ़ाइल में बदलाव करना

ओरिजनल मॉडल को ट्रेन करने के लिए, एक डेटासेट बनाया गया था. यह डेटासेट, CSV (lmblog_comments.csv) फ़ाइल के तौर पर बनाया गया था. इसमें करीब एक हज़ार टिप्पणियां थीं. इन टिप्पणियों को स्पैम या स्पैम नहीं के तौर पर लेबल किया गया था. (अगर आपको CSV फ़ाइल की जांच करनी है, तो उसे किसी भी टेक्स्ट एडिटर में खोलें.)

CSV फ़ाइल में, पहली लाइन में कॉलम के बारे में जानकारी दी जाती है. यहां इन्हें commenttext और spam के तौर पर लेबल किया गया है.

इसके बाद की हर लाइन में यह फ़ॉर्मैट होता है:

64c0128548e1d082.png

दाईं ओर मौजूद लेबल, स्पैम के लिए सही है और स्पैम न होने के लिए गलत है. इस मामले में, तीसरी लाइन को स्पैम माना जाता है.

अपनी टिप्पणियां जोड़ने के लिए, उदाहरण के लिए, अगर आपकी साइट पर ऑनलाइन ट्रेडिंग के बारे में मैसेज भेजकर कई लोग स्पैम कर रहे हैं, तो आपको बस अपनी साइट के सबसे नीचे स्पैम टिप्पणियों के उदाहरण जोड़ने होंगे. उदाहरण के लिए:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true

काम पूरा होने के बाद, फ़ाइल को नए नाम से सेव करें. उदाहरण के लिए, lmblog_comments.csv. इसके बाद, इस फ़ाइल का इस्तेमाल करके किसी नए मॉडल को ट्रेनिंग दी जा सकेगी.

इस कोडलैब के बाकी हिस्से के लिए, आपको दिए गए उदाहरण का इस्तेमाल करना होगा. इसे Google Cloud Storage पर होस्ट किया गया है. इसमें ऑनलाइन ट्रेडिंग से जुड़े अपडेट भी शामिल हैं. अगर आपको अपना डेटासेट इस्तेमाल करना है, तो कोड में यूआरएल बदला जा सकता है!

4. नए डेटा के साथ मॉडल को फिर से ट्रेन करें

मॉडल को फिर से ट्रेन करने के लिए, पहले इस्तेमाल किए गए कोड (SpamCommentsModelMaker.ipynb) का इस्तेमाल किया जा सकता है. हालांकि, इसे नए CSV डेटासेट पर पॉइंट करें. इसे lmblog_comments_extras.csv कहा जाता है. अगर आपको अपडेट किए गए कॉन्टेंट के साथ पूरी नोटबुक चाहिए, तो इसे SpamCommentsUpdateModelMaker.ipynb. के तौर पर देखा जा सकता है

अगर आपके पास Google Colab का ऐक्सेस है, तो यहां जाकर इसे सीधे तौर पर लॉन्च किया जा सकता है. अगर आपके पास इसका ऐक्सेस नहीं है, तो repo से कोड पाएं और इसे अपनी पसंद के notebook एनवायरमेंट में चलाएं.

अपडेट किया गया कोड यहां दिया गया है:

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

ट्रेनिंग के दौरान, आपको दिखेगा कि मॉडल अब भी ज़्यादा सटीक तरीके से ट्रेन हो रहा है:

8886033d1f8161c.png

मॉडल, वोकाबुलरी, और लेबल फ़ाइलें डाउनलोड करने के लिए, नोटबुक देखें. अगले चरण में, आपको इन्हें Android में इंटिग्रेट करना होगा.

5. Android ऐप्लिकेशन अपडेट करना

  1. Android Studio में ऐप्लिकेशन खोलें. साथ ही, पक्का करें कि प्रोजेक्ट एक्सप्लोरर में सबसे ऊपर Android चुना गया हो.
  2. अपनी assets फ़ाइल ढूंढें. इसमें मॉडल फ़ाइल के पुराने वर्शन के लेबल, मॉडल, और शब्दावली शामिल होती है.

91116524e9016ed4.png

  1. ऐसेट फ़ोल्डर पर राइट क्लिक करें.
  2. मेन्यू में, अपने ऑपरेटिंग सिस्टम के फ़ाइल मैनेजर में फ़ोल्डर खोलने का विकल्प चुनें. (जैसा कि दिखाया गया है, Mac पर Finder में दिखाएं. Windows पर यह विकल्प Explorer में दिखाएं होगा. वहीं, Linux पर यह Files में खोलें या इसी तरह का कोई अन्य विकल्प होगा.)

25f63f9629657e85.png

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

आपको अपने ऐप्लिकेशन के कोड में कोई बदलाव करने की ज़रूरत नहीं है. इसे चलाएं और इसकी जांच करें. आपको ऊपर दिए गए नतीजों की तरह ही नतीजे दिखेंगे. इनमें मॉडल को "ऑनलाइन ट्रेडिंग" टेक्स्ट के बारे में पता चल गया है.

कोड का पूरा वर्शन, repo में TextClassificationStep3 के तौर पर उपलब्ध है.

6. iOS ऐप्लिकेशन अपडेट करना

इसके लिए, इस रेपो को क्लोन करके कोड पाया जा सकता है. इसके बाद, TextClassificationStep2 से ऐप्लिकेशन लोड किया जा सकता है. यह आपको TextClassificationOnMobile->Android पाथ में दिखेगा.

पूरा हो चुका कोड भी आपके लिए TextClassificationStep3 के तौर पर उपलब्ध है.

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

553b845565b5b822.png

अपने नए मॉडल का इस्तेमाल करने के लिए, ऐप्लिकेशन को अपडेट करना बहुत आसान है. सबसे आसान तरीका यह है कि आप फ़ाइल एक्सप्लोरर पर जाएं और model.tflite, vocab, और labels.txt के नए वर्शन पाएं. इसके बाद, उन्हें अपनी प्रोजेक्ट डायरेक्ट्री में कॉपी करें.

ऐसा करने के बाद, आपका ऐप्लिकेशन नए मॉडल के साथ काम करेगा. इसके बाद, इसे आज़माया जा सकता है. यहां उसी वाक्य का उदाहरण दिया गया है, लेकिन इसमें नए मॉडल का इस्तेमाल किया गया है:

9031ec260b1857a3.png

7. बधाई हो

हो गया! नए डेटा के साथ मॉडल को फिर से ट्रेन करके, उसे अपने Android और iOS ऐप्लिकेशन में जोड़कर, आपने बिना कोई नया कोड लिखे ही उनकी सुविधाओं को अपडेट कर दिया है!

अगले चरण

यह मॉडल सिर्फ़ एक खिलौना है. इसे सिर्फ़ 1, 000 आइटम के डेटा पर ट्रेन किया गया है.

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

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

इसके कई तरीके हैं. हम इस कोर्स के आने वाले कोडलैब में इनके बारे में जानेंगे!