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

1 अवलोकन

वर्गीकरण_परिणाम_स्क्रीन.png

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

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

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

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

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

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

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

  • Xcode 11 (या उच्चतर)
  • कोकोपोड्स 1.9.1 (या उच्चतर)

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

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

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

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

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

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

  1. फायरबेस कंसोल पर जाएं।
  2. नया प्रोजेक्ट बनाएं चुनें और अपने प्रोजेक्ट को "फायरबेस एमएल आईओएस कोडेलैब" नाम दें।

3. नमूना परियोजना प्राप्त करें

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

नमूना प्रोजेक्ट की क्लोनिंग करके और प्रोजेक्ट निर्देशिका में pod update चलाकर शुरुआत करें:

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

यदि आपके पास git स्थापित नहीं है, तो आप नमूना प्रोजेक्ट को इसके GitHub पेज से या इस लिंक पर क्लिक करके भी डाउनलोड कर सकते हैं। एक बार जब आप प्रोजेक्ट डाउनलोड कर लें, तो उसे Xcode में चलाएँ और यह कैसे काम करता है, यह जानने के लिए टेक्स्ट वर्गीकरण के साथ खेलें।

फायरबेस सेट करें

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

9efb62a92f27e939.png

अपने पॉडफ़ाइल में फ़ायरबेस जोड़ें और पॉड इंस्टॉल चलाएँ।

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

अपने AppDelegate की didFinishLaunchingWithOptions विधि में, फ़ाइल के शीर्ष पर Firebase आयात करें

import FirebaseCore

और फायरबेस को कॉन्फ़िगर करने के लिए एक कॉल जोड़ें।

FirebaseApp.configure()

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

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

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

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

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

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

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

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

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

ऐप के पॉडफाइल पर जाएं और ऐप की निर्भरता में टेन्सरफ्लो लाइट टास्क लाइब्रेरी (टेक्स्ट) जोड़ें। सुनिश्चित करें कि आपने target 'TextClassification' घोषणा के अंतर्गत निर्भरता जोड़ दी है।

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

नई निर्भरता स्थापित करने के लिए pod install चलाएँ।

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

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

व्यूकंट्रोलर.स्विफ्ट

आइए एक TFLNLClassifier इंस्टेंस वेरिएबल घोषित करें। फ़ाइल के शीर्ष पर, नई निर्भरता आयात करें:

import TensorFlowLiteTaskText

इस टिप्पणी को उस विधि के ऊपर खोजें जिसे हमने अंतिम चरण में संशोधित किया था:

// TODO: Add a TFLNLClassifier property.

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

private var classifier: TFLNLClassifier?

फायरबेस से डाउनलोड किए गए भावना विश्लेषण मॉडल के साथ textClassifier वैरिएबल को प्रारंभ करें। यह टिप्पणी ढूंढें जिसे हमने अंतिम चरण में जोड़ा था:

// TODO: Initialize an NLClassifier from the downloaded model

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

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

पाठ को वर्गीकृत करें

एक बार classifier इंस्टेंस स्थापित हो जाने के बाद, आप एकल विधि कॉल के साथ भावना विश्लेषण चला सकते हैं।

व्यूकंट्रोलर.स्विफ्ट

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 डिवाइस को कनेक्ट करें, और रन पर क्लिक करें ( निष्पादित.png ) Xcode टूलबार में।

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

वर्गीकरण_परिणाम_स्क्रीन.png

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

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

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

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

10. बधाई हो!

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

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

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

अगले कदम

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

और अधिक जानें

एक सवाल है?

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