ה-API של ספריית המשימות BertQuestionAnswerer
טוען מודל BERT ותשובות
בהתאם לתוכן של פסקה מסוימת. מידע נוסף זמין במאמר
עבור מודל שאלה-תשובה.
תכונות מרכזיות של BertQuestionAnswerer API
מקבל שני קלטי טקסט כשאלה והקשר ומפיק רשימה של תשובות.
ביצוע המרה לאסימונים של מילים או קטעי משפטים לא גרפיים בקלט טקסט.
מודלים נתמכים של BertQuestionAnswerer
המודלים הבאים תואמים ל-API של BertNLClassifier
.
מודלים שנוצרו על ידי TensorFlow Lite Model Maker for BERT Question Answer.
מודלים מותאמים אישית שעומדים בדרישות התאימות של המודלים.
הרצת ההסקה ב-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: מריצים מסקנות באמצעות ה-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);
לצפייה קוד מקור אפשר לקבל פרטים נוספים.
הרצת ההסקה ב-Swift
שלב 1: מייבאים CocoaPods
הוספת רצף TensorFlowLiteTaskText ב-Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
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);
לצפייה קוד מקור אפשר לקבל פרטים נוספים.
הרצת ההסקה ב-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
.
תוצאות לדוגמה
הנה דוגמה לתוצאות התשובה של מודל אלBERT.
הקשר: "יער הגשם של האמזונאס, לחלופין, ג'ונגל האמזונאס, אנגלית כמו אמזוניה, הוא יער של גשם טרופי לחות באמזונס ביומה שמכסה את רוב אגן האמזונס בדרום אמריקה. אגן הניקוז הזה שטח של 7,000,000 km2 (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 את המודל ונתוני הבדיקה שלכם.
דרישות התאימות של המודלים
ל-API BertQuestionAnswerer
נדרש מודל TFLite עם
מטא-נתונים של מודל TFLite.
המטא-נתונים צריכים לעמוד בדרישות הבאות:
input_process_units
לרכיב אסימון של מילה/טקסט3 רכיבי קלט עם השמות 'ids', 'mask' ו-segment_id את הפלט של כלי ההמרה לאסימונים
2 רכיבי פלט עם השם end_logits ו-start_logits כדי לציין את המיקום היחסי של התשובה בהקשר