A API BertQuestionAnswerer
da Biblioteca de Tarefas carrega um modelo Bert e responde a perguntas com base no conteúdo de uma determinada passagem. Para obter mais informações, consulte a documentação do modelo Pergunta-Resposta aqui .
Principais recursos da API BertQuestionAnswerer
Recebe duas entradas de texto como pergunta e contexto e gera uma lista de respostas possíveis.
Executa tokenizações Wordpiece ou Sentencepiece fora do gráfico no texto de entrada.
Modelos BertQuestionAnswerer compatíveis
Os modelos a seguir são compatíveis com a API BertNLClassifier
.
Modelos criados pelo Model Maker do TensorFlow Lite para BERT Question Answer .
Modelos personalizados que atendem aos requisitos de compatibilidade do modelo .
Executar inferência em Java
Etapa 1: importar a dependência do Gradle e outras configurações
Copie o arquivo de modelo .tflite
para o diretório assets do módulo Android onde o modelo será executado. Especifique que o arquivo não deve ser compactado e adicione a biblioteca do TensorFlow Lite ao arquivo build.gradle
do 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 (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}
Etapa 2: execute a inferência usando a 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);
Consulte o código-fonte para obter mais detalhes.
Executar inferência no Swift
Etapa 1: importar CocoaPods
Adicionar o pod TensorFlowLiteTaskText no Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Etapa 2: execute a inferência usando a API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Consulte o código-fonte para obter mais detalhes.
Executar inferência em 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);
Consulte o código-fonte para obter mais detalhes.
Executar inferência em Python
Etapa 1: Instale o pacote pip
pip install tflite-support
Etapa 2: usando o 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)
Consulte o código-fonte para obter mais opções para configurar BertQuestionAnswerer
.
Resultados de exemplo
Aqui está um exemplo dos resultados de resposta do modelo ALBERT .
Contexto: "A floresta amazônica, alternativamente, a selva amazônica, também conhecida em inglês como Amazônia, é uma floresta tropical úmida de folhas largas no bioma amazônico que cobre a maior parte da bacia amazônica da América do Sul. Esta bacia abrange 7.000.000 km2 (2.700.000 sq mi ), dos quais 5.500.000 km2 (2.100.000 sq mi) são cobertos pela floresta tropical. Esta região inclui território pertencente a nove nações."
Pergunta: "Onde está a floresta amazônica?"
Respostas:
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
Experimente a ferramenta de demonstração CLI simples para BertQuestionAnswerer com seu próprio modelo e dados de teste.
Requisitos de compatibilidade do modelo
A API BertQuestionAnswerer
espera um modelo TFLite com metadados de modelo TFLite obrigatórios.
Os Metadados devem atender aos seguintes requisitos:
input_process_units
para Wordpiece/Sentencepiece Tokenizer3 tensores de entrada com nomes "ids", "mask" e "segment_ids" para a saída do tokenizer
2 tensores de saída com nomes "end_logits" e "start_logits" para indicar a posição relativa da resposta no contexto