L'API Task Library BertQuestionAnswerer charge un modèle Bert et répond aux questions en fonction du contenu d'un passage donné. Pour en savoir plus, consultez l'exemple du modèle Question-Réponse.
Principales fonctionnalités de l'API BertQuestionAnswerer
Prend deux entrées de texte comme question et contexte, et génère une liste de réponses possibles.
Effectue des tokenisations Wordpiece ou Sentencepiece hors graphique sur le texte d'entrée.
Modèles BertQuestionAnswerer compatibles
Les modèles suivants sont compatibles avec l'API BertNLClassifier.
Modèles créés par TensorFlow Lite Model Maker pour répondre à une question avec BERT.
Des modèles personnalisés qui répondent aux exigences de compatibilité des modèles.
Exécuter une inférence en Java
Étape 1 : Importer la dépendance Gradle et d'autres paramètres
Copiez le fichier de modèle .tflite dans le répertoire des éléments du module Android dans lequel le modèle sera exécuté. Spécifiez que le fichier ne doit pas être compressé et ajoutez la bibliothèque TensorFlow Lite au fichier build.gradle du module :
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'
}
Étape 2 : Exécutez l'inférence à l'aide de 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);
Pour en savoir plus, consultez le code source.
Exécuter l'inférence en Swift
Étape 1 : Importer CocoaPods
Ajouter le pod TensorFlowLiteTaskText dans le fichier Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Étape 2 : Exécutez l'inférence à l'aide de l'API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Pour en savoir plus, consultez le code source.
Exécuter l'inférence en 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);
Pour en savoir plus, consultez le code source.
Exécuter l'inférence en Python
Étape 1 : Installez le package pip
pip install tflite-support
Étape 2 : Utiliser le modèle
# 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)
Pour découvrir d'autres options de configuration de BertQuestionAnswerer, consultez le code source.
Exemples de résultats
Voici un exemple de résultats de réponse du modèle ALBERT.
Contexte : "La forêt amazonienne, également appelée jungle amazonienne ou Amazonia, est une forêt tropicale humide à feuilles larges du biome amazonien qui couvre la majeure partie du bassin de l'Amazone en Amérique du Sud. Ce bassin occupe 7 000 000 km2, dont 5 500 000 km2 recouverts par la forêt tropicale. Cette région comprend des territoires appartenant à neuf nations."
Question : "Où se trouve la forêt amazonienne ?"
Réponses :
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
Essayez l'outil de démonstration simple de l'interface de ligne de commande pour BertQuestionAnswerer avec votre propre modèle et vos propres données de test.
Exigences de compatibilité des modèles
L'API BertQuestionAnswerer attend un modèle TFLite avec des métadonnées de modèle TFLite obligatoires.
Les métadonnées doivent répondre aux exigences suivantes :
input_process_unitspour le tokenizer Wordpiece/Sentencepiece3 Tensors d'entrée avec les noms "ids", "mask" et "segment_ids" pour la sortie du tokenizer
Deux Tensors de sortie nommés "end_logits" et "start_logits" pour indiquer la position relative de la réponse dans le contexte