کتابخانه وظایف، رابط برنامهنویسی کاربردی (API) BertQuestionAnswerer یک مدل Bert را بارگذاری میکند و بر اساس محتوای یک متن داده شده به سوالات پاسخ میدهد. برای اطلاعات بیشتر، به مثال مدل پرسش-پاسخ مراجعه کنید.
ویژگیهای کلیدی رابط برنامهنویسی کاربردی (API) پاسخدهندهی BertQuestion
دو ورودی متنی به عنوان سوال و متن را دریافت میکند و لیستی از پاسخهای ممکن را به عنوان خروجی ارائه میدهد.
توکنسازیهای خارج از نمودار Wordpiece یا Sentencepiece را روی متن ورودی انجام میدهد.
مدلهای پشتیبانیشدهی BertQuestionAnswerer
مدلهای زیر با API مربوط به BertNLClassifier سازگار هستند.
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای BERT پرسش و پاسخ .
مدلهای سفارشی که الزامات سازگاری مدل را برآورده میکنند.
اجرای استنتاج در جاوا
مرحله ۱: وارد کردن وابستگی Gradle و سایر تنظیمات
فایل مدل .tflite را در دایرکتوری assets ماژول اندروید که مدل در آن اجرا خواهد شد، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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'
}
مرحله ۲: اجرای استنتاج با استفاده از 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
مرحله ۲: اجرای استنتاج با استفاده از 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);
برای جزئیات بیشتر به کد منبع مراجعه کنید.
اجرای استنتاج در پایتون
مرحله ۱: نصب بسته pip
pip install tflite-support
مرحله ۲: استفاده از مدل
# 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 به کد منبع مراجعه کنید.
نتایج مثال
در اینجا مثالی از نتایج پاسخ مدل آلبرت آورده شده است.
متن: «جنگل بارانی آمازون، که به طور خلاصه، جنگل آمازون، که در انگلیسی با نام آمازونیا نیز شناخته میشود، یک جنگل بارانی گرمسیری پهنبرگ و مرطوب در زیستبوم آمازون است که بیشتر حوضه آمازون آمریکای جنوبی را پوشش میدهد. این حوضه شامل ۷،۰۰۰،۰۰۰ کیلومتر مربع (۲،۷۰۰،۰۰۰ مایل مربع) است که ۵،۵۰۰،۰۰۰ کیلومتر مربع (۲،۱۰۰،۰۰۰ مایل مربع) آن توسط جنگل بارانی پوشیده شده است. این منطقه شامل قلمرو متعلق به نه کشور است.»
سوال: جنگلهای آمازون کجا هستند؟
پاسخها:
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 با فراداده (Metadata) مدل TFLite اجباری را دارد.
متادیتا باید الزامات زیر را برآورده کند:
input_process_unitsبرای توکنساز Wordpiece/Sentencepiece۳ تانسور ورودی با نامهای "ids"، "mask" و "segment_ids" برای خروجی توکنساز
دو تانسور خروجی با نامهای "end_logits" و "start_logits" برای نشان دادن موقعیت نسبی پاسخ در متن