Task Library BertQuestionAnswerer
API یک مدل Bert را بارگیری می کند و به سؤالات بر اساس محتوای یک قطعه داده شده پاسخ می دهد. برای اطلاعات بیشتر، مستندات مدل پرسش و پاسخ را اینجا ببینید .
ویژگی های کلیدی BertQuestionAnswerer API
دو ورودی متن را به عنوان سوال و زمینه می گیرد و لیستی از پاسخ های ممکن را خروجی می گیرد.
در متن ورودی، توکنسازیهای متنی یا جملهای خارج از نمودار را انجام میدهد.
مدلهای BertQuestionAnswerer پشتیبانی میشوند
مدل های زیر با BertNLClassifier
API سازگار هستند.
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای پاسخ به سؤال BERT .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
مرحله 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.3.0'
}
مرحله 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.2.0'
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 Tokenizer3 تانسور ورودی با نامهای "ids"، "mask" و "segment_ids" برای خروجی توکنایزر
2 تانسور خروجی با نامهای "end_logits" و "start_logits" برای نشان دادن موقعیت نسبی پاسخ در زمینه