TensorFlow Lite और Firebase - Android Codelab के साथ अपने ऐप में ऑन-डिवाइस टेक्स्ट वर्गीकरण जोड़ें

1 अवलोकन

पाठ-वर्गीकरण-परिणाम.png

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

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

भावना विश्लेषण पाठ विश्लेषण तकनीकों का उपयोग करके पाठ डेटा के भीतर भावनाओं (सकारात्मक, नकारात्मक और तटस्थ) की व्याख्या और वर्गीकरण है। भावना विश्लेषण व्यवसायों को ऑनलाइन बातचीत और फीडबैक में उत्पादों, ब्रांडों या सेवाओं के प्रति ग्राहकों की भावना की पहचान करने की अनुमति देता है।

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

आप क्या सीखेंगे

  • टीएफ लाइट मॉडल मेकर के साथ टीएफ लाइट भावना विश्लेषण मॉडल को प्रशिक्षित करें
  • टीएफ लाइट मॉडल को फायरबेस एमएल पर तैनात करें और उन्हें अपने ऐप से एक्सेस करें
  • टीएफ लाइट टास्क लाइब्रेरी का उपयोग करके टीएफ लाइट भावना विश्लेषण मॉडल को अपने ऐप में एकीकृत करें

आपको किस चीज़ की ज़रूरत पड़ेगी

  • नवीनतम एंड्रॉइड स्टूडियो संस्करण।
  • नमूना कोड।
  • Android 5.0+ और Google Play सेवाओं 9.8 या बाद के संस्करण वाला एक परीक्षण उपकरण, या Google Play सेवाओं 9.8 या बाद के संस्करण वाला एक एमुलेटर
  • यदि किसी उपकरण का उपयोग कर रहे हैं, तो एक कनेक्शन केबल।

आप इस ट्यूटोरियल का उपयोग कैसे करेंगे?

इसे केवल पूरा पढ़ें इसे पढ़ें और अभ्यास पूरा करें

एंड्रॉइड ऐप्स बनाने में आपके अनुभव का मूल्यांकन कैसे करेंगे?

नौसिखिए मध्यवर्ती प्रवीण

2. नमूना कोड प्राप्त करें

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

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

यदि आपके पास git स्थापित नहीं है, तो आप नमूना प्रोजेक्ट को इसके GitHub पेज से या इस लिंक पर क्लिक करके भी डाउनलोड कर सकते हैं।

3. स्टार्टर ऐप आयात करें

एंड्रॉइड स्टूडियो से, codelab-textclassification-android-master निर्देशिका का चयन करें ( android_studio_folder.png ) नमूना कोड डाउनलोड से ( फ़ाइल > ओपन > .../कोडलैब-टेक्स्टक्लासिफिकेशन-एंड्रॉइड-मास्टर/स्टार्ट)।

अब आपके पास एंड्रॉइड स्टूडियो में स्टार्ट प्रोजेक्ट खुला होना चाहिए।

4. स्टार्टर ऐप चलाएँ

अब जब आपने प्रोजेक्ट को एंड्रॉइड स्टूडियो में आयात कर लिया है, तो आप पहली बार ऐप चलाने के लिए तैयार हैं। अपने एंड्रॉइड डिवाइस को कनेक्ट करें, और रन पर क्लिक करें ( निष्पादित.png )एंड्रॉइड स्टूडियो टूलबार में।

ऐप आपके डिवाइस पर लॉन्च होना चाहिए. इसमें केवल एक सरल यूआई है जो अगले चरणों में टेक्स्ट वर्गीकरण मॉडल को एकीकृत और परीक्षण करना आसान बनाता है। इस बिंदु पर, यदि आप भावनाओं की भविष्यवाणी करने का प्रयास करते हैं, तो ऐप केवल कुछ डमी परिणाम लौटाएगा।

2fb4e69fafb2e3ed.png

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

प्रोजेक्ट में फायरबेस जोड़ें

  1. फायरबेस कंसोल पर जाएं।
  2. प्रोजेक्ट जोड़ें चुनें.
  3. प्रोजेक्ट का नाम चुनें या दर्ज करें.
  4. फायरबेस कंसोल में शेष सेटअप चरणों का पालन करें, फिर प्रोजेक्ट बनाएं पर क्लिक करें (या यदि आप मौजूदा Google प्रोजेक्ट का उपयोग कर रहे हैं तो फायरबेस जोड़ें)।

6. ऐप में फायरबेस जोड़ें

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

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

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

अपने ऐप में google-services प्लगइन जोड़ें

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

Google-services प्लगइन आपके एप्लिकेशन को Firebase का उपयोग करने के लिए कॉन्फ़िगर करने के लिए google-services.json फ़ाइल का उपयोग करता है।

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

यह सुनिश्चित करने के लिए कि सभी निर्भरताएँ आपके ऐप के लिए उपलब्ध हैं, आपको इस बिंदु पर अपने प्रोजेक्ट को ग्रेडेल फ़ाइलों के साथ सिंक करना चाहिए। एंड्रॉइड स्टूडियो टूलबार से फ़ाइल > ग्रैडल फ़ाइलों के साथ सिंक प्रोजेक्ट चुनें।

7. ऐप को फायरबेस से चलाएं

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

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

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

हम किसी दिए गए पाठ की भावना की भविष्यवाणी करने के लिए पाठ वर्गीकरण मॉडल को प्रशिक्षित करने के लिए टेन्सरफ्लो लाइट मॉडल मेकर का उपयोग करेंगे।

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

कोलाब में खोलें

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

9. फायरबेस एमएल में एक मॉडल तैनात करें

फायरबेस एमएल में एक मॉडल तैनात करना दो मुख्य कारणों से उपयोगी है:

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

मॉडल को फायरबेस एडमिन एसडीके का उपयोग करके या तो कंसोल के माध्यम से या प्रोग्रामेटिक रूप से तैनात किया जा सकता है। इस चरण में हम कंसोल के माध्यम से तैनात करेंगे।

सबसे पहले, फायरबेस कंसोल खोलें और बाएं नेविगेशन पैनल में मशीन लर्निंग पर क्लिक करें। यदि आप इसे पहली बार खोल रहे हैं तो 'आरंभ करें' पर क्लिक करें। फिर "कस्टम" पर जाएँ और "मॉडल जोड़ें" बटन पर क्लिक करें।

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

3c3c50e6ef12b3b.png

10. फायरबेस एमएल से मॉडल डाउनलोड करें

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

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

app/build.gradle.kts फ़ाइल में, फ़ायरबेस मशीन लर्निंग निर्भरता जोड़ें।

ऐप/बिल्ड.ग्रेडल.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")

जब एंड्रॉइड स्टूडियो द्वारा आपके प्रोजेक्ट को सिंक करने के लिए कहा जाए, तो अभी सिंक करें चुनें।

तो चलिए 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 मॉडल को अपने ऐप में एकीकृत करने में मदद करती है। हम फायरबेस से डाउनलोड किए गए TensorFlow Lite मॉडल का उपयोग करके एक NLClassifier इंस्टेंस आरंभ करेंगे। फिर हम इसका उपयोग ऐप उपयोगकर्ताओं से टेक्स्ट इनपुट को वर्गीकृत करने और यूआई पर परिणाम दिखाने के लिए करेंगे।

निर्भरता जोड़ें

ऐप की ग्रैडल फ़ाइल पर जाएं और ऐप की निर्भरता में TensorFlow Lite टास्क लाइब्रेरी (टेक्स्ट) जोड़ें।

ऐप/बिल्ड.ग्रेडल

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

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

फिर जोड़िए:

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

जब एंड्रॉइड स्टूडियो द्वारा आपके प्रोजेक्ट को सिंक करने के लिए कहा जाए, तो अभी सिंक करें चुनें।

एक टेक्स्ट क्लासिफायरियर प्रारंभ करें

फिर हम टास्क लाइब्रेरी के NLClassifier का उपयोग करके फायरबेस से डाउनलोड किए गए भावना विश्लेषण मॉडल को लोड करेंगे।

MainActivity.java

आइए एक NLClassifier इंस्टेंस वेरिएबल घोषित करें। यह टिप्पणी ढूंढें:

// TODO 5: Define a NLClassifier variable

फिर जोड़िए:

private NLClassifier textClassifier;

फायरबेस से डाउनलोड किए गए भावना विश्लेषण मॉडल के साथ 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. अंतिम ऐप चलाएँ

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

ऐप को आपके द्वारा दर्ज की गई फिल्म समीक्षा की भावना का सही अनुमान लगाने में सक्षम होना चाहिए।

img/text-classification-result.png

13. अधिक फायरबेस सुविधाओं के साथ ऐप को सशक्त बनाएं

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

  • उपयोगकर्ताओं के डिवाइस पर चल रहे आपके मॉडल अनुमान गति को मापने के लिए फायरबेस प्रदर्शन निगरानी।
  • फायरबेस एनालिटिक्स उपयोगकर्ता की प्रतिक्रिया को मापकर यह मापता है कि आपका मॉडल उत्पादन में कितना अच्छा प्रदर्शन करता है।
  • आपके मॉडल के कई संस्करणों का परीक्षण करने के लिए फायरबेस ए/बी परीक्षण
  • क्या आपको याद है कि हमने पहले अपने TFLite मॉडल के दो संस्करणों को प्रशिक्षित किया था? ए/बी परीक्षण यह पता लगाने का एक अच्छा तरीका है कि कौन सा संस्करण उत्पादन में बेहतर प्रदर्शन करता है!

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

14. बधाई हो!

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

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

  • टेन्सरफ्लो लाइट
  • फायरबेस एमएल

अगले कदम

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

और अधिक जानें

एक सवाल है?

मुद्दों की रिपोर्ट करें