دمج BERT سؤال المجيب

تقوم واجهة برمجة تطبيقات BertQuestionAnswerer لمكتبة المهام بتحميل نموذج بيرت والإجابة على الأسئلة بناءً على محتوى مقطع معين. لمزيد من المعلومات، راجع الوثائق الخاصة بنموذج الأسئلة والإجابة هنا .

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

  • يأخذ مدخلين للنص كسؤال وسياق ويخرج قائمة بالإجابات المحتملة.

  • تنفيذ رموز مميزة لقطع الكلمات أو قطع الجملة خارج الرسم البياني على النص المُدخل.

نماذج 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: تشغيل الاستدلال باستخدام واجهة برمجة التطبيقات

// 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: تشغيل الاستدلال باستخدام واجهة برمجة التطبيقات

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

نتائج المثال

فيما يلي مثال لنتائج إجابة نموذج ألبرت .

السياق: "غابات الأمازون المطيرة، أو غابة الأمازون، والمعروفة أيضًا باللغة الإنجليزية باسم أمازونيا، هي غابة مطيرة استوائية عريضة الأوراق رطبة في منطقة الأمازون الحيوية التي تغطي معظم حوض الأمازون في أمريكا الجنوبية. يغطي هذا الحوض 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

جرب أداة CLI التجريبية البسيطة لـ BertQuestionAnswerer باستخدام النموذج الخاص بك وبيانات الاختبار.

متطلبات توافق النموذج

تتوقع BertQuestionAnswerer API نموذج TFLite مع بيانات تعريف نموذج TFLite الإلزامية.

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

  • input_process_units لأداة Wordpiece/Sentencepiece Tokenizer

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

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