Die Task Library-API BertQuestionAnswerer lädt ein Bert-Modell und beantwortet Fragen basierend auf dem Inhalt eines bestimmten Abschnitts. Weitere Informationen finden Sie im Beispiel für das Frage-Antwort-Modell.
Wichtige Funktionen der BertQuestionAnswerer API
Nimmt zwei Texteingaben als Frage und Kontext entgegen und gibt eine Liste möglicher Antworten aus.
Führt Wordpiece- oder Sentencepiece-Tokenisierungen für Eingabetext außerhalb des Diagramms aus.
Unterstützte BertQuestionAnswerer-Modelle
Die folgenden Modelle sind mit der BertNLClassifier API kompatibel.
Modelle, die mit TensorFlow Lite Model Maker für BERT Question Answer erstellt wurden.
Benutzerdefinierte Modelle, die die Anforderungen an die Modellkompatibilität erfüllen.
Inferenz in Java ausführen
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei .tflite in das Assets-Verzeichnis des Android-Moduls, in dem das Modell ausgeführt wird. Geben Sie an, dass die Datei nicht komprimiert werden soll, und fügen Sie die TensorFlow Lite-Bibliothek der build.gradle-Datei des Moduls hinzu:
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'
}
Schritt 2: Inferenz mit der API ausführen
// 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);
Weitere Informationen finden Sie im Quellcode.
Inferenz in Swift ausführen
Schritt 1: CocoaPods importieren
TensorFlowLiteTaskText-Pod in Podfile hinzufügen
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Schritt 2: Inferenz mit der API ausführen
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Weitere Informationen finden Sie im Quellcode.
Inferenz in C++ ausführen
// 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);
Weitere Informationen finden Sie im Quellcode.
Inferenz in Python ausführen
Schritt 1: pip-Paket installieren
pip install tflite-support
Schritt 2: Modell verwenden
# 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)
Weitere Optionen zum Konfigurieren von BertQuestionAnswerer finden Sie im Quellcode.
Beispielergebnisse
Hier sehen Sie ein Beispiel für die Antwort des ALBERT-Modells.
Kontext: „Der Amazonas-Regenwald, auch Amazonas-Dschungel oder Amazonia genannt, ist ein tropischer feuchter Laubwald im Amazonas-Biom, der den größten Teil des Amazonasbeckens in Südamerika bedeckt. Das Becken umfasst 7.000.000 km² (2.700.000 sq mi), von denen 5.500.000 km² (2.100.000 sq mi) vom Regenwald bedeckt sind. Diese Region umfasst Gebiete von neun Ländern.“
Frage: „Wo befindet sich der Amazonas-Regenwald?“
Antworten:
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
Testen Sie das einfache CLI-Demotool für BertQuestionAnswerer mit Ihrem eigenen Modell und Ihren eigenen Testdaten.
Anforderungen an die Modellkompatibilität
Für die BertQuestionAnswerer API ist ein TFLite-Modell mit obligatorischen TFLite-Modellmetadaten erforderlich.
Die Metadaten müssen die folgenden Anforderungen erfüllen:
input_process_unitsfür Wordpiece-/Sentencepiece-Tokenizer3 Eingabetensoren mit den Namen „ids“, „mask“ und „segment_ids“ für die Ausgabe des Tokenizers
2 Ausgabe-Tensoren mit den Namen „end_logits“ und „start_logits“, um die relative Position der Antwort im Kontext anzugeben