L'API Task Library BertQuestionAnswerer carica un modello Bert e risponde
alle domande in base ai contenuti di un determinato passaggio. Per saperne di più, consulta l'esempio per il modello
Domanda-Risposta.
Funzionalità chiave dell'API BertQuestionAnswerer
Accetta due input di testo come domanda e contesto e restituisce un elenco di possibili risposte.
Esegue la tokenizzazione Wordpiece o Sentencepiece fuori dal grafico sul testo di input.
Modelli BertQuestionAnswerer supportati
I seguenti modelli sono compatibili con l'API BertNLClassifier.
Modelli creati da TensorFlow Lite Model Maker per BERT Question Answer.
Modelli personalizzati che soddisfano i requisiti di compatibilità dei modelli.
Esegui l'inferenza in Java
Passaggio 1: importa la dipendenza Gradle e altre impostazioni
Copia il file del modello .tflite nella directory degli asset del modulo Android
in cui verrà eseguito il modello. Specifica che il file non deve essere compresso e
aggiungi la libreria TensorFlow Lite al file build.gradle del modulo:
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'
}
Passaggio 2: esegui l'inferenza utilizzando l'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);
Per ulteriori dettagli, consulta il codice sorgente.
Esegui l'inferenza in Swift
Passaggio 1: importa CocoaPods
Aggiungi il pod TensorFlowLiteTaskText in Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Passaggio 2: esegui l'inferenza utilizzando l'API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Per ulteriori dettagli, consulta il codice sorgente.
Esegui l'inferenza in 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);
Per ulteriori dettagli, consulta il codice sorgente.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto pip
pip install tflite-support
Passaggio 2: utilizza il modello
# 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)
Consulta il codice
sorgente
per altre opzioni di configurazione di BertQuestionAnswerer.
Risultati di esempio
Ecco un esempio dei risultati della risposta del modello ALBERT.
Contesto: "La foresta pluviale amazzonica, in alternativa, la giungla amazzonica, nota anche in inglese come Amazzonia, è una foresta pluviale tropicale umida a latifoglie nel bioma amazzonico che copre la maggior parte del bacino amazzonico del Sud America. Questo bacino comprende 7.000.000 km2 (2.700.000 miglia quadrate), di cui 5.500.000 km2 (2.100.000 miglia quadrate) sono coperti dalla foresta pluviale. Questa regione include territori appartenenti a nove nazioni".
Domanda: "Dove si trova la foresta amazzonica?"
Risposte:
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
Prova il semplice strumento demo CLI per BertQuestionAnswerer con il tuo modello e i tuoi dati di test.
Requisiti di compatibilità del modello
L'API BertQuestionAnswerer prevede un modello TFLite con metadati del modello
TFLite obbligatori.
I metadati devono soddisfare i seguenti requisiti:
input_process_unitsper il tokenizzatore Wordpiece/Sentencepiece3 tensori di input con i nomi "ids", "mask" e "segment_ids" per l'output del tokenizer
2 tensori di output con i nomi "end_logits" e "start_logits" per indicare la posizione relativa della risposta nel contesto