دمج أداة الإجابة عن سؤال BERT

تحمّل واجهة برمجة التطبيقات Task Library BertQuestionAnswerer نموذج Bert وتجيب عن الأسئلة استنادًا إلى محتوى مقطع معيّن. لمزيد من المعلومات، يُرجى الاطّلاع على مثال نموذج السؤال والإجابة.

الميزات الرئيسية لواجهة برمجة التطبيقات BertQuestionAnswerer

  • تتلقّى هذه الدالة مدخلَين نصيَّين على شكل سؤال وسياق، وتُخرج قائمة بالإجابات المحتملة.

  • تُجري هذه السمة عمليات تقسيم إلى رموز Wordpiece أو Sentencepiece خارج الرسم البياني على النص المدخل.

طُرز BertQuestionAnswerer المتوافقة

تتوافق الطُرز التالية مع واجهة برمجة التطبيقات BertNLClassifier.

تشغيل الاستنتاج في Java

الخطوة 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
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

الخطوة 2: تنفيذ الاستدلال باستخدام واجهة برمجة التطبيقات

// 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);

يمكنك الاطّلاع على رمز المصدر لمزيد من التفاصيل.

تشغيل الاستنتاج في Swift

الخطوة 1: استيراد CocoaPods

إضافة مجموعة TensorFlowLiteTaskText في ملف Podfile

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

الخطوة 2: تنفيذ الاستدلال باستخدام واجهة برمجة التطبيقات

// 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);

يمكنك الاطّلاع على رمز المصدر لمزيد من التفاصيل.

تشغيل الاستنتاج في Python

الخطوة 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 ميل مربع) مغطاة بالغابات المطيرة. تشمل هذه المنطقة أراضي تابعة لتسع دول."

السؤال: "أين تقع غابة الأمازون المطيرة؟"

الإجابات:

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 باستخدام النموذج وبيانات الاختبار الخاصة بك.

متطلبات التوافق مع الطراز

تتوقّع واجهة برمجة التطبيقات BertQuestionAnswerer نموذج TFLite يتضمّن بيانات وصفية إلزامية لنموذج TFLite.

يجب أن تستوفي البيانات الوصفية المتطلبات التالية:

  • input_process_units لأداة تقسيم الكلمات/الجمل إلى رموز مميّزة

  • 3 موترات إدخال بالأسماء "ids" و"mask" و "segment_ids" لناتج أداة الترميز

  • موتران للناتج يحملان الاسمَين "end_logits" و"start_logits" للإشارة إلى الموضع النسبي للإجابة في السياق