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

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

टेक्स्ट-क्लासिफ़िकेशन-result.png

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

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

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

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

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

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

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

  • Android Studio का सबसे नया वर्शन.
  • सैंपल कोड.
  • आपके पास Android 5.0 और उसके बाद के वर्शन और Google Play services के साथ काम करने वाला टेस्ट डिवाइस हो.इसके अलावा, आपके पास 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 डायरेक्ट्री ( android_studio_folder.png) चुनें (फ़ाइल > खोलें > .../codelab-textclassification-android-Master/start).

अब Android Studio में स्टार्ट प्रोजेक्ट खुल जाएगा.

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

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

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

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-सेवाएं प्लग इन आपके ऐप्लिकेशन को Firebase का इस्तेमाल करने के लिए कॉन्फ़िगर करने के लिए google-services.json फ़ाइल का इस्तेमाल करता है.

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

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

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

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

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

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 ( एक्ज़ीक्यूट करें )पर क्लिक करें.

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

img/text-classification-result.png

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

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

  • 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 टेस्टिंग के साथ A/B टेस्ट, औसत वर्ड वेक्टर मॉडल और MobileBERT मॉडल का A/B टेस्ट.

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

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

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