iOS এর জন্য টেক্সট এম্বেডিং গাইড

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

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

কোড উদাহরণ

টেক্সট এম্বেডারের উদাহরণ কোডটি iOS-এর জন্য একটি অ্যাপের একটি মৌলিক বাস্তবায়ন প্রদান করে যা এই কাজটিকে সংহত করে। উদাহরণটি দুটি টুকরো পাঠ্যের মধ্যে শব্দার্থিক মিলগুলি মূল্যায়ন করে এবং এর জন্য একটি ভৌত ​​iOS ডিভাইস বা একটি 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_embedder/ios/
    

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

মূল উপাদান

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

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

সেটআপ

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

নির্ভরতা

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

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

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

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

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

মডেল

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

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

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

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

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

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

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

সুইফট

import MediaPipeTasksText

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

let options = TextEmbedderOptions()
options.baseOptions.modelAssetPath = modelPath
options.quantize = true

let textEmbedder = try TextEmbedder(options: options)

উদ্দেশ্য-C

@import MediaPipeTasksText;

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

MPPTextEmbedderOptions *options = [[MPPTextEmbedderOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.quantize = YES;

MPPTextEmbedder *textEmbedder =
      [[MPPTextEmbedder alloc] initWithOptions:options error:nil];

কনফিগারেশন বিকল্প

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

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
l2_normalize L2 আদর্শের সাথে প্রত্যাবর্তিত বৈশিষ্ট্য ভেক্টরকে স্বাভাবিক করতে হবে কিনা। এই বিকল্পটি ব্যবহার করুন শুধুমাত্র যদি মডেলটিতে ইতিমধ্যে একটি নেটিভ L2_NORMALIZATION TFLite Op না থাকে৷ বেশিরভাগ ক্ষেত্রে, এটি ইতিমধ্যেই হয় এবং এইভাবে এই বিকল্পের প্রয়োজন ছাড়াই TFLite অনুমানের মাধ্যমে L2 স্বাভাবিককরণ অর্জন করা হয়। Boolean False
quantize প্রত্যাবর্তিত এমবেডিং স্কেলার কোয়ান্টাইজেশনের মাধ্যমে বাইটে পরিমাপ করা উচিত কিনা। এমবেডিংগুলিকে পরোক্ষভাবে ইউনিট-নর্ম হিসাবে ধরে নেওয়া হয় এবং তাই যে কোনও মাত্রা [-1.0, 1.0]-এ একটি মান থাকার নিশ্চয়তা দেওয়া হয়। যদি এটি না হয় তবে l2_normalize বিকল্পটি ব্যবহার করুন। Boolean False

টাস্ক চালান

ইনপুট টেক্সট এম্বেড করতে এবং এর এমবেডিং ভেক্টর পেতে আপনি TextEmbedder এর embed(text:) পদ্ধতি ব্যবহার করতে পারেন।

সুইফট

let result = try textEmbedder.embed(text: text)

উদ্দেশ্য-C

MPPTextEmbedderResult *result = [textEmbedder embedText:text
                                                  error:nil];

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

উদাহরণ কোডে, embed(text:) পদ্ধতিটিকে TextEmbedderService.swift ফাইলে বলা হয়।

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

অনুমান চালানোর পরে, টেক্সট এমবেডার টাস্ক একটি TextEmbedderResult অবজেক্ট প্রদান করে যাতে ইনপুট টেক্সটের জন্য এমবেডিংয়ের একটি তালিকা থাকে (হয় ফ্লোটিং পয়েন্ট বা স্কেলার-কোয়ান্টাইজড)।

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

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

আপনি TextEmbedder.cosineSimilarity পদ্ধতি ব্যবহার করে দুটি এম্বেডিংয়ের শব্দার্থগত সাদৃশ্য তুলনা করতে পারেন।

সুইফট

let similarity = try TextEmbedder.cosineSimilarity(
  embedding1: result.embeddingResult.embeddings[0],
  embedding2: otherResult.embeddingResult.embeddings[0])
    

উদ্দেশ্য-C

NSNumber *similarity = [MPPTextEmbedder
      cosineSimilarityBetweenEmbedding1:result.embeddingResult.embeddings[0]
                          andEmbedding2:otherResult.embeddingResult.embeddings[0]
                                  error:nil];
    

উদাহরণ কোডে, TextEmbedder.cosineSimilarity পদ্ধতিটিকে TextEmbedderService.swift ফাইলে ডাকা হয়।