অ্যান্ড্রয়েড সহ পাঠ্য শ্রেণিবিন্যাস

এই টিউটোরিয়ালটি আপনাকে প্রাকৃতিক ভাষার পাঠ্যকে শ্রেণিবদ্ধ করতে TensorFlow Lite ব্যবহার করে কীভাবে একটি Android অ্যাপ্লিকেশন তৈরি করতে হয় তা দেখায়। এই অ্যাপ্লিকেশনটি একটি শারীরিক অ্যান্ড্রয়েড ডিভাইসের জন্য ডিজাইন করা হয়েছে তবে এটি একটি ডিভাইস এমুলেটরেও চলতে পারে।

উদাহরণ অ্যাপ্লিকেশনটি পাঠ্যকে ইতিবাচক বা নেতিবাচক হিসাবে শ্রেণীবদ্ধ করতে TensorFlow Lite ব্যবহার করে, টেক্সট ক্লাসিফিকেশন মেশিন লার্নিং মডেলগুলি সম্পাদন করতে প্রাকৃতিক ভাষার জন্য টাস্ক লাইব্রেরি (NL) ব্যবহার করে।

আপনি যদি একটি বিদ্যমান প্রকল্প আপডেট করছেন, আপনি একটি রেফারেন্স বা টেমপ্লেট হিসাবে উদাহরণ অ্যাপ্লিকেশন ব্যবহার করতে পারেন। একটি বিদ্যমান অ্যাপ্লিকেশনে পাঠ্য শ্রেণিবিন্যাস কীভাবে যুক্ত করবেন তার নির্দেশাবলীর জন্য, আপনার অ্যাপ্লিকেশন আপডেট করা এবং সংশোধন করা দেখুন।

পাঠ্য শ্রেণিবিন্যাস ওভারভিউ

টেক্সট ক্লাসিফিকেশন হল ওপেন-এন্ডেড টেক্সটে পূর্বনির্ধারিত শ্রেণীগুলির একটি সেট বরাদ্দ করার মেশিন লার্নিং কাজ। একটি পাঠ্য শ্রেণিবিন্যাস মডেল প্রাকৃতিক ভাষার পাঠ্যের একটি কর্পাসের উপর প্রশিক্ষিত হয়, যেখানে শব্দ বা বাক্যাংশ ম্যানুয়ালি শ্রেণীবদ্ধ করা হয়।

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

এই টিউটোরিয়ালের মডেলগুলি কীভাবে তৈরি করা হয় সে সম্পর্কে আরও তথ্যের জন্য, TensorFlow Lite Model Maker টিউটোরিয়াল সহ পাঠ্য শ্রেণিবিন্যাস পড়ুন।

মডেল এবং ডেটাসেট

এই টিউটোরিয়ালটি SST-2 (স্ট্যানফোর্ড সেন্টিমেন্ট ট্রিব্যাঙ্ক) ডেটাসেট ব্যবহার করে প্রশিক্ষিত মডেলগুলি ব্যবহার করে৷ SST-2-এ প্রশিক্ষণের জন্য 67,349টি চলচ্চিত্র পর্যালোচনা এবং পরীক্ষার জন্য 872টি চলচ্চিত্র পর্যালোচনা রয়েছে, প্রতিটি পর্যালোচনা ইতিবাচক বা নেতিবাচক হিসাবে শ্রেণীবদ্ধ করা হয়েছে। এই অ্যাপে ব্যবহৃত মডেলগুলিকে TensorFlow Lite Model Maker টুল ব্যবহার করে প্রশিক্ষণ দেওয়া হয়েছিল।

উদাহরণ অ্যাপ্লিকেশন নিম্নলিখিত প্রাক-প্রশিক্ষিত মডেল ব্যবহার করে:

  • গড় শব্দ ভেক্টর ( NLClassifier ) - টাস্ক লাইব্রেরির NLClassifier ইনপুট টেক্সটকে বিভিন্ন বিভাগে শ্রেণীবদ্ধ করে এবং বেশিরভাগ টেক্সট ক্লাসিফিকেশন মডেল পরিচালনা করতে পারে।

  • MobileBERT ( BertNLClassifier ) - টাস্ক লাইব্রেরির BertNLClassifier এনএলসিক্ল্যাসিফায়ারের মতো কিন্তু এটি এমন ক্ষেত্রে তৈরি করা হয়েছে যেগুলির জন্য গ্রাফের বাইরের ওয়ার্ডপিস এবং সেন্টেন্সপিস টোকেনাইজেশন প্রয়োজন৷

উদাহরণ অ্যাপ সেটআপ করুন এবং চালান

পাঠ্য শ্রেণিবিন্যাস অ্যাপ্লিকেশন সেটআপ করতে, GitHub থেকে উদাহরণ অ্যাপ্লিকেশনটি ডাউনলোড করুন এবং Android স্টুডিও ব্যবহার করে এটি চালান।

সিস্টেমের জন্য আবশ্যক

উদাহরণ কোড পান

উদাহরণ কোডের একটি স্থানীয় অনুলিপি তৈরি করুন। আপনি অ্যান্ড্রয়েড স্টুডিওতে একটি প্রকল্প তৈরি করতে এবং উদাহরণ অ্যাপ্লিকেশন চালানোর জন্য এই কোডটি ব্যবহার করবেন।

উদাহরণ কোড ক্লোন এবং সেটআপ করতে:

  1. git সংগ্রহস্থল
    git clone https://github.com/tensorflow/examples.git
    
    ক্লোন করুন
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করতে আপনার গিট ইন্সট্যান্স কনফিগার করুন, যাতে আপনার কাছে পাঠ্য শ্রেণিবিন্যাস উদাহরণ অ্যাপের জন্য শুধুমাত্র ফাইলগুলি থাকে:
    cd examples
    git sparse-checkout init --cone
    git sparse-checkout set lite/examples/text_classification/android
    

আমদানি করুন এবং প্রকল্প চালান

ডাউনলোড করা উদাহরণ কোড থেকে একটি প্রকল্প তৈরি করুন, প্রকল্পটি তৈরি করুন এবং তারপরে এটি চালান।

উদাহরণ কোড প্রকল্প আমদানি এবং নির্মাণ করতে:

  1. অ্যান্ড্রয়েড স্টুডিও শুরু করুন।
  2. অ্যান্ড্রয়েড স্টুডিও থেকে, ফাইল > নতুন > আমদানি প্রকল্প নির্বাচন করুন।
  3. build.gradle ফাইল ( .../examples/lite/examples/text_classification/android/build.gradle ) ধারণকারী উদাহরণ কোড ডিরেক্টরিতে নেভিগেট করুন এবং সেই ডিরেক্টরিটি নির্বাচন করুন।
  4. যদি অ্যান্ড্রয়েড স্টুডিও গ্রেডল সিঙ্কের অনুরোধ করে, ঠিক আছে বেছে নিন।
  5. নিশ্চিত করুন যে আপনার অ্যান্ড্রয়েড ডিভাইস আপনার কম্পিউটারের সাথে সংযুক্ত আছে এবং বিকাশকারী মোড সক্ষম করা আছে৷ সবুজ Run তীর ক্লিক করুন.

আপনি সঠিক ডিরেক্টরি নির্বাচন করলে, অ্যান্ড্রয়েড স্টুডিও একটি নতুন প্রকল্প তৈরি করে এবং এটি তৈরি করে। আপনার কম্পিউটারের গতির উপর নির্ভর করে এবং আপনি যদি অন্যান্য প্রকল্পের জন্য অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে এই প্রক্রিয়াটি কয়েক মিনিট সময় নিতে পারে। বিল্ড সম্পূর্ণ হলে, অ্যান্ড্রয়েড স্টুডিও বিল্ড আউটপুট স্ট্যাটাস প্যানেলে একটি BUILD SUCCESSFUL বার্তা প্রদর্শন করে।

প্রকল্প চালানোর জন্য:

  1. অ্যান্ড্রয়েড স্টুডিও থেকে, রান > রান… নির্বাচন করে প্রকল্পটি চালান।
  2. অ্যাপটি পরীক্ষা করতে একটি সংযুক্ত Android ডিভাইস (বা এমুলেটর) নির্বাচন করুন।

অ্যাপ্লিকেশন ব্যবহার করে

অ্যান্ড্রয়েডে পাঠ্য শ্রেণিবিন্যাস উদাহরণ অ্যাপ্লিকেশন

অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি চালানোর পরে, অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে সংযুক্ত ডিভাইস বা ডিভাইস এমুলেটরে খুলবে।

টেক্সট ক্লাসিফায়ার ব্যবহার করতে:

  1. পাঠ্য বাক্সে পাঠ্যের একটি স্নিপেট লিখুন।
  2. প্রতিনিধি ড্রপ-ডাউন থেকে, CPU বা NNAPI বেছে নিন।
  3. AverageWordVec বা MobileBERT বেছে নিয়ে একটি মডেল নির্দিষ্ট করুন।
  4. শ্রেণীবদ্ধ নির্বাচন করুন।

অ্যাপ্লিকেশন একটি ইতিবাচক স্কোর এবং একটি নেতিবাচক স্কোর আউটপুট. এই দুটি স্কোর যোগফল হবে 1, এবং সম্ভাব্যতা পরিমাপ করে যে ইনপুট পাঠ্যের অনুভূতি ইতিবাচক বা নেতিবাচক। একটি উচ্চ সংখ্যা আত্মবিশ্বাস একটি উচ্চ স্তর নির্দেশ করে.

আপনার কাছে এখন একটি কার্যকরী পাঠ্য শ্রেণিবিন্যাস অ্যাপ্লিকেশন রয়েছে। উদাহরণ অ্যাপ্লিকেশনটি কীভাবে কাজ করে এবং কীভাবে আপনার উত্পাদন অ্যাপ্লিকেশনগুলিতে পাঠ্য শ্রেণিবিন্যাসের বৈশিষ্ট্যগুলি প্রয়োগ করতে হয় তা আরও ভালভাবে বুঝতে নিম্নলিখিত বিভাগগুলি ব্যবহার করুন:

উদাহরণ অ্যাপ কিভাবে কাজ করে

অ্যাপ্লিকেশনটি পাঠ্য শ্রেণিবিন্যাসের মডেলগুলি বাস্তবায়নের জন্য প্রাকৃতিক ভাষা (NL) প্যাকেজের জন্য টাস্ক লাইব্রেরি ব্যবহার করে। দুটি মডেল, এভারেজ ওয়ার্ড ভেক্টর এবং মোবাইলবিআরটি, টেনসরফ্লো লাইট মডেল মেকার ব্যবহার করে প্রশিক্ষিত হয়েছিল। NNAPI প্রতিনিধি ব্যবহার করে হার্ডওয়্যার ত্বরণের বিকল্প সহ অ্যাপ্লিকেশনটি ডিফল্টরূপে CPU-তে চলে।

নিম্নলিখিত ফাইল এবং ডিরেক্টরিতে এই পাঠ্য শ্রেণিবিন্যাস অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ কোড রয়েছে:

  • TextClassificationHelper.kt - টেক্সট ক্লাসিফায়ার শুরু করে এবং মডেল ও প্রতিনিধি নির্বাচন পরিচালনা করে।
  • MainActivity.kt - TextClassificationHelper এবং ResultsAdapter কল করা সহ অ্যাপ্লিকেশনটি প্রয়োগ করে।
  • ResultsAdapter.kt - ফলাফলগুলি পরিচালনা করে এবং ফর্ম্যাট করে।

আপনার আবেদন সংশোধন করুন

নিম্নলিখিত বিভাগগুলি উদাহরণ অ্যাপে দেখানো মডেলটি চালানোর জন্য আপনার নিজের অ্যান্ড্রয়েড অ্যাপ পরিবর্তন করার মূল পদক্ষেপগুলি ব্যাখ্যা করে৷ এই নির্দেশাবলী একটি রেফারেন্স পয়েন্ট হিসাবে উদাহরণ অ্যাপ্লিকেশন ব্যবহার করে. আপনার নিজের অ্যাপের জন্য প্রয়োজনীয় নির্দিষ্ট পরিবর্তনগুলি উদাহরণ অ্যাপ থেকে পরিবর্তিত হতে পারে।

একটি Android প্রকল্প খুলুন বা তৈরি করুন

এই বাকি নির্দেশাবলী অনুসরণ করার জন্য আপনার Android স্টুডিওতে একটি Android ডেভেলপমেন্ট প্রজেক্ট প্রয়োজন। একটি বিদ্যমান প্রকল্প খুলতে বা একটি নতুন তৈরি করতে নীচের নির্দেশাবলী অনুসরণ করুন৷

একটি বিদ্যমান অ্যান্ড্রয়েড উন্নয়ন প্রকল্প খুলতে:

  • অ্যান্ড্রয়েড স্টুডিওতে, ফাইল > খুলুন নির্বাচন করুন এবং একটি বিদ্যমান প্রকল্প নির্বাচন করুন।

একটি মৌলিক অ্যান্ড্রয়েড উন্নয়ন প্রকল্প তৈরি করতে:

অ্যান্ড্রয়েড স্টুডিও ব্যবহার সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও ডকুমেন্টেশন দেখুন।

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

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

নিম্নলিখিত নির্দেশাবলী ব্যাখ্যা করে কিভাবে আপনার নিজের Android অ্যাপ প্রকল্পে প্রয়োজনীয় প্রকল্প এবং মডিউল নির্ভরতা যোগ করতে হয়।

মডিউল নির্ভরতা যোগ করতে:

  1. TensorFlow Lite ব্যবহার করে এমন মডিউলে, নিম্নলিখিত নির্ভরতাগুলি অন্তর্ভুক্ত করতে মডিউলের build.gradle ফাইলটি আপডেট করুন।

    উদাহরণ অ্যাপ্লিকেশনে, নির্ভরতাগুলি app/build.gradle- এ অবস্থিত:

    dependencies {
      ...
      implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.0'
    }
    

    প্রজেক্টে অবশ্যই টেক্সট টাস্ক লাইব্রেরি ( tensorflow-lite-task-text ) অন্তর্ভুক্ত থাকতে হবে।

    আপনি যদি গ্রাফিক্স প্রসেসিং ইউনিটে (GPU) চালানোর জন্য এই অ্যাপটিকে পরিবর্তন করতে চান, তাহলে GPU লাইব্রেরি ( tensorflow-lite-gpu-delegate-plugin ) অ্যাপটিকে GPU-তে চালানোর জন্য পরিকাঠামো প্রদান করে এবং প্রতিনিধি ( tensorflow-lite-gpu ) সামঞ্জস্য তালিকা প্রদান করে। GPU তে এই অ্যাপটি চালানো এই টিউটোরিয়ালের সুযোগের বাইরে।

  2. অ্যান্ড্রয়েড স্টুডিওতে, নির্বাচন করে প্রকল্প নির্ভরতা সিঙ্ক করুন: ফাইল > গ্রেডল ফাইলের সাথে প্রকল্প সিঙ্ক করুন

ML মডেলগুলি শুরু করুন

আপনার Android অ্যাপে, মডেলের সাথে ভবিষ্যদ্বাণী চালানোর আগে আপনাকে অবশ্যই প্যারামিটার সহ TensorFlow Lite মেশিন লার্নিং মডেলটি আরম্ভ করতে হবে।

একটি TensorFlow Lite মডেল একটি *.tflite ফাইল হিসাবে সংরক্ষণ করা হয়। মডেল ফাইলে ভবিষ্যদ্বাণীর যুক্তি রয়েছে এবং এতে সাধারণত ভবিষ্যদ্বাণীর ফলাফলগুলিকে কীভাবে ব্যাখ্যা করা যায় সে সম্পর্কে মেটাডেটা অন্তর্ভুক্ত থাকে, যেমন ভবিষ্যদ্বাণী শ্রেণীর নাম। সাধারণত, মডেল ফাইলগুলি আপনার ডেভেলপমেন্ট প্রজেক্টের src/main/assets ডিরেক্টরিতে সংরক্ষণ করা হয়, যেমন কোড উদাহরণে:

  • <project>/src/main/assets/mobilebert.tflite
  • <project>/src/main/assets/wordvec.tflite

সুবিধা এবং কোড পঠনযোগ্যতার জন্য, উদাহরণটি একটি সহচর বস্তু ঘোষণা করে যা মডেলের সেটিংস সংজ্ঞায়িত করে।

আপনার অ্যাপে মডেলটি শুরু করতে:

  1. মডেলের জন্য সেটিংস সংজ্ঞায়িত করতে একটি সহচর বস্তু তৈরি করুন। উদাহরণ অ্যাপ্লিকেশনে, এই বস্তুটি TextClassificationHelper.kt এ অবস্থিত:

    companion object {
      const val DELEGATE_CPU = 0
      const val DELEGATE_NNAPI = 1
      const val WORD_VEC = "wordvec.tflite"
      const val MOBILEBERT = "mobilebert.tflite"
    }
    
  2. একটি ক্লাসিফায়ার অবজেক্ট তৈরি করে মডেলের জন্য সেটিংস তৈরি করুন এবং BertNLClassifier বা NLClassifier ব্যবহার করে একটি TensorFlow Lite অবজেক্ট তৈরি করুন।

    উদাহরণ অ্যাপ্লিকেশনে, এটি TextClassificationHelper.kt- এর মধ্যে initClassifier ফাংশনে অবস্থিত:

    fun initClassifier() {
      ...
      if( currentModel == MOBILEBERT ) {
        ...
        bertClassifier = BertNLClassifier.createFromFileAndOptions(
          context,
          MOBILEBERT,
          options)
      } else if (currentModel == WORD_VEC) {
          ...
          nlClassifier = NLClassifier.createFromFileAndOptions(
            context,
            WORD_VEC,
            options)
      }
    }
    

হার্ডওয়্যার ত্বরণ সক্ষম করুন (ঐচ্ছিক)

আপনার অ্যাপে একটি টেনসরফ্লো লাইট মডেল শুরু করার সময়, মডেলের পূর্বাভাস গণনার গতি বাড়ানোর জন্য আপনার হার্ডওয়্যার ত্বরণ বৈশিষ্ট্যগুলি ব্যবহার করার কথা বিবেচনা করা উচিত। TensorFlow Lite প্রতিনিধি হল সফ্টওয়্যার মডিউল যা একটি মোবাইল ডিভাইসে বিশেষায়িত প্রসেসিং হার্ডওয়্যার, যেমন গ্রাফিক্স প্রসেসিং ইউনিট (GPUs) বা টেনসর প্রসেসিং ইউনিট (TPUs) ব্যবহার করে মেশিন লার্নিং মডেলগুলির সম্পাদনকে ত্বরান্বিত করে।

আপনার অ্যাপে হার্ডওয়্যার ত্বরণ সক্ষম করতে:

  1. অ্যাপ্লিকেশনটি ব্যবহার করবে এমন প্রতিনিধিকে সংজ্ঞায়িত করতে একটি ভেরিয়েবল তৈরি করুন। উদাহরণ অ্যাপ্লিকেশনে, এই ভেরিয়েবলটি TextClassificationHelper.kt- এর প্রথম দিকে অবস্থিত:

    var currentDelegate: Int = 0
    
  2. একটি প্রতিনিধি নির্বাচক তৈরি করুন। উদাহরণ অ্যাপ্লিকেশনে, প্রতিনিধি নির্বাচনকারীটি TextClassificationHelper.kt- এর মধ্যে initClassifier ফাংশনে অবস্থিত:

    val baseOptionsBuilder = BaseOptions.builder()
    when (currentDelegate) {
       DELEGATE_CPU -> {
           // Default
       }
       DELEGATE_NNAPI -> {
           baseOptionsBuilder.useNnapi()
       }
    }
    

TensorFlow Lite মডেল চালানোর জন্য প্রতিনিধিদের ব্যবহার করার পরামর্শ দেওয়া হয়, কিন্তু প্রয়োজন হয় না। TensorFlow Lite এর সাথে প্রতিনিধিদের ব্যবহার সম্পর্কে আরও তথ্যের জন্য, TensorFlow Lite প্রতিনিধি দেখুন।

মডেলের জন্য ডেটা প্রস্তুত করুন

আপনার অ্যান্ড্রয়েড অ্যাপে, আপনার কোডটি বিদ্যমান ডেটা যেমন কাঁচা পাঠ্যকে একটি টেনসর ডেটা ফর্ম্যাটে রূপান্তর করে ব্যাখ্যার জন্য মডেলকে ডেটা সরবরাহ করে যা আপনার মডেল দ্বারা প্রক্রিয়া করা যেতে পারে। টেনসরের যে ডেটা আপনি একটি মডেলে পাস করেন তাতে অবশ্যই নির্দিষ্ট মাত্রা বা আকৃতি থাকতে হবে যা মডেলটিকে প্রশিক্ষণের জন্য ব্যবহৃত ডেটার বিন্যাসের সাথে মেলে।

এই টেক্সট ক্লাসিফিকেশন অ্যাপটি একটি স্ট্রিংকে ইনপুট হিসেবে গ্রহণ করে এবং মডেলগুলিকে শুধুমাত্র ইংরেজি ভাষার কর্পাসে প্রশিক্ষণ দেওয়া হয়। অনুমান করার সময় বিশেষ অক্ষর এবং অ-ইংরেজি শব্দ উপেক্ষা করা হয়।

মডেলটিতে পাঠ্য ডেটা সরবরাহ করতে:

  1. নিশ্চিত করুন যে initClassifier ফাংশনে প্রতিনিধি এবং মডেলগুলির কোড রয়েছে, যেমনটি ML মডেলগুলি শুরু করুন এবং হার্ডওয়্যার ত্বরণ সেকশন সক্ষম করুন

  2. initClassifier ফাংশন কল করতে init ব্লক ব্যবহার করুন। উদাহরণ অ্যাপ্লিকেশনে, init টি TextClassificationHelper.kt এ অবস্থিত:

    init {
      initClassifier()
    }
    

ভবিষ্যদ্বাণী চালান

আপনার অ্যান্ড্রয়েড অ্যাপে, একবার আপনি একটি BertNLCclassifier বা NLCclassifier অবজেক্ট শুরু করলে, আপনি "ইতিবাচক" বা "নেতিবাচক" হিসাবে শ্রেণীবদ্ধ করার জন্য মডেলের জন্য ইনপুট পাঠ্য ফিড করা শুরু করতে পারেন।

ভবিষ্যদ্বাণী চালানোর জন্য:

  1. একটি classify ফাংশন তৈরি করুন, যা নির্বাচিত ক্লাসিফায়ার ( currentModel ) ব্যবহার করে এবং ইনপুট পাঠ্য ( inferenceTime ) শ্রেণীবদ্ধ করার জন্য নেওয়া সময় পরিমাপ করে। উদাহরণ অ্যাপ্লিকেশনে, classify ফাংশনটি TextClassificationHelper.kt এ অবস্থিত:

    fun classify(text: String) {
      executor = ScheduledThreadPoolExecutor(1)
    
      executor.execute {
        val results: List<Category>
        // inferenceTime is the amount of time, in milliseconds, that it takes to
        // classify the input text.
        var inferenceTime = SystemClock.uptimeMillis()
    
        // Use the appropriate classifier based on the selected model
        if(currentModel == MOBILEBERT) {
          results = bertClassifier.classify(text)
        } else {
          results = nlClassifier.classify(text)
        }
    
        inferenceTime = SystemClock.uptimeMillis() - inferenceTime
    
        listener.onResult(results, inferenceTime)
      }
    }
    
  2. classify থেকে শ্রোতা বস্তুতে ফলাফল পাস করুন।

    fun classify(text: String) {
      ...
      listener.onResult(results, inferenceTime)
    }
    

মডেল আউটপুট হ্যান্ডেল

আপনি পাঠ্যের একটি লাইন ইনপুট করার পরে, মডেলটি 'ইতিবাচক' এবং 'নেতিবাচক' বিভাগের জন্য 0 এবং 1 এর মধ্যে একটি ভবিষ্যদ্বাণী স্কোর তৈরি করে, একটি ফ্লোট হিসাবে প্রকাশ করে।

মডেল থেকে ভবিষ্যদ্বাণী ফলাফল পেতে:

  1. আউটপুট পরিচালনা করার জন্য শ্রোতা বস্তুর জন্য একটি onResult ফাংশন তৈরি করুন। উদাহরণ অ্যাপ্লিকেশনে, লিসেনার অবজেক্টটি MainActivity.kt- এ অবস্থিত

    private val listener = object : TextClassificationHelper.TextResultsListener {
      override fun onResult(results: List<Category>, inferenceTime: Long) {
        runOnUiThread {
          activityMainBinding.bottomSheetLayout.inferenceTimeVal.text =
            String.format("%d ms", inferenceTime)
    
          adapter.resultsList = results.sortedByDescending {
            it.score
          }
    
          adapter.notifyDataSetChanged()
        }
      }
      ...
    }
    
  2. ত্রুটিগুলি পরিচালনা করতে শ্রোতা বস্তুতে একটি onError ফাংশন যুক্ত করুন:

      private val listener = object : TextClassificationHelper.TextResultsListener {
        ...
        override fun onError(error: String) {
          Toast.makeText(this@MainActivity, error, Toast.LENGTH_SHORT).show()
        }
      }
    

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

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