L'API della libreria di attività BertQuestionAnswerer
carica un modello BERT e le risposte
domande basate sul contenuto di un determinato passaggio. Per ulteriori informazioni, consulta
per il modello domanda-risposta.
Funzionalità principali dell'API BertQuestionAnswerer
Prende due input di testo come domanda e contesto e restituisce un elenco di possibili risposte.
Esegue la tokenizzazione di testi o frasi fuori grafico all’input testo.
Modelli BERTQuestionAnswerer supportati
I seguenti modelli sono compatibili con l'API BertNLClassifier
.
Modelli creati da Model Maker di TensorFlow Lite per la risposta alle domande di BERT.
Modelli personalizzati che soddisfano requisiti di compatibilità dei modelli.
Esegui l'inferenza in Java
Passaggio 1: importa la dipendenza da Gradle e altre impostazioni
Copia il file del modello .tflite
nella directory degli asset del modulo per Android
in cui verrà eseguito il modello. Specifica che il file non deve essere compresso.
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);
Consulta le codice sorgente per ulteriori dettagli.
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)
Consulta le codice sorgente per ulteriori dettagli.
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);
Consulta le codice sorgente per ulteriori dettagli.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto pip
pip install tflite-support
Passaggio 2: utilizzo del 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 le
codice sorgente
per altre opzioni di configurazione di BertQuestionAnswerer
.
Risultati di esempio
Ecco un esempio dei risultati della risposta Modello ALBERT.
Contesto: "La foresta pluviale amazzonica, in alternativa, la giungla amazzonica, nota anche nella L'inglese come Amazonia è una foresta pluviale tropicale a foglia umida dell'Amazzonia bioma che copre la maggior parte del bacino dell'Amazzonia del Sud America. Questo bacino comprende 7.000.000 km2 (2.700.000 sq mi), di cui 5.500.000 km2 (2.100.000 sq mi) sono coperti dalla foresta pluviale. Questa regione include un territorio appartenente a nove nazioni".
Domanda: "Dov'è la foresta pluviale 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 la semplice Strumento dimostrativo dell'interfaccia a riga di comando per BertQuestionAnswerer con il tuo modello e dati di test.
Requisiti di compatibilità del modello
L'API BertQuestionAnswerer
prevede un modello TFLite con requisiti obbligatori
Metadati del modello TFLite.
I metadati devono soddisfare i seguenti requisiti:
input_process_units
per il tokenizzatore di testi/sottoposti a frase3 tensori di input con i nomi "ids", "mask" e "segment_id" per l'output il tokenizzatore
2 tensori di output con i nomi "end_logits" e "start_logits" per indicare la posizione relativa della risposta nel contesto