L'API de la bibliothèque de tâches BertQuestionAnswerer
charge un modèle Bert et répond aux questions en fonction du contenu d'un passage donné. Pour plus d'informations, consultez la documentation du modèle Question-Réponse ici .
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 pris en charge
Les modèles suivants sont compatibles avec l'API BertNLClassifier
.
Modèles créés par TensorFlow Lite Model Maker pour BERT Question Answer .
Modèles personnalisés qui répondent aux exigences de compatibilité des modèles .
Exécuter l'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 assets du module Android où 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 (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}
Étape 2 : Exécuter 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);
Voir le code source pour plus de détails.
Exécuter l'inférence dans Swift
Étape 1 : Importer des CocoaPods
Ajouter le pod TensorFlowLiteTaskText dans Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Étape 2 : Exécuter 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)
Voir le code source pour plus de détails.
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);
Voir le code source pour plus de détails.
Exécuter l'inférence en Python
Étape 1 : Installez le package pip
pip install tflite-support
Étape 2 : Utilisation du 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)
Voir le code source pour plus d'options pour configurer BertQuestionAnswerer
.
Exemples de résultats
Voici un exemple des résultats de réponse du modèle ALBERT .
Contexte : "La forêt amazonienne, alternativement, la jungle amazonienne, également connue en anglais sous le nom d'Amazonie, est une forêt tropicale humide à feuilles larges dans le biome amazonien qui couvre la majeure partie du bassin amazonien d'Amérique du Sud. Ce bassin couvre 7 000 000 km2 (2 700 000 milles carrés ), dont 5 500 000 km2 (2 100 000 milles carrés) sont couverts par la forêt tropicale. Cette région comprend un territoire appartenant à neuf nations.
Question : "Où est 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 CLI simple pour BertQuestionAnswerer avec votre propre modèle et vos 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_units
pour Wordpiece/Sentencepiece Tokenizer3 tenseurs d'entrée avec les noms "ids", "mask" et "segment_ids" pour la sortie du tokenizer
2 tenseurs de sortie avec les noms "end_logits" et "start_logits" pour indiquer la position relative de la réponse dans le contexte