La API de BertQuestionAnswerer
de la Biblioteca de tareas carga un modelo BERT y respuestas
preguntas basadas en el contenido de un pasaje determinado. Para obtener más información, consulta la
ejemplo del modelo de pregunta y respuesta.
Funciones clave de la API de BertQuestionAnswerer
Toma dos entradas de texto como pregunta y contexto y genera una lista de posibles respuestas.
Realiza asignaciones de tokens de palabras o oraciones fuera del gráfico en la entrada texto.
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
Los modelos personalizados que cumplen con los requisitos de compatibilidad del modelo.
Ejecuta inferencias en Java
Paso 1: Importa la dependencia de Gradle y otros parámetros de configuración
Copia el archivo de modelo .tflite
en el directorio de recursos del módulo de Android.
en la que se ejecutará el modelo. Especificar que el archivo no debe comprimirse
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 la código fuente para obtener más información.
Ejecuta la inferencia en Swift
Paso 1: Importa CocoaPods
Agrega el pod de TensorFlowLiteTaskText en el 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 la código fuente para obtener más información.
Ejecuta inferencias 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 la código fuente para obtener más información.
Ejecuta la inferencia en Python
Paso 1: Instala el paquete pip
pip install tflite-support
Paso 2: Usa 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 la
código fuente
si quieres obtener más opciones para configurar BertQuestionAnswerer
.
Resultados de ejemplo
Este es un ejemplo de los resultados de la respuesta de Modelo ALBERT.
Contexto: "La selva amazónica, por otro lado, la selva amazónica, también conocida en Inglés como Amazonia, es una selva tropical húmeda de hoja ancha en el Amazonas. que abarca la mayor parte de la cuenca del Amazonas en Sudamérica. Esta cuenca abarca 7,000,000 km2 (2,700,000 mi2), de los cuales La selva tropical abarca 5,500,000 km2 (2,100,000 mi 2). Esta región incluye territorio que pertenece 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 lo sencillo 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 TFLite con
Metadatos del modelo de TFLite.
Los metadatos deben cumplir con los siguientes requisitos:
input_process_units
para el tokenizador de piezas de palabra o oraciones3 tensores de entrada con nombres “ids” y “mask” y "segment_ids" para la salida de el tokenizador
2 tensores de salida con nombres “end_logits” y "start_logits" para indicar la la posición relativa de la respuesta en el contexto