টেনসরফ্লো লাইট এবং ফায়ারবেস - অ্যান্ড্রয়েড কোডল্যাব সহ আপনার অ্যাপে অন-ডিভাইস টেক্সট ক্লাসিফিকেশন যোগ করুন

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

টেক্সট-শ্রেণীবিভাগ-ফলাফল.png

TensorFlow Lite এবং Firebase codelab এর টেক্সট ক্লাসিফিকেশনে আপনাকে স্বাগতম। এই কোডল্যাবে আপনি শিখবেন কিভাবে TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে টেক্সট ক্লাসিফিকেশন মডেল প্রশিক্ষণ এবং স্থাপন করতে হয়। এই কোডল্যাবটি TensorFlow Lite এর উদাহরণের উপর ভিত্তি করে তৈরি।

টেক্সট ক্লাসিফিকেশন হলো টেক্সটের বিষয়বস্তু অনুসারে ট্যাগ বা বিভাগ নির্ধারণের প্রক্রিয়া। এটি ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং (NLP) এর মৌলিক কাজগুলির মধ্যে একটি, যার বিস্তৃত প্রয়োগ রয়েছে যেমন সেন্টিমেন্ট বিশ্লেষণ, বিষয় লেবেলিং, স্প্যাম সনাক্তকরণ এবং অভিপ্রায় সনাক্তকরণ।

সেন্টিমেন্ট বিশ্লেষণ হল টেক্সট বিশ্লেষণ কৌশল ব্যবহার করে টেক্সট ডেটার মধ্যে আবেগের (ইতিবাচক, নেতিবাচক এবং নিরপেক্ষ) ব্যাখ্যা এবং শ্রেণীবিভাগ। সেন্টিমেন্ট বিশ্লেষণ ব্যবসাগুলিকে অনলাইন কথোপকথন এবং প্রতিক্রিয়ার মাধ্যমে পণ্য, ব্র্যান্ড বা পরিষেবার প্রতি গ্রাহকের অনুভূতি সনাক্ত করতে সহায়তা করে।

এই টিউটোরিয়ালটি দেখায় কিভাবে অনুভূতি বিশ্লেষণের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয়, বিশেষ করে টেক্সটকে ইতিবাচক বা নেতিবাচক হিসেবে শ্রেণীবদ্ধ করা। এটি বাইনারি—অথবা দুই-শ্রেণীর—শ্রেণীবিভাগের একটি উদাহরণ, যা একটি গুরুত্বপূর্ণ এবং ব্যাপকভাবে প্রযোজ্য ধরণের মেশিন লার্নিং সমস্যা।

তুমি কি শিখবে

  • TF Lite মডেল মেকারের সাহায্যে TF Lite সেন্টিমেন্ট বিশ্লেষণ মডেলগুলিকে প্রশিক্ষণ দিন
  • Firebase ML-এ TF Lite মডেল স্থাপন করুন এবং আপনার অ্যাপ থেকে সেগুলি অ্যাক্সেস করুন।
  • TF Lite টাস্ক লাইব্রেরি ব্যবহার করে আপনার অ্যাপে TF Lite সেন্টিমেন্ট বিশ্লেষণ মডেলগুলিকে একীভূত করুন।

তোমার যা লাগবে

  • সর্বশেষ অ্যান্ড্রয়েড স্টুডিও সংস্করণ।
  • নমুনা কোড।
  • অ্যান্ড্রয়েড ৫.০+ এবং গুগল প্লে সার্ভিস ৯.৮ বা তার পরবর্তী ভার্সন সহ একটি পরীক্ষামূলক ডিভাইস, অথবা গুগল প্লে সার্ভিস ৯.৮ বা তার পরবর্তী ভার্সন সহ একটি এমুলেটর
  • যদি কোনও ডিভাইস ব্যবহার করেন, তাহলে একটি সংযোগ কেবল।

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলি সম্পূর্ণ করুন।

অ্যান্ড্রয়েড অ্যাপ তৈরির ক্ষেত্রে আপনার অভিজ্ঞতা কেমন হবে?

নবীন মধ্যবর্তী দক্ষ

2. নমুনা কোড পান

কমান্ড লাইন থেকে GitHub রিপোজিটরি ক্লোন করুন।

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

যদি আপনার গিট ইনস্টল না থাকে, তাহলে আপনি এর গিটহাব পৃষ্ঠা থেকে অথবা এই লিঙ্কে ক্লিক করে নমুনা প্রকল্পটি ডাউনলোড করতে পারেন।

৩. স্টার্টার অ্যাপটি আমদানি করুন

অ্যান্ড্রয়েড স্টুডিও থেকে, codelab-textclassification-android-master ডিরেক্টরিটি নির্বাচন করুন ( android_studio_folder.png সম্পর্কে ) নমুনা কোড ডাউনলোড থেকে ( ফাইল > খুলুন > .../codelab-textclassification-android-master/start )।

এখন আপনার অ্যান্ড্রয়েড স্টুডিওতে স্টার্ট প্রজেক্টটি খোলা থাকা উচিত।

৪. স্টার্টার অ্যাপটি চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের মতো অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং রান ( এক্সিকিউট.পিএনজি )অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত। এতে কেবল একটি সহজ UI রয়েছে যা পরবর্তী ধাপগুলিতে টেক্সট ক্লাসিফিকেশন মডেলগুলিকে একীভূত করা এবং পরীক্ষা করা সহজ করে তোলে। এই মুহুর্তে, যদি আপনি অনুভূতি ভবিষ্যদ্বাণী করার চেষ্টা করেন, তাহলে অ্যাপটি কেবল কিছু ডামি ফলাফল দেবে।

2fb4e69fafb2e3ed.png সম্পর্কে

৫. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন

প্রকল্পে Firebase যোগ করুন

  1. ফায়ারবেস কনসোলে যান।
  2. প্রকল্প যোগ করুন নির্বাচন করুন।
  3. একটি প্রকল্পের নাম নির্বাচন করুন বা লিখুন।
  4. Firebase কনসোলে বাকি সেটআপ ধাপগুলি অনুসরণ করুন, তারপর Create project (অথবা যদি আপনি একটি বিদ্যমান Google project ব্যবহার করেন তবে Firebase যোগ করুন) এ ক্লিক করুন।

৬. অ্যাপে Firebase যোগ করুন

  1. আপনার নতুন প্রকল্পের ওভারভিউ স্ক্রিন থেকে, সেটআপ ওয়ার্কফ্লো চালু করতে অ্যান্ড্রয়েড আইকনে ক্লিক করুন।
  2. কোডল্যাবের প্যাকেজের নাম লিখুন: org.tensorflow.lite.codelabs.textclassification

আপনার অ্যাপে google-services.json ফাইল যোগ করুন

প্যাকেজের নাম যোগ করার পর এবং Register** নির্বাচন করার পর, আপনার Firebase Android কনফিগারেশন ফাইলটি পেতে Download google-services.json** এ ক্লিক করুন এবং তারপর google-services.json ফাইলটি আপনার প্রোজেক্টের * app * ডিরেক্টরিতে কপি করুন।

আপনার অ্যাপে গুগল-সার্ভিসেস প্লাগইন যোগ করুন

আপনার অ্যাপে Firebase যোগ করতে build.gradle.kts ফাইল আপডেট করার জন্য Firebase কনসোলের নির্দেশাবলী অনুসরণ করুন।

google-services প্লাগইনটি আপনার অ্যাপ্লিকেশনটিকে Firebase ব্যবহারের জন্য কনফিগার করতে google-services.json ফাইল ব্যবহার করে।

আপনার প্রকল্পটি gradle ফাইলের সাথে সিঙ্ক করুন

আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ আছে কিনা তা নিশ্চিত করার জন্য, এই মুহুর্তে আপনার প্রকল্পটি gradle ফাইলগুলির সাথে সিঙ্ক করা উচিত। Android Studio টুলবার থেকে File > Sync Project with Gradle Files নির্বাচন করুন।

৭. ফায়ারবেস দিয়ে অ্যাপটি চালান

এখন আপনি আপনার JSON ফাইল দিয়ে google-services প্লাগইনটি কনফিগার করেছেন, আপনি Firebase দিয়ে অ্যাপটি চালানোর জন্য প্রস্তুত। আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং Run ( এক্সিকিউট.পিএনজি )অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার ডিভাইসে চালু হওয়া উচিত। এই মুহুর্তে, আপনার অ্যাপটি এখনও সফলভাবে তৈরি হওয়া উচিত।

৮. একটি অনুভূতি বিশ্লেষণ মডেল প্রশিক্ষণ দিন

আমরা একটি টেক্সট ক্লাসিফিকেশন মডেল প্রশিক্ষণের জন্য TensorFlow Lite Model Maker ব্যবহার করব যাতে একটি প্রদত্ত টেক্সটের অনুভূতি পূর্বাভাস দেওয়া যায়।

এই ধাপটি একটি পাইথন নোটবুক হিসেবে উপস্থাপন করা হয়েছে যা আপনি Google Colab-এ খুলতে পারবেন। আপনি একবারে সমস্ত নোটবুক চালানোর জন্য Runtime > Run all বেছে নিতে পারেন।

কোলাবে খুলুন

এই ধাপটি শেষ করার পর, আপনার কাছে একটি টেনসরফ্লো লাইট সেন্টিমেন্ট বিশ্লেষণ মডেল থাকবে যা একটি মোবাইল অ্যাপে স্থাপনের জন্য প্রস্তুত।

৯. ফায়ারবেস এমএল-এ একটি মডেল স্থাপন করুন

Firebase ML-এ একটি মডেল স্থাপন করা দুটি প্রধান কারণে কার্যকর:

  1. আমরা অ্যাপ ইনস্টলের আকার ছোট রাখতে পারি এবং প্রয়োজনে শুধুমাত্র মডেলটি ডাউনলোড করতে পারি।
  2. মডেলটি নিয়মিত আপডেট করা যেতে পারে এবং পুরো অ্যাপের চেয়ে আলাদা রিলিজ চক্র সহ।

মডেলটি কনসোলের মাধ্যমে অথবা প্রোগ্রাম্যাটিকভাবে, Firebase Admin SDK ব্যবহার করে স্থাপন করা যেতে পারে। এই ধাপে আমরা কনসোলের মাধ্যমে স্থাপন করব।

প্রথমে, Firebase Console খুলুন এবং বাম দিকের নেভিগেশন প্যানেলে Machine Learning-এ ক্লিক করুন। যদি আপনি প্রথমবার খুলছেন তাহলে 'Get Started'-এ ক্লিক করুন। তারপর "Custom"-এ নেভিগেট করুন এবং "Add model" বোতামে ক্লিক করুন।

অনুরোধ করা হলে, মডেলটির নাম দিন sentiment_analysis এবং আগের ধাপে Colab থেকে ডাউনলোড করা ফাইলটি আপলোড করুন।

3c3c50e6ef12b3b.png সম্পর্কে

১০. Firebase ML থেকে মডেল ডাউনলোড করুন

Firebase থেকে রিমোট মডেলটি কখন আপনার অ্যাপে ডাউনলোড করবেন তা বেছে নেওয়া জটিল হতে পারে কারণ TFLite মডেলগুলি তুলনামূলকভাবে বড় হতে পারে। আদর্শভাবে আমরা অ্যাপটি চালু হওয়ার সাথে সাথেই মডেলটি লোড করা এড়াতে চাই, কারণ যদি আমাদের মডেলটি শুধুমাত্র একটি বৈশিষ্ট্যের জন্য ব্যবহার করা হয় এবং ব্যবহারকারী কখনও সেই বৈশিষ্ট্যটি ব্যবহার না করে, তাহলে আমরা কোনও কারণ ছাড়াই উল্লেখযোগ্য পরিমাণে ডেটা ডাউনলোড করব। আমরা ডাউনলোড বিকল্পগুলিও সেট করতে পারি যেমন ওয়াইফাইয়ের সাথে সংযুক্ত থাকাকালীন শুধুমাত্র মডেলগুলি আনা। আপনি যদি নিশ্চিত করতে চান যে মডেলটি নেটওয়ার্ক সংযোগ ছাড়াই উপলব্ধ, তাহলে ব্যাকআপ হিসাবে অ্যাপ ছাড়াই এটি বান্ডিল করাও গুরুত্বপূর্ণ।

সহজতার জন্য, আমরা ডিফল্ট বান্ডেলড মডেলটি সরিয়ে দেব এবং অ্যাপটি প্রথমবার শুরু হলে সর্বদা Firebase থেকে একটি মডেল ডাউনলোড করব। এইভাবে, সেন্টিমেন্ট বিশ্লেষণ চালানোর সময় আপনি নিশ্চিত হতে পারবেন যে Firebase থেকে প্রদত্ত মডেলের সাথে অনুমানটি চলছে।

app/build.gradle.kts ফাইলে, Firebase মেশিন লার্নিং নির্ভরতা যোগ করুন।

অ্যাপ/বিল্ড.গ্র্যাডল.কেটিএস

এই মন্তব্যটি খুঁজুন:

// TODO 1: Add Firebase ML dependency

তারপর যোগ করুন:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

অ্যান্ড্রয়েড স্টুডিও যখন আপনার প্রকল্প সিঙ্ক করতে বলবে, তখন সিঙ্ক নাউ বেছে নিন।

তাহলে Firebase থেকে মডেলটি ডাউনলোড করার জন্য কিছু কোড যোগ করা যাক।

মেইনঅ্যাক্টিভিটি.জাভা

এই মন্তব্যটি খুঁজুন:

// TODO 2: Implement a method to download TFLite model from Firebase

তারপর যোগ করুন:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

এরপর, অ্যাক্টিভিটির onCreate পদ্ধতিতে downloadModel পদ্ধতিটি কল করুন।

মেইনঅ্যাক্টিভিটি.জাভা

এই মন্তব্যটি খুঁজুন:

// TODO 3: Call the method to download TFLite model

তারপর যোগ করুন:

downloadModel("sentiment_analysis");

১১. আপনার অ্যাপে মডেলটি একীভূত করুন

Tensorflow Lite Task Library আপনাকে মাত্র কয়েকটি লাইন কোড ব্যবহার করে TensorFlow Lite মডেলগুলিকে আপনার অ্যাপে একীভূত করতে সাহায্য করে। আমরা Firebase থেকে ডাউনলোড করা TensorFlow Lite মডেল ব্যবহার করে একটি NLClassifier ইনস্ট্যান্স শুরু করব। তারপর আমরা অ্যাপ ব্যবহারকারীদের কাছ থেকে টেক্সট ইনপুট শ্রেণীবদ্ধ করতে এবং UI তে ফলাফল দেখাতে এটি ব্যবহার করব।

নির্ভরতা যোগ করুন

অ্যাপের গ্র্যাডেল ফাইলে যান এবং অ্যাপের নির্ভরতাগুলিতে টেনসরফ্লো লাইট টাস্ক লাইব্রেরি (টেক্সট) যোগ করুন।

অ্যাপ/বিল্ড.গ্রেডল

এই মন্তব্যটি খুঁজুন:

// TODO 4: Add TFLite Task API (Text) dependency

তারপর যোগ করুন:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

অ্যান্ড্রয়েড স্টুডিও যখন আপনার প্রকল্প সিঙ্ক করতে বলবে, তখন সিঙ্ক নাউ বেছে নিন।

একটি টেক্সট ক্লাসিফায়ার শুরু করুন

তারপর আমরা টাস্ক লাইব্রেরির NLClassifier ব্যবহার করে Firebase থেকে ডাউনলোড করা সেন্টিমেন্ট বিশ্লেষণ মডেলটি লোড করব।

মেইনঅ্যাক্টিভিটি.জাভা

আসুন একটি NLClassifier ইনস্ট্যান্স ভেরিয়েবল ঘোষণা করি। এই মন্তব্যটি খুঁজুন:

// TODO 5: Define a NLClassifier variable

তারপর যোগ করুন:

private NLClassifier textClassifier;

Firebase থেকে ডাউনলোড করা সেন্টিমেন্ট বিশ্লেষণ মডেল দিয়ে textClassifier ভেরিয়েবলটি আরম্ভ করুন। এই মন্তব্যটি খুঁজুন:

// TODO 6: Initialize a TextClassifier with the downloaded model

তারপর যোগ করুন:

textClassifier = NLClassifier.createFromFile(model.getFile());

টেক্সট শ্রেণীবদ্ধ করুন

একবার textClassifier ইনস্ট্যান্স সেট আপ হয়ে গেলে, আপনি একটি একক পদ্ধতি কলের মাধ্যমে সেন্টিমেন্ট বিশ্লেষণ চালাতে পারেন।

মেইনঅ্যাক্টিভিটি.জাভা

এই মন্তব্যটি খুঁজুন:

// TODO 7: Run sentiment analysis on the input text

তারপর যোগ করুন:

List<Category> results = textClassifier.classify(text);

পোস্ট-প্রসেসিং বাস্তবায়ন করুন

অবশেষে, আমরা মডেলের আউটপুটকে স্ক্রিনে দেখানোর জন্য একটি বর্ণনামূলক টেক্সটে রূপান্তর করব।

মেইনঅ্যাক্টিভিটি.জাভা

এই মন্তব্যটি খুঁজুন:

// TODO 8: Convert the result to a human-readable text

ডামি ফলাফল টেক্সট তৈরি করে এমন কোডটি সরিয়ে ফেলুন:

String textToShow = "Dummy classification result.\n";

তারপর যোগ করুন:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

১২. চূড়ান্ত অ্যাপটি চালান

আপনি অ্যাপটিতে সেন্টিমেন্ট বিশ্লেষণ মডেলটি ইন্টিগ্রেটেড করেছেন, তাই আসুন এটি পরীক্ষা করি। আপনার অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করুন এবং রান ( এক্সিকিউট.পিএনজি )অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার লেখা সিনেমার পর্যালোচনার অনুভূতি সঠিকভাবে অনুমান করতে সক্ষম হওয়া উচিত।

img/text-classification-result.png

১৩. আরও Firebase বৈশিষ্ট্য সহ অ্যাপটিকে শক্তিশালী করুন

আপনার TFLite মডেলগুলি হোস্ট করার পাশাপাশি, Firebase আপনার মেশিন লার্নিং ব্যবহারের ক্ষেত্রে আরও বেশ কয়েকটি বৈশিষ্ট্য সরবরাহ করে:

  • ব্যবহারকারীর ডিভাইসে চলমান আপনার মডেল ইনফারেন্স গতি পরিমাপ করার জন্য ফায়ারবেস পারফরম্যান্স মনিটরিং।
  • ব্যবহারকারীর প্রতিক্রিয়া পরিমাপ করে আপনার মডেল উৎপাদনে কতটা ভালো পারফর্ম করে তা পরিমাপ করার জন্য ফায়ারবেস অ্যানালিটিক্স।
  • আপনার মডেলের একাধিক সংস্করণ পরীক্ষা করার জন্য Firebase A/B পরীক্ষা
  • তোমার কি মনে আছে আমরা আগে আমাদের TFLite মডেলের দুটি সংস্করণ প্রশিক্ষণ দিয়েছিলাম? A/B পরীক্ষা হল কোন সংস্করণটি উৎপাদনে ভালো পারফর্ম করে তা খুঁজে বের করার একটি ভালো উপায়!

আপনার অ্যাপে এই বৈশিষ্ট্যগুলি কীভাবে কাজে লাগাবেন সে সম্পর্কে আরও জানতে, নীচের কোডল্যাবগুলি দেখুন:

১৪. অভিনন্দন!

এই কোডল্যাবে, আপনি শিখেছেন কিভাবে একটি সেন্টিমেন্ট বিশ্লেষণ TFLite মডেল প্রশিক্ষণ দিতে হয় এবং Firebase ব্যবহার করে এটি আপনার মোবাইল অ্যাপে স্থাপন করতে হয়। TFLite এবং Firebase সম্পর্কে আরও জানতে, অন্যান্য TFLite নমুনা এবং Firebase শুরু করার নির্দেশিকাগুলি দেখুন।

আমরা যা কভার করেছি

  • টেনসরফ্লো লাইট
  • ফায়ারবেস এমএল

পরবর্তী পদক্ষেপ

  • Firebase পারফরম্যান্স মনিটরিং দিয়ে আপনার মডেল ইনফারেন্স গতি পরিমাপ করুন।
  • Firebase ML মডেল ম্যানেজমেন্ট API এর মাধ্যমে Colab থেকে সরাসরি Firebase-এ মডেলটি স্থাপন করুন।
  • ব্যবহারকারীদের ভবিষ্যদ্বাণীর ফলাফল সম্পর্কে প্রতিক্রিয়া জানাতে একটি ব্যবস্থা যোগ করুন এবং ব্যবহারকারীর প্রতিক্রিয়া ট্র্যাক করতে Firebase Analytics ব্যবহার করুন।
  • A/B পরীক্ষাটি Average Word Vector মডেল এবং MobileBERT মডেলটি Firebase A/B পরীক্ষার মাধ্যমে করুন।

আরও জানুন

একটি প্রশ্ন আছে?

সমস্যাগুলি রিপোর্ট করুন