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

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

text-classification-result.png

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

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

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

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

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

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

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

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

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

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

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

शुरुआती स्तर सामान्य स्तर एडवांस लेवल

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

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

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

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

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

Android Studio में, सैंपल कोड डाउनलोड ( File > Open > .../codelab-textclassification-android-master/start) से codelab-textclassification-android-master डायरेक्ट्री (android_studio_folder.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 Android कॉन्फ़िगरेशन फ़ाइल मिल जाएगी. इसके बाद, google-services.json फ़ाइल को अपने प्रोजेक्ट की *app* डायरेक्ट्री में कॉपी करें.

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

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

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

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

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

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

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

ऐप्लिकेशन आपके डिवाइस पर लॉन्च हो जाना चाहिए. इस समय, आपका ऐप्लिकेशन अब भी बन जाना चाहिए.

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

हम टेक्स्ट क्लासिफ़िकेशन मॉडल को ट्रेन करने के लिए, TensorFlow Lite Model Maker का इस्तेमाल करेंगे. इससे किसी दिए गए टेक्स्ट के बारे में अनुमान लगाया जा सकेगा.

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

Colab में खोलें

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

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

app/build.gradle.kts फ़ाइल में, Firebase Machine Learning की डिपेंडेंसी जोड़ें.

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 Task Library की मदद से, TensorFlow Lite मॉडल को अपने ऐप्लिकेशन में इंटिग्रेट किया जा सकता है. इसके लिए, आपको सिर्फ़ कुछ लाइनें कोड करनी होंगी. हम Firebase से डाउनलोड किए गए TensorFlow Lite मॉडल का इस्तेमाल करके, NLClassifier इंस्टेंस को शुरू करेंगे. इसके बाद, हम इसका इस्तेमाल ऐप्लिकेशन इस्तेमाल करने वाले लोगों के टेक्स्ट इनपुट को कैटगरी में बांटने के लिए करेंगे. साथ ही, यूज़र इंटरफ़ेस (यूआई) पर नतीजे दिखाएंगे.

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

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

app/build.gradle

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

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

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

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

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

टेक्स्ट क्लासिफ़ायर को शुरू करना

इसके बाद, हम Task Library के NLClassifier का इस्तेमाल करके, Firebase से डाउनलोड किए गए सेंटीमेंट एनालिसिस मॉडल को लोड करेंगे.

MainActivity.java

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

// TODO 5: Define a NLClassifier variable

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

private NLClassifier textClassifier;

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

// 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 टूलबार में मौजूद चलाएं ( execute.png) पर क्लिक करें.

ऐप्लिकेशन को, फ़िल्म की समीक्षा में इस्तेमाल किए गए शब्दों के आधार पर, समीक्षा करने वाले व्यक्ति की भावना का सही अनुमान लगाना चाहिए.

img/text-classification-result.png

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

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

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

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

14. बधाई हो!

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

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

  • TensorFlow लाइट
  • Firebase ML

अगले चरण

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

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

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

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