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

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

क्लासिफ़िकेशन_result_screen.png

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

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

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

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

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

  • TF Lite Model Maker की मदद से, TF Lite की भावनाओं के विश्लेषण वाले मॉडल को ट्रेनिंग दें
  • Firebase ML में TF Lite मॉडल को डिप्लॉय करें और उन्हें अपने ऐप्लिकेशन से ऐक्सेस करें
  • Firebase Analytics की मदद से, मॉडल कितना सटीक है यह मेज़र करने के लिए, उपयोगकर्ता के सुझाव, शिकायत या राय ट्रैक करें
  • Firebase परफ़ॉर्मेंस मॉनिटर करने की सुविधा के ज़रिए प्रोफ़ाइल मॉडल की परफ़ॉर्मेंस
  • चुनें कि रिमोट कॉन्फ़िगरेशन की मदद से, डिप्लॉय किए गए कई मॉडल में से कौनसा मॉडल लोड किया जाए
  • Firebase A/B टेस्टिंग की मदद से, अलग-अलग मॉडल के साथ एक्सपेरिमेंट करें

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

  • Xcode 11 (या उसके बाद का वर्शन)
  • CocoaPods 1.9.1 (या उसके बाद के वर्शन)

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

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

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

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

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

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

  1. Firebase कंसोल पर जाएं.
  2. नया प्रोजेक्ट बनाएं चुनें और अपने प्रोजेक्ट का नाम "Firebase ML iOS कोडलैब" रखें.

3. सैंपल प्रोजेक्ट डाउनलोड करें

कोड डाउनलोड करें

सबसे पहले, सैंपल प्रोजेक्ट की कॉपी बनाएं और प्रोजेक्ट डायरेक्ट्री में pod update चलाएं:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

अगर आपने git इंस्टॉल नहीं किया है, तो इसके GitHub पेज से सैंपल प्रोजेक्ट डाउनलोड भी किया जा सकता है. इसके अलावा, इस लिंक पर क्लिक करके भी ऐसा किया जा सकता है. प्रोजेक्ट डाउनलोड करने के बाद, उसे Xcode में चलाएं और टेक्स्ट की कैटगरी तय करने के साथ-साथ, यह भी समझें कि वह कैसे काम करता है.

Firebase सेट अप करना

नया Firebase प्रोजेक्ट बनाने के लिए दस्तावेज़ का पालन करें. प्रोजेक्ट मिल जाने के बाद, Firebase कंसोल से अपने प्रोजेक्ट की GoogleService-Info.plist फ़ाइल डाउनलोड करें और उसे Xcode प्रोजेक्ट के रूट में खींचें और छोड़ें.

9efb62a92f27e939.png

Firebase को अपनी Podfile में जोड़ें और pod इंस्टॉल करें.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

अपने AppDelegate के didFinishLaunchingWithOptions वाले तरीके में, फ़ाइल के सबसे ऊपर Firebase को इंपोर्ट करें

import FirebaseCore

और Firebase कॉन्फ़िगर करने के लिए कोई कॉल जोड़ें.

FirebaseApp.configure()

यह पक्का करने के लिए कि ऐप्लिकेशन सही तरीके से कॉन्फ़िगर किया गया है और लॉन्च के समय क्रैश न हो, प्रोजेक्ट को फिर से चलाएं.

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

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

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

Colab में खोलें

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

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

ModelLoader.swift में सबसे ऊपर, Firebase मॉड्यूल इंपोर्ट करें.

import FirebaseCore
import FirebaseMLModelDownloader

इसके बाद, इन तरीकों को लागू करें.

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

ViewController.swift के viewDidLoad में, loadModel() को किए गए कॉल को हमारे नए मॉडल डाउनलोड करने के तरीके से बदलें.

// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")

  // TODO: Initialize an NLClassifier from the downloaded model
}

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

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

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

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

ऐप्लिकेशन की Podfile पर जाएं और ऐप्लिकेशन की डिपेंडेंसी में TensorFlow Lite की टास्क लाइब्रेरी (टेक्स्ट) जोड़ें. पक्का करें कि आपने target 'TextClassification' के एलान में डिपेंडेंसी जोड़ी हो.

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

नई डिपेंडेंसी इंस्टॉल करने के लिए, pod install चलाएं.

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

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

ViewController.swift

चलिए, TFLNLClassifier इंस्टेंस वैरिएबल का एलान करते हैं. फ़ाइल के सबसे ऊपर, नई डिपेंडेंसी इंपोर्ट करें:

import TensorFlowLiteTaskText

पिछले चरण में हमने जिस तरीके में बदलाव किया था उसके ऊपर यह टिप्पणी देखें:

// TODO: Add a TFLNLClassifier property.

TODO को निम्न कोड से बदलें:

private var classifier: TFLNLClassifier?

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

// TODO: Initialize an NLClassifier from the downloaded model

TODO को निम्न कोड से बदलें:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

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

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

ViewController.swift

classify(text:) तरीके में, TODO की टिप्पणी ढूंढें:

// TODO: Run sentiment analysis on the input text

टिप्पणी को इस कोड से बदलें:

guard let classifier = self.classifier else { return }

// Classify the text
let classifierResults = classifier.classify(text: text)

// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)

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

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

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

क्लासिफ़िकेशन_result_screen.png

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

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

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

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

10. बधाई हो!

इस कोडलैब में, आपने भावनाओं का विश्लेषण करने वाले 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 टेस्ट.

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

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

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