১. সংক্ষিপ্ত বিবরণ

TensorFlow Lite এবং Firebase ব্যবহার করে টেক্সট ক্লাসিফিকেশন কোডল্যাবে আপনাকে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কিভাবে TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি টেক্সট ক্লাসিফিকেশন মডেলকে প্রশিক্ষণ ও স্থাপন করতে হয়। এই কোডল্যাবটি এই TensorFlow Lite উদাহরণটির উপর ভিত্তি করে তৈরি।
টেক্সট ক্লাসিফিকেশন হলো কোনো টেক্সটের বিষয়বস্তু অনুযায়ী সেটিকে ট্যাগ বা ক্যাটাগরিতে বিভক্ত করার প্রক্রিয়া। এটি ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং (NLP)-এর অন্যতম মৌলিক কাজ, যার ব্যাপক প্রয়োগ রয়েছে, যেমন সেন্টিমেন্ট অ্যানালাইসিস, টপিক লেবেলিং, স্প্যাম ডিটেকশন এবং ইনটেন্ট ডিটেকশন।
সেন্টিমেন্ট অ্যানালাইসিস হলো টেক্সট অ্যানালাইসিস কৌশল ব্যবহার করে টেক্সট ডেটার মধ্যেকার আবেগ (ইতিবাচক, নেতিবাচক এবং নিরপেক্ষ)-এর ব্যাখ্যা ও শ্রেণিবিন্যাস। সেন্টিমেন্ট অ্যানালাইসিস ব্যবসা প্রতিষ্ঠানগুলোকে অনলাইন কথোপকথন এবং প্রতিক্রিয়ার মাধ্যমে পণ্য, ব্র্যান্ড বা পরিষেবার প্রতি গ্রাহকদের মনোভাব শনাক্ত করতে সাহায্য করে।
এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে সেন্টিমেন্ট অ্যানালাইসিসের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয়, বিশেষত কোনো টেক্সটকে পজিটিভ বা নেগেটিভ হিসেবে শ্রেণিবদ্ধ করার ক্ষেত্রে। এটি বাইনারি—বা দুই-শ্রেণির—শ্রেণিবিন্যাসের একটি উদাহরণ, যা এক ধরনের গুরুত্বপূর্ণ এবং বহুল প্রযোজ্য মেশিন লার্নিং সমস্যা।
আপনি যা শিখবেন
- TF Lite Model Maker ব্যবহার করে একটি TF Lite সেন্টিমেন্ট অ্যানালাইসিস মডেলকে প্রশিক্ষণ দিন
- TF Lite মডেলগুলো Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে সেগুলো অ্যাক্সেস করুন।
- ফায়ারবেস অ্যানালিটিক্স ব্যবহার করে মডেলের নির্ভুলতা পরিমাপ করতে ব্যবহারকারীর মতামত ট্র্যাক করুন।
- ফায়ারবেস পারফরম্যান্স মনিটরিংয়ের মাধ্যমে প্রোফাইল মডেলের পারফরম্যান্স
- রিমোট কনফিগের মাধ্যমে একাধিক ডেপ্লয়েড মডেলের মধ্যে কোনটি লোড করা হবে তা নির্বাচন করুন।
- ফায়ারবেস এ/বি টেস্টিং এর মাধ্যমে বিভিন্ন মডেল নিয়ে পরীক্ষা করুন
আপনার যা যা লাগবে
- এক্সকোড ১১ (বা উচ্চতর সংস্করণ)
- কোকোপডস ১.৯.১ (বা উচ্চতর সংস্করণ)
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
অ্যান্ড্রয়েড অ্যাপ তৈরির ক্ষেত্রে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. ফায়ারবেস কনসোল প্রজেক্ট তৈরি করুন
প্রকল্পে Firebase যোগ করুন
- ফায়ারবেস কনসোলে যান।
- Create New Project নির্বাচন করুন এবং আপনার প্রজেক্টের নাম দিন "Firebase ML iOS Codelab"।
৩. নমুনা প্রকল্পটি সংগ্রহ করুন
কোডটি ডাউনলোড করুন
প্রথমে স্যাম্পল প্রজেক্টটি ক্লোন করুন এবং প্রজেক্ট ডিরেক্টরিতে pod update চালান:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
আপনার যদি গিট ইনস্টল করা না থাকে, তাহলে আপনি এর গিটহাব পেজ থেকে অথবা এই লিঙ্কে ক্লিক করে স্যাম্পল প্রজেক্টটি ডাউনলোড করতে পারেন। প্রজেক্টটি ডাউনলোড করার পর, এটি এক্সকোডে রান করুন এবং এটি কীভাবে কাজ করে সে সম্পর্কে ধারণা পেতে টেক্সট ক্লাসিফিকেশন নিয়ে পরীক্ষা-নিরীক্ষা করুন।
ফায়ারবেস সেট আপ করুন
একটি নতুন Firebase প্রজেক্ট তৈরি করতে ডকুমেন্টেশন অনুসরণ করুন। আপনার প্রজেক্টটি তৈরি হয়ে গেলে, Firebase কনসোল থেকে আপনার প্রজেক্টের GoogleService-Info.plist ফাইলটি ডাউনলোড করুন এবং এটিকে Xcode প্রজেক্টের রুটে ড্র্যাগ করে দিন।

আপনার Podfile-এ Firebase যোগ করুন এবং pod install চালান।
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
আপনার AppDelegate এর didFinishLaunchingWithOptions মেথডের ফাইলের শীর্ষে Firebase ইম্পোর্ট করুন।
import FirebaseCore
এবং ফায়ারবেস কনফিগার করার জন্য একটি কল যোগ করুন।
FirebaseApp.configure()
অ্যাপটি সঠিকভাবে কনফিগার করা হয়েছে এবং চালু করার সময় ক্র্যাশ করছে না, তা নিশ্চিত করতে প্রজেক্টটি আবার চালান।
৪. একটি সেন্টিমেন্ট অ্যানালাইসিস মডেলকে প্রশিক্ষণ দিন
আমরা প্রদত্ত কোনো টেক্সটের সেন্টিমেন্ট প্রেডিক্ট করার জন্য একটি টেক্সট ক্লাসিফিকেশন মডেলকে প্রশিক্ষণ দিতে TensorFlow Lite Model Maker ব্যবহার করব।
এই ধাপটি একটি পাইথন নোটবুক হিসেবে দেখানো হয়েছে, যা আপনি গুগল কোলাবে খুলতে পারবেন।
কোলাবে খুলুন
এই ধাপটি শেষ করার পর, আপনার কাছে একটি TensorFlow Lite সেন্টিমেন্ট অ্যানালাইসিস মডেল থাকবে যা একটি মোবাইল অ্যাপে স্থাপনের জন্য প্রস্তুত।
৫. ফায়ারবেস এমএল-এ একটি মডেল স্থাপন করুন
ফায়ারবেস এমএল-এ একটি মডেল স্থাপন করা দুটি প্রধান কারণে উপকারী:
- আমরা অ্যাপ ইনস্টলের আকার ছোট রাখতে পারি এবং শুধুমাত্র প্রয়োজন হলেই মডেলটি ডাউনলোড করতে পারি।
- মডেলটি নিয়মিত এবং সম্পূর্ণ অ্যাপের চেয়ে ভিন্ন একটি রিলিজ চক্রে আপডেট করা যেতে পারে।
মডেলটি কনসোলের মাধ্যমে অথবা ফায়ারবেস অ্যাডমিন এসডিকে (Firebase Admin SDK) ব্যবহার করে প্রোগ্রাম্যাটিকভাবে ডেপ্লয় করা যায়। এই ধাপে আমরা কনসোলের মাধ্যমে ডেপ্লয় করব।
প্রথমে, Firebase Console খুলুন এবং বাম দিকের নেভিগেশন প্যানেলে থাকা Machine Learning-এ ক্লিক করুন। আপনি যদি এটি প্রথমবার খুলে থাকেন, তাহলে 'Get Started'-এ ক্লিক করুন। এরপর "Custom"-এ যান এবং "Add model" বোতামে ক্লিক করুন।
নির্দেশিত হলে, মডেলটির নাম sentiment_analysis দিন এবং পূর্ববর্তী ধাপে Colab থেকে ডাউনলোড করা ফাইলটি আপলোড করুন।

৬. ফায়ারবেস এমএল থেকে মডেলটি ডাউনলোড করুন।
আপনার অ্যাপে Firebase থেকে রিমোট মডেলটি কখন ডাউনলোড করবেন তা বেছে নেওয়া বেশ কঠিন হতে পারে, কারণ TFLite মডেলগুলো তুলনামূলকভাবে বড় হয়ে যেতে পারে। আদর্শগতভাবে, আমরা চাই অ্যাপটি চালু হওয়ার সাথে সাথেই মডেলটি লোড করা এড়িয়ে চলতে, কারণ যদি আমাদের মডেলটি শুধুমাত্র একটি ফিচারের জন্য ব্যবহৃত হয় এবং ব্যবহারকারী সেই ফিচারটি কখনও ব্যবহার না করেন, তাহলে আমরা অকারণে প্রচুর পরিমাণে ডেটা ডাউনলোড করে ফেলব। আমরা ডাউনলোডের এমন অপশনও সেট করতে পারি, যেমন শুধুমাত্র ওয়াইফাই-এর সাথে সংযুক্ত থাকলেই মডেলগুলো ডাউনলোড করা। আপনি যদি নিশ্চিত করতে চান যে নেটওয়ার্ক সংযোগ ছাড়াও মডেলটি পাওয়া যাবে, তাহলে ব্যাকআপ হিসেবে অ্যাপটি ছাড়াও এটিকে বান্ডল করা গুরুত্বপূর্ণ।
সরলতার স্বার্থে, আমরা ডিফল্ট বান্ডেল মডেলটি সরিয়ে দেব এবং অ্যাপটি প্রথমবার চালু হওয়ার সময় সর্বদা ফায়ারবেস থেকে একটি মডেল ডাউনলোড করব। এইভাবে সেন্টিমেন্ট অ্যানালাইসিস চালানোর সময় আপনি নিশ্চিত থাকতে পারবেন যে ইনফারেন্সটি ফায়ারবেস থেকে সরবরাহ করা মডেল দিয়েই চলছে।
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-এ একটি লগ দেখতে পাবেন যা নির্দেশ করবে যে রিমোট মডেলটি সফলভাবে ডাউনলোড হয়েছে। কিছু টেক্সট টাইপ করে নিশ্চিত করুন যে অ্যাপটির আচরণে কোনো পরিবর্তন আসেনি।
৭. আপনার অ্যাপে মডেলটি সংহত করুন।
Tensorflow Lite Task Library আপনাকে মাত্র কয়েকটি কোডের লাইনের মাধ্যমে আপনার অ্যাপে TensorFlow Lite মডেল যুক্ত করতে সাহায্য করে। আমরা Firebase থেকে ডাউনলোড করা TensorFlow Lite মডেলটি ব্যবহার করে একটি TFLNLClassifier ইনস্ট্যান্স ইনিশিয়ালাইজ করব। তারপর আমরা এটি ব্যবহার করে অ্যাপ ব্যবহারকারীদের দেওয়া টেক্সট ইনপুটকে ক্লাসিফাই করব এবং ফলাফলটি UI-তে দেখাব।
নির্ভরতা যোগ করুন
অ্যাপটির Podfile-এ যান এবং অ্যাপটির dependencies-এ TensorFlow Lite Task Library (Text) যোগ করুন। নিশ্চিত করুন যে আপনি target 'TextClassification' ডিক্লারেশনের অধীনে ডিপেন্ডেন্সিটি যোগ করেছেন।
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
নতুন ডিপেন্ডেন্সিটি ইনস্টল করতে pod install চালান।
একটি টেক্সট ক্লাসিফায়ার শুরু করুন
এরপর আমরা টাস্ক লাইব্রেরির NLClassifier ব্যবহার করে ফায়ারবেস থেকে ডাউনলোড করা সেন্টিমেন্ট অ্যানালাইসিস মডেলটি লোড করব।
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)
৮. চূড়ান্ত অ্যাপটি চালান।
আপনি অ্যাপটিতে সেন্টিমেন্ট অ্যানালাইসিস মডেলটি যুক্ত করেছেন, এবার এটি পরীক্ষা করা যাক। আপনার iOS ডিভাইসটি সংযুক্ত করুন এবং রান (Run) বোতামে ক্লিক করুন।
এক্সকোড টুলবারে )
অ্যাপটির আপনার দেওয়া মুভি রিভিউটির সেন্টিমেন্ট সঠিকভাবে অনুমান করতে সক্ষম হওয়া উচিত।

৯. আরও ফায়ারবেস ফিচার দিয়ে অ্যাপটিকে আরও শক্তিশালী করুন।
আপনার TFLite মডেলগুলো হোস্ট করার পাশাপাশি, Firebase আপনার মেশিন লার্নিং ব্যবহারের ক্ষেত্রগুলোকে আরও শক্তিশালী করার জন্য আরও বেশ কিছু বৈশিষ্ট্য প্রদান করে:
- ব্যবহারকারীদের ডিভাইসে চলমান আপনার মডেলের ইনফারেন্সের গতি পরিমাপ করতে ফায়ারবেস পারফরম্যান্স মনিটরিং ব্যবহার করুন।
- ব্যবহারকারীর প্রতিক্রিয়া পরিমাপের মাধ্যমে প্রোডাকশনে আপনার মডেলটি কতটা ভালো কাজ করছে তা ফায়ারবেস অ্যানালিটিক্স দ্বারা পরিমাপ করা যায়।
- আপনার মডেলের একাধিক সংস্করণ পরীক্ষা করার জন্য ফায়ারবেস এ/বি টেস্টিং।
- আপনার কি মনে আছে আমরা আগে আমাদের TFLite মডেলের দুটি সংস্করণকে প্রশিক্ষণ দিয়েছিলাম? প্রোডাকশনে কোন সংস্করণটি ভালো কাজ করে, তা খুঁজে বের করার জন্য A/B টেস্টিং একটি চমৎকার উপায়!
আপনার অ্যাপে এই বৈশিষ্ট্যগুলি কীভাবে কাজে লাগাবেন সে সম্পর্কে আরও জানতে, নীচের কোডল্যাবগুলি দেখুন:
১০. অভিনন্দন!
এই কোডল্যাবে, আপনি শিখেছেন কীভাবে একটি সেন্টিমেন্ট অ্যানালাইসিস TFLite মডেলকে প্রশিক্ষণ দিতে হয় এবং Firebase ব্যবহার করে সেটিকে আপনার মোবাইল অ্যাপে স্থাপন করতে হয়। TFLite এবং Firebase সম্পর্কে আরও জানতে, অন্যান্য TFLite স্যাম্পল এবং Firebase-এর গেটিং স্টার্টেড গাইডগুলো দেখুন।
আমরা যা আলোচনা করেছি
- TensorFlow Lite
- ফায়ারবেস এমএল
পরবর্তী পদক্ষেপ
- Firebase Performance Monitoring-এর মাধ্যমে আপনার মডেলের ইনফারেন্স গতি পরিমাপ করুন।
- Firebase ML Model Management API ব্যবহার করে Colab থেকে সরাসরি Firebase-এ মডেলটি ডেপ্লয় করুন।
- পূর্বাভাসের ফলাফলের উপর ব্যবহারকারীদের মতামত জানানোর একটি ব্যবস্থা যোগ করুন এবং ব্যবহারকারীদের মতামত ট্র্যাক করতে ফায়ারবেস অ্যানালিটিক্স ব্যবহার করুন।
- ফায়ারবেস এ/বি টেস্টিং ব্যবহার করে অ্যাভারেজ ওয়ার্ড ভেক্টর মডেল এবং মোবাইলবার্ট মডেলের এ/বি টেস্ট করুন।
আরও জানুন
- ফায়ারবেস মেশিন লার্নিং ডকুমেন্টেশন
- TensorFlow Lite ডকুমেন্টেশন
- Firebase দিয়ে অ্যাপের পারফরম্যান্স পরিমাপ করুন
- ফায়ারবেস দিয়ে মডেলের এ/বি টেস্টিং