1. खास जानकारी
TensorFlow Lite और Firebase की मदद से टेक्स्ट क्लासिफ़िकेशन करने के बारे में जानकारी देने वाले कोडलैब में आपका स्वागत है. इस कोडलैब में, आपको अपने ऐप्लिकेशन में टेक्स्ट क्लासिफ़िकेशन मॉडल को ट्रेन और डिप्लॉय करने के लिए, TensorFlow Lite और Firebase का इस्तेमाल करने का तरीका बताया जाएगा. यह कोडलैब, इस TensorFlow Lite उदाहरण पर आधारित है.
टेक्स्ट क्लासिफ़िकेशन, टेक्स्ट को उसके कॉन्टेंट के हिसाब से टैग या कैटगरी असाइन करने की प्रोसेस है. यह नैचुरल लैंग्वेज प्रोसेसिंग (एनएलपी) के बुनियादी कामों में से एक है. इसका इस्तेमाल कई कामों के लिए किया जाता है. जैसे, भावना का विश्लेषण करना, विषय के हिसाब से लेबल लगाना, स्पैम का पता लगाना, और इरादे का पता लगाना.
टेक्स्ट का विश्लेषण करने की तकनीकों का इस्तेमाल करके, टेक्स्ट डेटा में मौजूद भावनाओं (सकारात्मक, नकारात्मक, और सामान्य) को समझना और उन्हें कैटगरी में बांटना, सेंटीमेंट विश्लेषण कहलाता है. भावनात्मक विश्लेषण की मदद से, कारोबार यह पता लगा सकते हैं कि ऑनलाइन बातचीत और सुझाव/राय/शिकायत में, ग्राहकों की भावनाएं प्रॉडक्ट, ब्रैंड या सेवाओं के बारे में कैसी हैं.
इस ट्यूटोरियल में, भावना का विश्लेषण करने के लिए मशीन लर्निंग मॉडल बनाने का तरीका बताया गया है. खास तौर पर, टेक्स्ट को पॉज़िटिव या नेगेटिव के तौर पर क्लासिफ़ाई करने का तरीका. यह बाइनरी या दो क्लास वाली कैटगरी में बांटने का उदाहरण है. यह मशीन लर्निंग की एक अहम समस्या है, जिसका इस्तेमाल कई तरह से किया जाता है.
आपको क्या सीखने को मिलेगा
- TF Lite Model Maker की मदद से, भावना का विश्लेषण करने वाले TF Lite मॉडल को ट्रेन करना
- TF Lite मॉडल को Firebase ML में डिप्लॉय करना और उन्हें अपने ऐप्लिकेशन से ऐक्सेस करना
- Firebase Analytics की मदद से, मॉडल की परफ़ॉर्मेंस को मेज़र करने के लिए उपयोगकर्ता की प्रतिक्रिया को ट्रैक करना
- Firebase Performance Monitoring की मदद से, प्रोफ़ाइल मॉडल की परफ़ॉर्मेंस को मॉनिटर करना
- चुनें कि डिप्लॉय किए गए कई मॉडल में से, कौनसा मॉडल रिमोट कॉन्फ़िगरेशन के ज़रिए लोड किया गया है
- Firebase A/B टेस्टिंग की मदद से, अलग-अलग मॉडल आज़माना
आपको इनकी ज़रूरत होगी
- Xcode 11 (या इसके बाद का वर्शन)
- CocoaPods 1.9.1 (या इसके बाद का वर्शन)
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Android ऐप्लिकेशन बनाने के अपने अनुभव को आप क्या रेटिंग देंगे?
2. Firebase कंसोल प्रोजेक्ट बनाना
प्रोजेक्ट में Firebase जोड़ना
- Firebase कंसोल पर जाएं.
- नया प्रोजेक्ट बनाएं चुनें और अपने प्रोजेक्ट का नाम "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 प्रोजेक्ट के रूट में खींचें और छोड़ें.
Firebase को अपने Podfile में जोड़ें और 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 पर डिप्लॉय करने के दो मुख्य फ़ायदे हैं:
- हम ऐप्लिकेशन के इंस्टॉल साइज़ को कम रख सकते हैं और सिर्फ़ ज़रूरत पड़ने पर मॉडल को डाउनलोड कर सकते हैं
- मॉडल को नियमित तौर पर अपडेट किया जा सकता है. साथ ही, इसे पूरे ऐप्लिकेशन से अलग रिलीज़ साइकल के साथ अपडेट किया जा सकता है
मॉडल को कंसोल या प्रोग्राम के ज़रिए डिप्लॉय किया जा सकता है. इसके लिए, Firebase Admin SDK का इस्तेमाल किया जाता है. इस चरण में, हम कंसोल के ज़रिए ऐप्लिकेशन को डिप्लॉय करेंगे.
सबसे पहले, Firebase कंसोल खोलें. इसके बाद, बाईं ओर मौजूद नेविगेशन पैनल में, मशीन लर्निंग पर क्लिक करें. अगर आपने पहली बार यह पेज खोला है, तो ‘शुरू करें' पर क्लिक करें. इसके बाद, "कस्टम" पर जाएं और "मॉडल जोड़ें" बटन पर क्लिक करें.
जब आपसे कहा जाए, तब मॉडल को sentiment_analysis
नाम दें. इसके बाद, उस फ़ाइल को अपलोड करें जिसे आपने पिछले चरण में Colab से डाउनलोड किया था.
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 Task Library की मदद से, TensorFlow Lite मॉडल को अपने ऐप्लिकेशन में इंटिग्रेट किया जा सकता है. इसके लिए, आपको सिर्फ़ कुछ लाइनें कोड करनी होंगी. हम Firebase से डाउनलोड किए गए TensorFlow Lite मॉडल का इस्तेमाल करके, TFLNLClassifier
इंस्टेंस को शुरू करेंगे. इसके बाद, हम इसका इस्तेमाल ऐप्लिकेशन इस्तेमाल करने वाले लोगों के टेक्स्ट इनपुट को कैटगरी में बांटने के लिए करेंगे. साथ ही, यूज़र इंटरफ़ेस (यूआई) पर नतीजे दिखाएंगे.
डिपेंडेंसी जोड़ना
ऐप्लिकेशन की Podfile पर जाएं और ऐप्लिकेशन की डिपेंडेंसी में TensorFlow Lite Task Library (Text) जोड़ें. पक्का करें कि आपने डिपेंडेंसी को target 'TextClassification'
डिक्लेरेशन के तहत जोड़ा हो.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
नई डिपेंडेंसी इंस्टॉल करने के लिए, pod install
चलाएं.
टेक्स्ट क्लासिफ़ायर को शुरू करना
इसके बाद, हम Task Library के NLClassifier
का इस्तेमाल करके, Firebase से डाउनलोड किए गए सेंटीमेंट एनालिसिस मॉडल को लोड करेंगे.
ViewController.swift
आइए, TFLNLClassifier इंस्टेंस वैरिएबल का एलान करें. फ़ाइल में सबसे ऊपर, नई डिपेंडेंसी इंपोर्ट करें:
import TensorFlowLiteTaskText
आपको यह टिप्पणी, पिछले चरण में बदले गए तरीके के ऊपर दिखेगी:
// TODO: Add a TFLNLClassifier property.
TODO की जगह यह कोड डालें:
private var classifier: TFLNLClassifier?
Firebase से डाउनलोड किए गए, भावना का विश्लेषण करने वाले मॉडल की मदद से textClassifier
वैरिएबल को शुरू करें. हमने पिछले चरण में यह टिप्पणी जोड़ी थी:
// 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 ( ) पर क्लिक करें.
ऐप्लिकेशन को, फ़िल्म की समीक्षा में इस्तेमाल किए गए शब्दों के आधार पर, समीक्षा करने वाले व्यक्ति की भावना का सही अनुमान लगाना चाहिए.
9. Firebase की ज़्यादा सुविधाओं की मदद से ऐप्लिकेशन को बेहतर बनाना
Firebase, TFLite मॉडल को होस्ट करने के साथ-साथ, मशीन लर्निंग के इस्तेमाल के उदाहरणों को बेहतर बनाने के लिए कई अन्य सुविधाएं भी देता है:
- Firebase Performance Monitoring की मदद से, उपयोगकर्ताओं के डिवाइस पर मॉडल इन्फ़रेंस की स्पीड को मेज़र करें.
- Firebase Analytics, यह मेज़र करने के लिए कि आपका मॉडल प्रोडक्शन में कैसा परफ़ॉर्म कर रहा है. इसके लिए, उपयोगकर्ता की प्रतिक्रिया को मेज़र किया जाता है.
- अपने मॉडल के कई वर्शन को टेस्ट करने के लिए, Firebase A/B टेस्टिंग का इस्तेमाल करना
- क्या आपको याद है कि हमने पहले अपने TFLite मॉडल के दो वर्शन को ट्रेन किया था? A/B टेस्टिंग, यह पता लगाने का एक अच्छा तरीका है कि प्रोडक्शन में कौनसा वर्शन बेहतर परफ़ॉर्म करता है!
अपने ऐप्लिकेशन में इन सुविधाओं का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यहां दिए गए कोडलैब देखें:
10. बधाई हो!
इस कोडलैब में, आपने भावनाओं का विश्लेषण करने वाले 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 टेस्ट करें.
ज़्यादा जानें
- Firebase Machine Learning से जुड़ा दस्तावेज़
- TensorFlow Lite के दस्तावेज़
- Firebase की मदद से ऐप्लिकेशन की परफ़ॉर्मेंस मेज़र करना
- Firebase की मदद से A/B टेस्टिंग मॉडल