TensorFlow Lite और Firebase की मदद से, अपने ऐप्लिकेशन में उपयोगकर्ता के डिवाइस पर टेक्स्ट क्लासिफ़िकेशन जोड़ें - Android कोडलैब (कोड बनाना सीखना)

1. खास जानकारी

text-classification-result.png

TensorFlow Lite और Firebase कोडलैब की मदद से, टेक्स्ट क्लासिफ़िकेशन की सुविधा में आपका स्वागत है. इस कोडलैब में, आपको अपने ऐप्लिकेशन में टेक्स्ट की कैटगरी तय करने वाले मॉडल को ट्रेन करने और उसे डिप्लॉय करने के लिए, TensorFlow Lite और Firebase का इस्तेमाल करने का तरीका पता चलेगा. यह कोडलैब, TensorFlow Lite के इस उदाहरण पर आधारित है.

टेक्स्ट की कैटगरी तय करने की प्रोसेस में, टेक्स्ट के कॉन्टेंट के हिसाब से उसके लिए टैग या कैटगरी असाइन की जाती हैं. यह नैचुरल लैंग्वेज प्रोसेसिंग (एनएलपी) के बुनियादी कामों में से एक है. इसमें, भावनाओं का विश्लेषण करना, विषय को लेबल करना, स्पैम की पहचान करना, और इंटेंट का पता लगाना शामिल है.

टेक्स्ट डेटा में भावनाओं (सकारात्मक, नकारात्मक, और सामान्य) का विश्लेषण करने और उन्हें अलग-अलग कैटगरी में बांटने की प्रोसेस को सेंटिमेंट विश्लेषण कहते हैं. इसके लिए, टेक्स्ट डेटा का विश्लेषण करने की तकनीकों का इस्तेमाल किया जाता है. सेंटिमेंट विश्लेषण की मदद से, कारोबारों को ऑनलाइन बातचीत और सुझाव/राय/शिकायत/राय देने की सुविधा में, प्रॉडक्ट, ब्रैंड या सेवाओं के बारे में ग्राहकों के सेंटिमेंट का पता चलता है.

इस ट्यूटोरियल में, सेंटीमेंट विश्लेषण के लिए मशीन लर्निंग मॉडल बनाने का तरीका बताया गया है. खास तौर पर, टेक्स्ट को सकारात्मक या नकारात्मक के तौर पर बांटने का तरीका बताया गया है. यह बाइनरी या दो-क्लास कैटगरी के उदाहरण का है. यह मशीन लर्निंग की एक अहम और व्यापक समस्या है.

आपको यह जानकारी मिलेगी

  • TF Lite मॉडल मेकर की मदद से, TF Lite के सेंटिमेंट विश्लेषण मॉडल को ट्रेन करना
  • Firebase ML में TFLite मॉडल डिप्लॉय करना और उन्हें अपने ऐप्लिकेशन से ऐक्सेस करना
  • TF Lite टास्क लाइब्रेरी का इस्तेमाल करके, अपने ऐप्लिकेशन में TF Lite के भावनाओं के विश्लेषण वाले मॉडल इंटिग्रेट करें

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

  • Android Studio का नया वर्शन.
  • सैंपल कोड.
  • Android 5.0 और Google Play services 9.8 या उसके बाद के वर्शन वाला टेस्ट डिवाइस या Google Play services 9.8 या उसके बाद के वर्शन वाला एमुलेटर
  • अगर डिवाइस का इस्तेमाल किया जा रहा है, तो कनेक्शन केबल.

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और इसमें दिए गए अभ्यास पूरे करें

Android ऐप्लिकेशन बनाने के अपने अनुभव को क्या रेटिंग देंगे?

शुरुआती इंटरमीडिएट कुशल

2. सैंपल कोड पाना

कमांड लाइन से, GitHub रिपॉज़िटरी का क्लोन बनाएं.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

अगर आपने git इंस्टॉल नहीं किया है, तो सैंपल प्रोजेक्ट को GitHub पेज से या इस लिंक पर क्लिक करके भी डाउनलोड किया जा सकता है.

3. स्टार्टर ऐप्लिकेशन इंपोर्ट करना

Android Studio में, सैंपल कोड डाउनलोड (फ़ाइल > खोलें > .../codelab-textclassification-android-master/start) से codelab-textclassification-android-master डायरेक्ट्री ( android_studio_फ़ोल्डर.png) चुनें.

अब आपके पास Android Studio में स्टार्ट प्रोजेक्ट खुला होना चाहिए.

4. स्टार्टर ऐप्लिकेशन चलाना

अब जब आपने Android Studio में प्रोजेक्ट इंपोर्ट कर लिया है, तो अब आप इस ऐप्लिकेशन को पहली बार इस्तेमाल कर सकते हैं. अपना Android डिवाइस कनेक्ट करें और Android Studio टूलबार में, चालू करें ( execute.png) पर क्लिक करें.

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

2fb4e69fafb2e3ed.png

5. Firebase कंसोल प्रोजेक्ट बनाएं

प्रोजेक्ट में Firebase जोड़ना

  1. Firebase कंसोल पर जाएं.
  2. प्रोजेक्ट जोड़ें को चुनें.
  3. प्रोजेक्ट का नाम चुनें या डालें.
  4. Firebase कंसोल में, सेटअप करने के बाकी चरण पूरे करें. इसके बाद, प्रोजेक्ट बनाएं पर क्लिक करें. अगर Google के किसी मौजूदा प्रोजेक्ट का इस्तेमाल किया जा रहा है, तो Firebase जोड़ें पर क्लिक करें.

6. ऐप्लिकेशन में Firebase जोड़ना

  1. अपने नए प्रोजेक्ट की खास जानकारी वाली स्क्रीन पर, सेटअप का वर्कफ़्लो लॉन्च करने के लिए Android आइकॉन पर क्लिक करें.
  2. कोडलैब के पैकेज का नाम डालें: org.tensorflow.lite.codelabs.textclassification

अपने ऐप्लिकेशन में google-services.json फ़ाइल जोड़ना

पैकेज का नाम जोड़ने और 'रजिस्टर करें** चुनने के बाद, 'google-services.json** पर क्लिक करें. इससे आपको Firebase से जुड़ी कॉन्फ़िगरेशन वाली फ़ाइल मिलेगी. इसके बाद, google-services.json फ़ाइल को अपने प्रोजेक्ट की *app* डायरेक्ट्री में कॉपी करें.

अपने ऐप्लिकेशन में Google की सेवाओं वाला प्लगिन जोड़ें

अपने ऐप्लिकेशन में Firebase जोड़ने के लिए, build.gradle.kts फ़ाइलों को अपडेट करने के लिए, Firebase कंसोल पर दिए गए निर्देशों का पालन करें.

google-services प्लग इन, Firebase का इस्तेमाल करने के लिए आपके ऐप्लिकेशन को कॉन्फ़िगर करने के लिए, google-services.json फ़ाइल का इस्तेमाल करता है.

Grele फ़ाइलों के साथ प्रोजेक्ट सिंक करना

यह पक्का करने के लिए कि आपके ऐप्लिकेशन के लिए सभी डिपेंडेंसी उपलब्ध हैं, आपको इस समय अपने प्रोजेक्ट को ग्रेडल फ़ाइलों के साथ सिंक करना चाहिए. फ़ाइल > चुनें Android Studio के टूलबार से, Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें.

7. Firebase की मदद से ऐप्लिकेशन चलाना

अब आपने अपनी JSON फ़ाइल की मदद से google-services प्लग इन को कॉन्फ़िगर कर लिया है. अब आपके पास Firebase की मदद से ऐप्लिकेशन चलाने का विकल्प है. अपना Android डिवाइस कनेक्ट करें और Android Studio टूलबार में Run ( execute.png) पर क्लिक करें.

इसके बाद, ऐप्लिकेशन आपके डिवाइस पर खुल जाएगा. इस स्थिति में, आपका ऐप्लिकेशन अब भी बिना किसी रुकावट के बन जाना चाहिए.

8. भावनाओं का विश्लेषण करने वाले मॉडल को ट्रेनिंग दें

हम टेक्स्ट की कैटगरी तय करने वाले मॉडल को ट्रेनिंग देने के लिए, TensorFlow Lite Model Maker का इस्तेमाल करेंगे. इससे टेक्स्ट की भावना का अनुमान लगाने में मदद मिलेगी.

यह चरण एक Python नोटबुक के तौर पर दिखाया गया है, जिसे Google Colab में खोला जा सकता है. आपके पास रनटाइम > सभी नोटबुक को एक साथ चलाने के लिए, सभी को चलाएं.

Colab में खोलें

यह चरण पूरा करने के बाद, आपके पास TensorFlow Lite की भावनाओं का विश्लेषण करने वाला मॉडल होगा, जिसे मोबाइल ऐप्लिकेशन पर डिप्लॉय किया जा सकता है.

9. Firebase ML में मॉडल को डिप्लॉय करना

Firebase ML में किसी मॉडल को डिप्लॉय करने की दो मुख्य वजहें हैं:

  1. हम ऐप्लिकेशन इंस्टॉल का साइज़ छोटा रख सकते हैं. साथ ही, ज़रूरत पड़ने पर ही मॉडल को डाउनलोड कर सकते हैं
  2. मॉडल को नियमित तौर पर अपडेट किया जा सकता है और इसके रिलीज़ साइकल में, पूरे ऐप्लिकेशन के मुकाबले अलग रिलीज़ साइकल का इस्तेमाल किया जा सकता है

मॉडल को कंसोल के ज़रिए या Firebase एडमिन SDK का इस्तेमाल करके, प्रोग्राम के हिसाब से डिप्लॉय किया जा सकता है. इस चरण में, हम इन्हें कंसोल के ज़रिए डिप्लॉय करेंगे.

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

जब कहा जाए, तब मॉडल को sentiment_analysis नाम दें और वह फ़ाइल अपलोड करें जिसे आपने पिछले चरण में Colab से डाउनलोड किया था.

3c3c50e6ef12b3b.png

10. Firebase ML से मॉडल डाउनलोड करें

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

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

app/build.gradle.kts फ़ाइल में, Firebase मशीन लर्निंग डिपेंडेंसी जोड़ें.

app/build.gradle.kts

यह टिप्पणी ढूंढें:

// TODO 1: Add Firebase ML dependency

इसके बाद, ये जोड़ें:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

जब Android Studio में आपके प्रोजेक्ट को सिंक करने के लिए कहा जाए, तो अभी सिंक करें को चुनें.

इसके बाद, Firebase से मॉडल डाउनलोड करने के लिए कुछ कोड जोड़ते हैं.

MainActivity.java

यह टिप्पणी ढूंढें:

// TODO 2: Implement a method to download TFLite model from Firebase

इसके बाद, ये जोड़ें:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

इसके बाद, गतिविधि के onCreate तरीके में downloadModel तरीके को कॉल करें.

MainActivity.java

यह टिप्पणी ढूंढें:

// TODO 3: Call the method to download TFLite model

फिर जोड़ें:

downloadModel("sentiment_analysis");

11. इस मॉडल को अपने ऐप्लिकेशन में इंटिग्रेट करें

Tensorflow Lite टास्क लाइब्रेरी की मदद से, कुछ ही कोड लाइन में अपने ऐप्लिकेशन में TensorFlow Lite मॉडल इंटिग्रेट किए जा सकते हैं. हम Firebase से डाउनलोड किए गए TensorFlow Lite मॉडल का इस्तेमाल करके, NLClassifier इंस्टेंस को शुरू करेंगे. इसके बाद, हम इसका इस्तेमाल, ऐप्लिकेशन के उपयोगकर्ताओं के टेक्स्ट इनपुट की कैटगरी तय करने और यूज़र इंटरफ़ेस (यूआई) पर नतीजा दिखाने के लिए करेंगे.

डिपेंडेंसी जोड़ना

ऐप्लिकेशन की Gradle फ़ाइल पर जाएं और ऐप्लिकेशन की डिपेंडेंसी में TensorFlow Lite टास्क लाइब्रेरी (टेक्स्ट) जोड़ें.

app/build.gradle

यह टिप्पणी ढूंढें:

// TODO 4: Add TFLite Task API (Text) dependency

इसके बाद, ये जोड़ें:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

जब Android Studio आपसे प्रोजेक्ट सिंक करने के लिए कहे, तो अभी सिंक करें को चुनें.

टेक्स्ट की कैटगरी तय करने वाले मॉडल को शुरू करना

इसके बाद, हम टास्क लाइब्रेरी के NLClassifier का इस्तेमाल करके, Firebase से डाउनलोड किया गया सेंटिमेंट विश्लेषण मॉडल लोड करेंगे.

MainActivity.java

आइए, एक NLClassifier इंस्टेंस वैरिएबल का एलान करते हैं. यह टिप्पणी ढूंढें:

// TODO 5: Define a NLClassifier variable

फिर जोड़ें:

private NLClassifier textClassifier;

textClassifier वैरिएबल को Firebase से डाउनलोड किए गए, भावनाओं से जुड़े विश्लेषण वाले मॉडल के साथ शुरू करें. यह टिप्पणी ढूंढें:

// TODO 6: Initialize a TextClassifier with the downloaded model

फिर जोड़ें:

textClassifier = NLClassifier.createFromFile(model.getFile());

टेक्स्ट की कैटगरी तय करना

textClassifier इंस्टेंस सेट अप हो जाने के बाद, एक ही तरीके से कॉल करके सेंटिमेंट विश्लेषण किया जा सकता है.

MainActivity.java

यह टिप्पणी ढूंढें:

// TODO 7: Run sentiment analysis on the input text

फिर जोड़ें:

List<Category> results = textClassifier.classify(text);

प्रोसेस होने के बाद की प्रोसेस लागू करना

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

MainActivity.java

यह टिप्पणी ढूंढें:

// TODO 8: Convert the result to a human-readable text

डमी नतीजे का टेक्स्ट जनरेट करने वाला कोड हटाएं:

String textToShow = "Dummy classification result.\n";

फिर जोड़ें:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. फ़ाइनल ऐप्लिकेशन चलाएं

आपने भावनाओं का विश्लेषण करने वाला मॉडल, ऐप्लिकेशन में जोड़ दिया है, इसलिए आइए इसकी जांच करते हैं. अपना Android डिवाइस कनेक्ट करें और Android Studio के टूलबार में Run ( execute.png )पर क्लिक करें.

ऐप्लिकेशन ऐसा होना चाहिए जो फ़िल्म की समीक्षा के बारे में आपकी डाली गई राय का सही अनुमान लगा पाए.

img/text-classification-result.png

13. Firebase की ज़्यादा सुविधाओं की मदद से, ऐप्लिकेशन को बेहतर बनाना

Firebase, आपके TFLite मॉडल को होस्ट करने के अलावा, मशीन लर्निंग के इस्तेमाल के उदाहरणों को बेहतर बनाने के लिए कई अन्य सुविधाएं भी उपलब्ध कराता है:

  • Firebase की परफ़ॉर्मेंस मॉनिटर करने की सुविधा का इस्तेमाल करके, उपयोगकर्ताओं की डिवाइस.
  • Firebase Analytics, उपयोगकर्ता की प्रतिक्रिया को मेज़र करके यह आकलन करता है कि आपका मॉडल, प्रोडक्शन में कितना अच्छा परफ़ॉर्म कर रहा है.
  • अपने मॉडल के कई वर्शन को टेस्ट करने के लिए, Firebase A/B टेस्टिंग
  • क्या आपको याद है कि हमने पहले TFLite मॉडल के दो वर्शन को ट्रेनिंग दी थी? A/B टेस्टिंग से यह पता चलता है कि प्रोडक्शन में कौनसा वर्शन बेहतर परफ़ॉर्म करता है!

अपने ऐप्लिकेशन में इन सुविधाओं का फ़ायदा पाने के तरीके के बारे में ज़्यादा जानने के लिए, नीचे दिए गए कोडलैब देखें:

14. बधाई हो!

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

हमने क्या-क्या कवर किया है

  • TensorFlow लाइट
  • Firebase ML

अगले चरण

  • Firebase परफ़ॉर्मेंस मॉनिटर करने की सुविधा की मदद से, अपने मॉडल की अनुमानित स्पीड मेज़र करें.
  • Firebase ML Model Management API की मदद से मॉडल को सीधे Colab से Firebase में डिप्लॉय करें.
  • उपयोगकर्ताओं को अनुमान के नतीजे के बारे में सुझाव/राय देने या शिकायत करने की सुविधा जोड़ें. साथ ही, उपयोगकर्ता के सुझाव/राय या शिकायत को ट्रैक करने के लिए, Firebase Analytics का इस्तेमाल करें.
  • Firebase A/B टेस्टिंग की मदद से, औसत शब्द वेक्टर मॉडल और MobileBERT मॉडल का A/B टेस्ट करें.

ज़्यादा जानें

क्या आपका कोई सवाल है?

समस्याओं की शिकायत करना