La API de la Biblioteca de tareas BertQuestionAnswerer carga un modelo de BERT y responde preguntas según el contenido de un pasaje determinado. Para obtener más información, consulta el ejemplo del modelo de preguntas y respuestas.
Funciones clave de la API de BertQuestionAnswerer
Toma dos entradas de texto como pregunta y contexto, y genera una lista de posibles respuestas.
Realiza tokenizaciones de Wordpiece o Sentencepiece fuera del gráfico en el texto de entrada.
Modelos de BertQuestionAnswerer compatibles
Los siguientes modelos son compatibles con la API de BertNLClassifier.
Modelos creados por TensorFlow Lite Model Maker para BERT Question Answer.
Modelos personalizados que cumplen con los requisitos de compatibilidad del modelo.
Ejecuta la inferencia en Java
Paso 1: Importa la dependencia de Gradle y otros parámetros de configuración
Copia el archivo del modelo .tflite en el directorio de recursos del módulo de Android en el que se ejecutará el modelo. Especifica que el archivo no se debe comprimir y agrega la biblioteca de TensorFlow Lite al archivo build.gradle del módulo:
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'
}
Paso 2: Ejecuta la inferencia con la 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 el código fuente para obtener más detalles.
Ejecuta la inferencia en Swift
Paso 1: Importa CocoaPods
Agrega el pod de TensorFlowLiteTaskText en Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Paso 2: Ejecuta la inferencia con la API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Consulta el código fuente para obtener más detalles.
Ejecuta la inferencia 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);
Consulta el código fuente para obtener más detalles.
Ejecuta la inferencia en Python
Paso 1: Instala el paquete pip
pip install tflite-support
Paso 2: Cómo usar el modelo
# 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 el código fuente para obtener más opciones para configurar BertQuestionAnswerer.
Resultados de ejemplo
Este es un ejemplo de los resultados de la respuesta del modelo de ALBERT.
Contexto: "La selva amazónica, también conocida como Amazonia, es una selva tropical húmeda de hoja ancha en el bioma amazónico que abarca la mayor parte de la cuenca del Amazonas de América del Sur. Esta cuenca abarca 7,000,000 km² (2,700,000 mi²), de los cuales 5,500,000 km² (2,100,000 mi²) están cubiertos por la selva tropical. Esta región incluye territorio perteneciente a nueve naciones".
Pregunta: "¿Dónde está la selva amazónica?"
Respuestas:
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
Prueba la sencilla herramienta de demostración de la CLI para BertQuestionAnswerer con tu propio modelo y datos de prueba.
Requisitos de compatibilidad del modelo
La API de BertQuestionAnswerer espera un modelo de TFLite con metadatos del modelo de TFLite obligatorios.
Los metadatos deben cumplir con los siguientes requisitos:
input_process_unitspara el tokenizador de Wordpiece/Sentencepiece3 tensores de entrada con los nombres "ids", "mask" y "segment_ids" para el resultado del tokenizador
2 tensores de salida con los nombres "end_logits" y "start_logits" para indicar la posición relativa de la respuesta en el contexto