Las tareas de la Biblioteca BertQuestionAnswerer
cargas API un modelo y respuestas Bert preguntas basadas en el contenido de un pasaje dado. Para obtener más información, consulte la documentación para el modelo de preguntas y respuestas aquí .
Funciones clave de la API 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 BertNLClassifier
API.
Los modelos creados por TensorFlow Lite Model Maker para BERT Pregunta Respuesta .
Modelos personalizados que cumplan con los requisitos de compatibilidad modelo .
Ejecutar inferencia en Java
Paso 1: importar la dependencia de Gradle y otras configuraciones
Copiar el .tflite
archivo del modelo para el directorio activo del módulo de Android en la que se ejecuta el modelo. Especifica que el archivo no se debe comprimir, y añadir la biblioteca TensorFlow Lite para el módulo de build.gradle
archivo:
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.3.0'
}
Paso 2: ejecutar inferencia usando 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);
Ver el código fuente para más detalles.
Ejecutar inferencia en Swift
Paso 1: Importar CocoaPods
Agregue el pod TensorFlowLiteTaskText en Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
end
Paso 2: ejecutar inferencia usando la API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Ver el código fuente para más detalles.
Ejecutar inferencia en C ++
// Initialization
BertQuestionAnswererOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<BertQuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();
// Run inference
std::vector<QaAnswer> positive_results = answerer->Answer(context_of_question, question_to_ask);
Ver el código fuente para más detalles.
Resultados de ejemplo
He aquí un ejemplo de los resultados de respuesta del modelo de ALBERT .
Contexto: "La selva amazónica, alternativamente, la selva amazónica, también conocida en inglés como Amazonia, es una selva tropical húmeda de hoja ancha en el bioma amazónico que cubre la mayor parte de la cuenca del Amazonas de América del Sur. Esta cuenca abarca 7.000.000 km2 (2.700.000 millas cuadradas ), de los cuales 5.500.000 km2 (2.100.000 millas cuadradas) están cubiertos por la selva tropical. Esta región incluye territorios pertenecientes 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
Pruebe la sencilla herramienta de demostración CLI para BertQuestionAnswerer con sus propios datos del modelo y de prueba.
Requisitos de compatibilidad del modelo
El BertQuestionAnswerer
API espera un modelo con TFLite obligatoria TFLite modelo de metadatos .
Los metadatos deben cumplir los siguientes requisitos:
input_process_units
para Wordpiece / Sentencepiece Tokenizer3 tensores de entrada con los nombres "ids", "máscara" y "segmento_id" para la salida 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