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

تحمِّل واجهة برمجة التطبيقات في "مكتبة المهام BertQuestionAnswerer" نموذج Bert وإجاباته. الأسئلة بناءً على محتوى فقرة معينة. لمزيد من المعلومات، يُرجى الاطّلاع على لنموذج الأسئلة والأجوبة.

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

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

  • تُجري عمليات إنشاء رموز مميّزة خارج حدود الكلمات أو الجملة عند الإدخال. النص.

نماذج BertQuestionAnswerer المتوافقة

النماذج التالية متوافقة مع BertNLClassifier API.

تنفيذ الاستنتاج باستخدام 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);

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

تنفيذ الاستنتاج في بايثون

الخطوة 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

السياق: "غابة الأمازون المطيرة، أو "غابة الأمازون"، المعروفة أيضًا في الإنجليزية مثل الأمازون، هي غابة مطيرة استوائية رطبة واسع الشجر في الأمازون منطقة حيوية تغطي معظم مساحة حوض الأمازون في أمريكا الجنوبية. هذا الحوض تبلغ 7000000 كم2 (2700000 ميل مربع)، منها تغطي الغابات المطيرة مساحة 5,500,000 كم2 (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 نموذج TFLite مع البيانات الوصفية لنماذج TFLite:

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

  • input_process_units لبرنامج الترميز المميّز لقطعة النص أو الجملة

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

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