Die BertQuestionAnswerer
API der Task Library lädt ein Bert-Modell und gibt Antworten
Fragen, die sich auf den Inhalt einer bestimmten Passage beziehen. Weitere Informationen finden Sie in der
Beispiel für das Frage-Antwort-Modell.
Wichtige Funktionen der BertQuestionAnswerer API
Verwendet zwei Texteingaben als Frage und Kontext und gibt eine Liste möglicher Antworten.
Führt Out-of-Graph-Wort- oder Satztokenisierungen bei der Eingabe durch Text.
Unterstützte BertQuestionAnswerer-Modelle
Die folgenden Modelle sind mit der BertNLClassifier
API kompatibel.
Modelle erstellt von TensorFlow Lite Model Maker für BERT Question Answer
Benutzerdefinierte Modelle, die den Anforderungen an die Modellkompatibilität.
Inferenz in Java ausführen
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei .tflite
in das Asset-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 der Datei build.gradle
des Moduls die TensorFlow Lite-Bibliothek 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 in der Quellcode .
Inferenzen 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 in der 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 in der 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 Informationen finden Sie in der
Quellcode
finden Sie weitere Optionen zum Konfigurieren von BertQuestionAnswerer
.
Beispielergebnisse
Hier ist ein Beispiel für die Antwortergebnisse ALBERT-Modell
Kontext: „Der Amazonas-Regenwald, alternativ der Amazonas-Dschungel, auch bekannt in Der Name Amazonia ist ein feuchter tropischer Regenwald mit breitem Blatt im Amazonasgebiet. das den Großteil des Amazonasbeckens in Südamerika bedeckt. Dieses Becken umfasst 7.000.000 km2 davon, davon 5.500.000 km2 sind vom Regenwald bedeckt. Diese Region umfasst ein Territorium, das zu neun Nationen gehört.“
Frage: „Wo ist 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
Probieren Sie die einfache CLI-Demotool für BertQuestionAnswerer mit eigenen Modell- und Testdaten.
Anforderungen an die Modellkompatibilität
Die BertQuestionAnswerer
API erwartet ein TFLite-Modell mit obligatorischen
TFLite-Modellmetadaten.
Metadaten sollten die folgenden Anforderungen erfüllen:
input_process_units
für Wortstück-/Satz-Tokenizer3 Eingabetensoren mit den Namen „ids“, „mask“ und "segment_ids" für die Ausgabe von der Tokenizer
2 Ausgabetensoren mit den Namen „end_logits“ und "start_logits" um die Die relative Position der Antwort im Kontext