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

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

classification_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 Codelab" रखें.

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

अपनी Podfile में Firebase जोड़ें और pod install चलाएं.

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

ऐप्लिकेशन को, फ़िल्म की समीक्षा के सेंटीमेंट का सही अनुमान लगाना चाहिए.

क्लासिफ़िकेशन_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 टेस्ट.

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

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

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