BERT প্রশ্নের উত্তরদাতাকে ইন্টিগ্রেট করুন

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

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

BertQuestionAnswerer API-এর মূল বৈশিষ্ট্য

  • প্রশ্ন এবং প্রসঙ্গ হিসাবে দুটি পাঠ্য ইনপুট নেয় এবং সম্ভাব্য উত্তরগুলির একটি তালিকা আউটপুট করে।

  • ইনপুট টেক্সটে আউট-অফ-গ্রাফ ওয়ার্ডপিস বা সেন্টেন্সপিস টোকেনাইজেশন সম্পাদন করে।

সমর্থিত BertQuestionAnswerer মডেল

নিম্নলিখিত মডেলগুলি BertNLClassifier API-এর সাথে সামঞ্জস্যপূর্ণ।

জাভাতে অনুমান চালান

ধাপ 1: Gradle নির্ভরতা এবং অন্যান্য সেটিংস আমদানি করুন

.tflite মডেল ফাইলটি Android মডিউলের সম্পদ ডিরেক্টরিতে অনুলিপি করুন যেখানে মডেলটি চালানো হবে৷ নির্দিষ্ট করুন যে ফাইলটি সংকুচিত করা উচিত নয় এবং মডিউলের build.gradle ফাইলে TensorFlow Lite লাইব্রেরি যোগ করুন:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Text Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}

ধাপ 2: API ব্যবহার করে অনুমান চালান

// Initialization
BertQuestionAnswererOptions options =
    BertQuestionAnswererOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertQuestionAnswerer answerer =
    BertQuestionAnswerer.createFromFileAndOptions(
        androidContext, modelFile, options);

// Run inference
List<QaAnswer> answers = answerer.answer(contextOfTheQuestion, questionToAsk);

আরো বিস্তারিত জানার জন্য সোর্স কোড দেখুন.

সুইফটে অনুমান চালান

ধাপ 1: কোকোপড আমদানি করুন

Podfile এ TensorFlowLiteTaskText পড যোগ করুন

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.2.0'
end

ধাপ 2: API ব্যবহার করে অনুমান চালান

// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
      modelPath: mobileBertModelPath)

// Run inference
let answers = mobileBertAnswerer.answer(
      context: context, question: question)

আরো বিস্তারিত জানার জন্য সোর্স কোড দেখুন.

C++ এ অনুমান চালান

// Initialization
BertQuestionAnswererOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertQuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference with your inputs, `context_of_question` and `question_to_ask`.
std::vector<QaAnswer> positive_results = answerer->Answer(context_of_question, question_to_ask);

আরো বিস্তারিত জানার জন্য সোর্স কোড দেখুন.

উদাহরণ ফলাফল

এখানে ALBERT মডেলের উত্তর ফলাফলের একটি উদাহরণ।

প্রসঙ্গ: "অ্যামাজন রেইনফরেস্ট, বিকল্পভাবে, আমাজন জঙ্গল, ইংরেজিতে অ্যামাজনিয়া নামেও পরিচিত, আমাজন বায়োমের একটি আর্দ্র বিস্তৃত গ্রীষ্মমন্ডলীয় রেইনফরেস্ট যা দক্ষিণ আমেরিকার বেশিরভাগ অ্যামাজন অববাহিকা জুড়ে রয়েছে৷ এই অববাহিকাটি 7,000,000 km2 (2,00,000 milesq) জুড়ে রয়েছে৷ ), যার মধ্যে 5,500,000 km2 (2,100,000 বর্গ মাইল) রেইনফরেস্ট দ্বারা আচ্ছাদিত। এই অঞ্চলটি নয়টি জাতির অন্তর্গত অঞ্চল অন্তর্ভুক্ত করে।"

প্রশ্ন: "আমাজন রেইনফরেস্ট কোথায়?"

উত্তর:

answer[0]:  'South America.'
logit: 1.84847, start_index: 39, end_index: 40
answer[1]:  'most of the Amazon basin of South America.'
logit: 1.2921, start_index: 34, end_index: 40
answer[2]:  'the Amazon basin of South America.'
logit: -0.0959535, start_index: 36, end_index: 40
answer[3]:  'the Amazon biome that covers most of the Amazon basin of South America.'
logit: -0.498558, start_index: 28, end_index: 40
answer[4]:  'Amazon basin of South America.'
logit: -0.774266, start_index: 37, end_index: 40

আপনার নিজস্ব মডেল এবং পরীক্ষার ডেটা সহ BertQuestionAnswerer-এর জন্য সাধারণ CLI ডেমো টুল ব্যবহার করে দেখুন।

মডেল সামঞ্জস্যের প্রয়োজনীয়তা

BertQuestionAnswerer API বাধ্যতামূলক TFLite মডেল মেটাডেটা সহ একটি TFLite মডেল আশা করে।

মেটাডেটা নিম্নলিখিত প্রয়োজনীয়তা পূরণ করা উচিত:

  • input_process_units /Sentencepiece Tokenizer-এর জন্য input_process_units

  • টোকেনাইজারের আউটপুটের জন্য "আইডি", "মাস্ক" এবং "সেগমেন্ট_আইডিস" নামের 3টি ইনপুট টেনসর

  • প্রসঙ্গে উত্তরের আপেক্ষিক অবস্থান নির্দেশ করতে "end_logits" এবং "start_logits" নামের 2টি আউটপুট টেনসর