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

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

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

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

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

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

आप इन चीज़ों के बारे में जानेंगे

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

आपको इनकी ज़रूरत होगी

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

2. टेक्स्ट की कैटगरी तय करने की सुविधा को बेहतर बनाएं

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

हो गया कोड, आपके लिए TextClassificationStep3 के तौर पर भी उपलब्ध है.

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

f111e21903d6fd1f.png

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

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

c96613a0a4d1fef0.png

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

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

CSV की पहली पंक्ति में कॉलम का ब्यौरा होता है – यहां उन्हें commenttext और spam के तौर पर लेबल किया गया है.

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

64c0128548e1d082.png

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

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

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 का ऐक्सेस है, तो उसे सीधे यहां से लॉन्च किया जा सकता है. इसके अलावा, रेपो से कोड लिया जा सकता है और उसे अपनी पसंद के नोटबुक एनवायरमेंट में चलाया जा सकता है.

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

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

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

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

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

91116524e9016ed4.png

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

25f63f9629657e85.png

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

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

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

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

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

हो गया कोड, आपके लिए TextClassificationStep3 के तौर पर भी उपलब्ध है.

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

553b845565b5b822.png

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

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

9031ec260b1857a3.png

7. बधाई हो

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

अगले चरण

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

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

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

आपके पास कई विकल्प हैं. हम आने वाले समय में, इस कोर्स के कोडलैब में इनके बारे में बात करेंगे!