پاسخگوی پرسش BERT را ادغام کنید

Task Library BertQuestionAnswerer API یک مدل Bert را بارگیری می کند و به سؤالات بر اساس محتوای یک قطعه داده شده پاسخ می دهد. برای اطلاعات بیشتر، مستندات مدل پرسش و پاسخ را اینجا ببینید.

ویژگی های کلیدی BertQuestionAnswerer API

  • دو ورودی متن را به عنوان سوال و زمینه می گیرد و لیستی از پاسخ های ممکن را خروجی می گیرد.

  • در متن ورودی، توکن‌سازی‌های متنی یا جمله‌ای خارج از نمودار را انجام می‌دهد.

مدل‌های BertQuestionAnswerer پشتیبانی می‌شوند

مدل های زیر با BertNLClassifier API سازگار هستند.

استنتاج را در جاوا اجرا کنید

مرحله 1: وابستگی Gradle و تنظیمات دیگر را وارد کنید

فایل مدل .tflite را در فهرست دارایی‌های ماژول Android که در آن مدل اجرا می‌شود، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه TensorFlow Lite را به فایل build.gradle ماژول اضافه کنید:

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.4.4'
}

مرحله 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: CocoaPods را وارد کنید

غلاف TensorFlowLiteTaskText را در Podfile اضافه کنید

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
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);

برای جزئیات بیشتر به کد منبع مراجعه کنید.

استنتاج را در پایتون اجرا کنید

مرحله 1: بسته pip را نصب کنید

pip install tflite-support

مرحله 2: استفاده از مدل

# Imports
from tflite_support.task import text

# Initialization
answerer = text.BertQuestionAnswerer.create_from_file(model_path)

# Run inference
bert_qa_result = answerer.answer(context, question)

برای گزینه های بیشتر برای پیکربندی BertQuestionAnswerer به کد منبع مراجعه کنید.

نتایج نمونه

در اینجا نمونه ای از نتایج پاسخ مدل ALBERT آورده شده است.

زمینه: "جنگل بارانی آمازون یا جنگل آمازون، که در انگلیسی به نام آمازونیا نیز شناخته می شود، یک جنگل بارانی استوایی پهن برگ مرطوب در بیوم آمازون است که بیشتر حوضه آمازون در آمریکای جنوبی را پوشش می دهد. این حوضه 7,000,000 کیلومتر مربع (2,700,000 مایل مربع) را در بر می گیرد. ) که 5,500,000 کیلومتر مربع (2,100,000 مایل مربع) توسط جنگل های بارانی پوشیده شده است. این منطقه شامل قلمرو متعلق به 9 کشور است.

سوال: جنگل بارانی آمازون کجاست؟

پاسخ ها:

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

ابزار ساده CLI برای BertQuestionAnswerer را با مدل و داده های آزمایشی خود امتحان کنید.

الزامات سازگاری مدل

API BertQuestionAnswerer یک مدل TFLite با فراداده مدل TFLite اجباری را انتظار دارد.

فراداده باید شرایط زیر را برآورده کند:

  • input_process_units برای Wordpiece/Sentencepiece Tokenizer

  • 3 تانسور ورودی با نام‌های "ids"، "mask" و "segment_ids" برای خروجی توکنایزر

  • 2 تانسور خروجی با نام‌های "end_logits" و "start_logits" برای نشان دادن موقعیت نسبی پاسخ در زمینه