অ্যান্ড্রয়েডের জন্য পাঠ্য এম্বেডিং গাইড

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

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

কোড উদাহরণ

MediaPipe টাস্কের উদাহরণ কোড হল Android এর জন্য একটি Text Embedder অ্যাপের একটি সহজ বাস্তবায়ন। উদাহরণটি দুটি টুকরো পাঠ্যের মধ্যে শব্দার্থিক মিলগুলি মূল্যায়ন করে এবং এর জন্য একটি শারীরিক Android ডিভাইস বা একটি Android এমুলেটর প্রয়োজন৷

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

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

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

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

  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/android
    

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

মূল উপাদান

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

  • TextEmbedderHelper.kt : টেক্সট এমবেডার শুরু করে এবং মডেল ও প্রতিনিধি নির্বাচন পরিচালনা করে।
  • MainActivity.kt : অ্যাপ্লিকেশন বাস্তবায়ন করে এবং ইউজার ইন্টারফেস উপাদান একত্রিত করে।

সেটআপ

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

নির্ভরতা

টেক্সট এমবেডার com.google.mediapipe:tasks-text লাইব্রেরি ব্যবহার করে। আপনার Android অ্যাপ ডেভেলপমেন্ট প্রজেক্টের build.gradle ফাইলে এই নির্ভরতা যোগ করুন। আপনি নিম্নলিখিত কোড সহ প্রয়োজনীয় নির্ভরতা আমদানি করতে পারেন:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

মডেল

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

মডেল নির্বাচন করুন এবং ডাউনলোড করুন, এবং তারপর আপনার প্রকল্প ডিরেক্টরির মধ্যে এটি সংরক্ষণ করুন:

<dev-project-root>/src/main/assets

ModelAssetPath প্যারামিটারের মধ্যে মডেলের পাথ নির্দিষ্ট করুন। উদাহরণ কোডে, TextEmbedderHelper.kt ফাইলের setupTextEmbedder() ফাংশনে মডেলটি সংজ্ঞায়িত করা হয়েছে:

মডেল দ্বারা ব্যবহৃত পাথ নির্দিষ্ট করতে BaseOptions.Builder.setModelAssetPath() ফাংশন ব্যবহার করুন। এই পদ্ধতিটি পরবর্তী বিভাগে কোড উদাহরণে উল্লেখ করা হয়েছে।

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

টাস্ক তৈরি করতে আপনি createFrom...() ফাংশনগুলির একটি ব্যবহার করতে পারেন। createFromOptions() ফাংশন এমবেডার অপশন সেট করতে কনফিগারেশন বিকল্প গ্রহণ করে। আপনি createFromFile() ফ্যাক্টরি ফাংশন ব্যবহার করে কাজটি শুরু করতে পারেন। createFromFile() ফাংশন প্রশিক্ষিত মডেল ফাইলের একটি আপেক্ষিক বা পরম পথ গ্রহণ করে। কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন বিকল্পগুলি দেখুন।

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

val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
    TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)

উদাহরণ কোড বাস্তবায়ন TextEmbedderHelper.kt ফাইলে setupTextEmbedder() ফাংশনে টেক্সট এমবেডার বিকল্পগুলি সেট করে।

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

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

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

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

টেক্সট এমবেডার টেক্সট ( String ) ডেটা দিয়ে কাজ করে। টাস্কটি টোকেনাইজেশন এবং টেনসর প্রিপ্রসেসিং সহ ডেটা ইনপুট প্রিপ্রসেসিং পরিচালনা করে। সমস্ত প্রিপ্রসেসিং embed() ফাংশনের মধ্যে পরিচালিত হয়। আগে থেকে ইনপুট পাঠ্যের অতিরিক্ত প্রিপ্রসেসিংয়ের প্রয়োজন নেই।

val inputText = "The input text to be embedded."

টাস্ক চালান

টেক্সট এমবেডার ইনফারেন্স ট্রিগার করতে embed ফাংশন ব্যবহার করে। টেক্সট এম্বেডিংয়ের জন্য, এর মানে হল ইনপুট টেক্সটের জন্য এমবেডিং ভেক্টর ফিরিয়ে দেওয়া।

নিম্নলিখিত কোডটি প্রদর্শন করে কিভাবে টাস্ক মডেলের সাথে প্রক্রিয়াকরণ চালানো হয়।

textEmbedder?.let {
    val firstEmbed =
        it.embed(firstText).embeddingResult().embeddings().first()
    val secondEmbed =
        it.embed(secondText).embeddingResult().embeddings().first()
    ...
}

উদাহরণ কোডে, embed ফাংশনটিকে TextEmbedderHelper.kt ফাইলে বলা হয়।

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

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

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

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

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

val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)

উদাহরণ কোডে, TextEmbedder.cosineSimilarity() ফাংশনটিকে TextEmbedderHelper.kt ফাইলে ডাকা হয়।