L'API BertQuestionAnswerer
de la bibliothèque de tâches charge un modèle BERT et répond
sur le contenu d'un passage donné. Pour en savoir plus, consultez les
exemple pour le modèle questions-réponses.
Principales fonctionnalités de l'API BERTQuestionAnswerer
Prend deux entrées textuelles comme question et contexte, et génère une liste de réponses possibles réponses.
Effectue des tokenisations hors graphique dans l'outil Fragmentation Word ou le segment des phrases lors de la saisie du texte.
Modèles BERTQuestionAnswerer compatibles
Les modèles suivants sont compatibles avec l'API BertNLClassifier
.
Modèles créés par TensorFlow Lite Model Maker for BERT Question-Answer
Les modèles personnalisés qui répondent aux exigences de compatibilité des modèles.
Exécuter une inférence en Java
Étape 1: Importez la dépendance Gradle et d'autres paramètres
Copiez le fichier de modèle .tflite
dans le répertoire d'éléments du module Android.
où le modèle sera exécuté. Spécifier que le fichier ne doit pas être compressé
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);
Consultez le code source pour en savoir plus.
Exécuter une inférence en Swift
Étape 1: Importez des 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)
Consultez le code source pour en savoir plus.
Exécuter une 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);
Consultez le code source pour en savoir plus.
Exécuter une 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)
Consultez le
code source
pour afficher d'autres options de configuration de BertQuestionAnswerer
.
Exemples de résultats
Voici un exemple des résultats de réponse de Modèle ALBERT.
Contexte : "La forêt amazonienne, ou la jungle amazonienne, également connue Il s'agit d'une forêt tropicale humide à feuilles de feuillage amazonienne, dont Amazonia, biome qui recouvre la majeure partie du bassin amazonien en Amérique du Sud. Ce bassin couvre une surface de 7 000 000 km2, dont 2 700 000 km2 La forêt tropicale couvre 5 500 000 km2. Cette région inclut un territoire 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 la méthode la plus simple Outil de démonstration de la CLI 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 du modèle TFLite.
Les métadonnées doivent répondre aux exigences suivantes:
input_process_units
pour l'outil de tokenisation des mots-clés et des phrases3 Tensors d'entrée nommés "ids", "mask" et "segment_ids" pour la sortie de la fonction de tokenisation
2 Tensors de sortie nommés "end_logits" et "start_logits" pour indiquer position relative de cette réponse dans le contexte