iOS এর জন্য পাঠ্য শ্রেণিবিন্যাস নির্দেশিকা

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

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

কোড উদাহরণ

MediaPipe টাস্ক উদাহরণ কোড হল iOS এর জন্য একটি টেক্সট ক্লাসিফায়ার অ্যাপের একটি মৌলিক বাস্তবায়ন।

আপনি অ্যাপটিকে আপনার নিজের iOS অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। আপনি GitHub এ টেক্সট ক্লাসিফায়ার উদাহরণ কোড উল্লেখ করতে পারেন।

কোডটি ডাউনলোড করুন

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

উদাহরণ কোড ডাউনলোড করতে:

  1. নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:

    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করার জন্য আপনার গিট ইন্সট্যান্স কনফিগার করুন, যাতে আপনার কাছে টেক্সট ক্লাসিফায়ার উদাহরণ অ্যাপের জন্য শুধুমাত্র ফাইল থাকে:

    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_classification/ios/
    

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

মূল উপাদান

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

  • TextClassifierHelper.swift : টেক্সট ক্লাসিফায়ার শুরু করে এবং মডেল নির্বাচন পরিচালনা করে।
  • ViewController.swift : UI প্রয়োগ করে এবং ফলাফল ফরম্যাট করে।

সেটআপ

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

নির্ভরতা

টেক্সট ক্লাসিফায়ার MediaPipeTasksText লাইব্রেরি ব্যবহার করে, যা CocoaPods ব্যবহার করে ইনস্টল করা আবশ্যক। লাইব্রেরিটি সুইফট এবং অবজেক্টিভ-সি উভয় অ্যাপের সাথেই সামঞ্জস্যপূর্ণ এবং কোনো অতিরিক্ত ভাষা-নির্দিষ্ট সেটআপের প্রয়োজন নেই।

ম্যাকওএস-এ কোকোপড ইনস্টল করার নির্দেশাবলীর জন্য, কোকোপডস ইনস্টলেশন নির্দেশিকা পড়ুন। আপনার অ্যাপের জন্য প্রয়োজনীয় পড দিয়ে কীভাবে একটি Podfile তৈরি করবেন তার নির্দেশাবলীর জন্য, CocoaPods ব্যবহার করুন দেখুন।

নিম্নলিখিত কোড ব্যবহার করে Podfile এ MediaPipeTasksText পড যোগ করুন:

target 'MyTextClassifierApp' do
  use_frameworks!
  pod 'MediaPipeTasksText'
end

যদি আপনার অ্যাপে ইউনিট পরীক্ষার লক্ষ্য অন্তর্ভুক্ত থাকে, তাহলে আপনার Podfile সেট আপ করার বিষয়ে অতিরিক্ত তথ্যের জন্য iOS এর জন্য সেট আপ গাইড দেখুন।

মডেল

MediaPipe টেক্সট ক্লাসিফায়ার টাস্কের জন্য একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই টাস্কের সাথে সামঞ্জস্যপূর্ণ। টেক্সট ক্লাসিফায়ারের জন্য উপলব্ধ প্রশিক্ষিত মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

একটি মডেল নির্বাচন করুন এবং ডাউনলোড করুন এবং Xcode ব্যবহার করে আপনার প্রকল্প ডিরেক্টরিতে যোগ করুন। আপনার Xcode প্রকল্পে ফাইলগুলি কীভাবে যুক্ত করবেন তার নির্দেশাবলীর জন্য, আপনার Xcode প্রকল্পে ফাইল এবং ফোল্ডারগুলি পরিচালনা করুন দেখুন।

আপনার অ্যাপ বান্ডেলে মডেলের পাথ নির্দিষ্ট করতে BaseOptions.modelAssetPath প্রপার্টি ব্যবহার করুন। একটি কোড উদাহরণের জন্য, পরবর্তী বিভাগ দেখুন।

টাস্ক তৈরি করুন

আপনি টেক্সট ক্লাসিফায়ার টাস্ক তৈরি করতে পারেন এর ইনিশিয়ালাইজারগুলির একটিকে কল করে। TextClassifier(options:) সূচনাকারী কনফিগারেশন বিকল্পগুলির জন্য মান সেট করে।

আপনার যদি কাস্টমাইজড কনফিগারেশন বিকল্পগুলির সাথে একটি টেক্সট ক্লাসিফায়ার আরম্ভ করার প্রয়োজন না হয়, আপনি ডিফল্ট বিকল্পগুলির সাথে একটি টেক্সট ক্লাসিফায়ার তৈরি করতে TextClassifier(modelPath:) ইনিশিয়ালাইজার ব্যবহার করতে পারেন। কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন ওভারভিউ দেখুন।

নিম্নলিখিত কোডটি এই কাজটি কীভাবে তৈরি এবং কনফিগার করতে হয় তা প্রদর্শন করে।

সুইফট

import MediaPipeTasksText

let modelPath = Bundle.main.path(forResource: "model",
                                      ofType: "tflite")

let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6

let textClassifier = try TextClassifier(options: options)

উদ্দেশ্য গ

@import MediaPipeTasksText;

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
                                                      ofType:@"tflite"];

MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;

MPPTextClassifier *textClassifier =
      [[MPPTextClassifier alloc] initWithOptions:options error:nil];

কনফিগারেশন অপশন

এই টাস্কে iOS অ্যাপের জন্য নিম্নলিখিত কনফিগারেশন বিকল্প রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
displayNamesLocale টাস্কের মডেলের মেটাডেটাতে প্রদত্ত প্রদর্শন নামের জন্য ব্যবহার করার জন্য লেবেলের ভাষা সেট করে, যদি উপলব্ধ থাকে। ইংরেজির জন্য ডিফল্ট হল en । আপনি TensorFlow Lite Metadata Writer API ব্যবহার করে একটি কাস্টম মডেলের মেটাডেটাতে স্থানীয় লেবেল যোগ করতে পারেন স্থানীয় কোড en
maxResults ফিরতে সর্বোচ্চ স্কোর করা শ্রেণীবিভাগ ফলাফলের ঐচ্ছিক সর্বোচ্চ সংখ্যা সেট করে। <0 হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে। যেকোনো ইতিবাচক সংখ্যা -1
scoreThreshold ভবিষ্যদ্বাণী স্কোর থ্রেশহোল্ড সেট করে যা মডেল মেটাডেটাতে প্রদত্ত একটিকে ওভাররাইড করে (যদি থাকে)। এই মানের নিচের ফলাফল প্রত্যাখ্যান করা হয়। কোন ভাসা সেট না
categoryAllowlist অনুমোদিত বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যাদের বিভাগের নাম এই সেটে নেই সেগুলি ফিল্টার আউট করা হবে৷ সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি categoryDenylist সাথে পারস্পরিকভাবে একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট না
categoryDenylist অনুমোদিত নয় এমন বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যার বিভাগের নাম এই সেটে আছে তা ফিল্টার আউট করা হবে। সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি categoryAllowlist সাথে পারস্পরিকভাবে একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট না

ডেটা প্রস্তুত করুন

টেক্সট ক্লাসিফায়ার টেক্সট ডেটা নিয়ে কাজ করে। টাস্কটি টোকেনাইজেশন এবং টেনসর প্রিপ্রসেসিং সহ ডেটা ইনপুট প্রিপ্রসেসিং পরিচালনা করে।

সমস্ত প্রিপ্রসেসিং classify(text:) ফাংশনের মধ্যে পরিচালিত হয়। আগে থেকে ইনপুট পাঠ্যের অতিরিক্ত প্রিপ্রসেসিংয়ের প্রয়োজন নেই।

সুইফট

let text = "The input text to be classified."

উদ্দেশ্য গ

NSString *text = @"The input text to be classified.";

টাস্ক চালান

টেক্সট ক্লাসিফায়ার চালানোর জন্য, classify(text:) পদ্ধতি ব্যবহার করুন। টেক্সট ক্লাসিফায়ার ইনপুট টেক্সটের জন্য সম্ভাব্য বিভাগ প্রদান করে।

সুইফট

let result = try textClassifier.classify(text: text)

উদ্দেশ্য গ

MPPTextClassifierResult *result = [textClassifier classifyText:text
                                                          error:nil];

দ্রষ্টব্য : টাস্কটি বর্তমান থ্রেডটিকে ব্লক করে যতক্ষণ না এটি পাঠ্যের উপর অনুমান চালানো শেষ না হয়। বর্তমান থ্রেড ব্লক করা এড়াতে, iOS ডিসপ্যাচ বা NSOoperation ফ্রেমওয়ার্ক ব্যবহার করে একটি ব্যাকগ্রাউন্ড থ্রেডে প্রক্রিয়াকরণ চালান।

হ্যান্ডেল এবং প্রদর্শন ফলাফল

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

নিম্নলিখিত এই টাস্ক থেকে আউটপুট ডেটার একটি উদাহরণ দেখায়:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

এই ফলাফলটি ইনপুট টেক্সটে BERT-শ্রেণিফায়ার চালানোর মাধ্যমে প্রাপ্ত হয়েছে: "an imperfect but overall entertaining mystery"

উদাহরণ কোডে ViewController.swift ফাইলটি প্রদর্শন করে যে কীভাবে টাস্ক থেকে ফিরে আসা সনাক্তকরণ ফলাফলগুলি প্রদর্শন করতে হয়।