টেক্সট অনুসন্ধানের মাধ্যমে একটি কর্পাসে শব্দার্থগতভাবে অনুরূপ টেক্সট অনুসন্ধান করা সম্ভব হয়। এটি অনুসন্ধান কোয়েরিকে একটি উচ্চ-মাত্রিক ভেক্টরে এম্বেড করে কাজ করে যা কোয়েরির শব্দার্থিক অর্থ উপস্থাপন করে, তারপরে ScaNN (স্কেলেবল নিকটতম প্রতিবেশী) ব্যবহার করে একটি পূর্বনির্ধারিত, কাস্টম সূচকে সাদৃশ্য অনুসন্ধান করে।
টেক্সট ক্লাসিফিকেশনের (যেমন Bert natural language classifier ) বিপরীতে, স্বীকৃত আইটেমের সংখ্যা বাড়ানোর জন্য পুরো মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়ার প্রয়োজন হয় না। নতুন আইটেম যোগ করা যেতে পারে কেবল সূচকটি পুনরায় তৈরি করার মাধ্যমে। এটি বৃহত্তর (১০০k+ আইটেম) কর্পাসগুলির সাথে কাজ করার সুযোগও দেয়।
আপনার মোবাইল অ্যাপে আপনার কাস্টম টেক্সট সার্চার স্থাপন করতে Task Library TextSearcher API ব্যবহার করুন।
TextSearcher API এর মূল বৈশিষ্ট্যগুলি
ইনপুট হিসেবে একটি একক স্ট্রিং নেয়, এম্বেডিং এক্সট্রাকশন এবং ইনডেক্সে নিকটতম-প্রতিবেশী অনুসন্ধান করে।
ইনপুট টেক্সট প্রক্রিয়াকরণ, ইনপুট টেক্সটের উপর ইন-গ্রাফ বা আউট-অফ-গ্রাফ ওয়ার্ডপিস বা সেন্টেন্সপিস টোকেনাইজেশন সহ।
পূর্বশর্ত
TextSearcher API ব্যবহার করার আগে, অনুসন্ধানের জন্য কাস্টম টেক্সট কর্পাসের উপর ভিত্তি করে একটি সূচক তৈরি করতে হবে। টিউটোরিয়ালটি অনুসরণ এবং অভিযোজিত করে মডেল মেকার সার্চার API ব্যবহার করে এটি অর্জন করা যেতে পারে।
এর জন্য আপনার প্রয়োজন হবে:
- একটি TFLite টেক্সট এম্বেডার মডেল, যেমন ইউনিভার্সাল সেন্টেন্স এনকোডার। উদাহরণস্বরূপ,
- এই Colab- এ পুনঃপ্রশিক্ষিত , যা ডিভাইসে অনুমানের জন্য অপ্টিমাইজ করা হয়েছে। Pixel 6-এ একটি টেক্সট স্ট্রিং কোয়েরি করতে মাত্র 6ms সময় লাগে।
- কোয়ান্টাইজডটি , যা উপরেরটির চেয়ে ছোট কিন্তু প্রতিটি এম্বেডিংয়ের জন্য 38 মিলিসেকেন্ড সময় নেয়।
- তোমার লেখার সংগ্রহ।
এই ধাপের পরে, আপনার একটি স্বতন্ত্র TFLite অনুসন্ধানকারী মডেল (যেমন mobilenet_v3_searcher.tflite ) থাকা উচিত, যা মূল টেক্সট এম্বেডকারী মডেল যার সূচকটি TFLite মডেল মেটাডেটার সাথে সংযুক্ত থাকে।
জাভাতে অনুমান চালান
ধাপ ১: গ্রেডল নির্ভরতা এবং অন্যান্য সেটিংস আমদানি করুন
.tflite searcher মডেল ফাইলটি Android মডিউলের সম্পদ ডিরেক্টরিতে কপি করুন যেখানে মডেলটি চালানো হবে। ফাইলটি সংকুচিত করা উচিত নয় তা নির্দিষ্ট করুন এবং মডিউলের build.gradle ফাইলে TensorFlow Lite লাইব্রেরি যোগ করুন:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
ধাপ ২: মডেল ব্যবহার করা
// Initialization
TextSearcherOptions options =
TextSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
TextSearcher textSearcher =
textSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = textSearcher.search(text);
TextSearcher কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোড এবং জাভাডোক দেখুন।
C++ এ অনুমান চালান
// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();
// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();
TextSearcher কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোডটি দেখুন।
পাইথনে ইনফারেন্স চালান
ধাপ ১: টেনসরফ্লো লাইট সাপোর্ট পাইপি প্যাকেজ ইনস্টল করুন।
আপনি নিম্নলিখিত কমান্ড ব্যবহার করে TensorFlow Lite Support Pypi প্যাকেজ ইনস্টল করতে পারেন:
pip install tflite-support
ধাপ ২: মডেল ব্যবহার করা
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
TextSearcher কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোডটি দেখুন।
উদাহরণ ফলাফল
Results:
Rank#0:
metadata: The sun was shining on that day.
distance: 0.04618
Rank#1:
metadata: It was a sunny day.
distance: 0.10856
Rank#2:
metadata: The weather was excellent.
distance: 0.15223
Rank#3:
metadata: The cat is chasing after the mouse.
distance: 0.34271
Rank#4:
metadata: He was very happy with his newly bought car.
distance: 0.37703
আপনার নিজস্ব মডেল এবং পরীক্ষার ডেটা দিয়ে TextSearcher-এর জন্য সহজ CLI ডেমো টুলটি ব্যবহার করে দেখুন।