A API Task Library BertQuestionAnswerer carrega um modelo Bert e responde a perguntas com base no conteúdo de um trecho específico. Para mais informações, consulte o
exemplo do modelo de
pergunta-resposta.
Principais recursos da API BertQuestionAnswerer
Recebe duas entradas de texto como pergunta e contexto e gera uma lista de possíveis respostas.
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 TensorFlow Lite Model Maker para resposta a perguntas com o BERT.
Modelos personalizados que atendem aos requisitos de compatibilidade de 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 de recursos do módulo Android
em que 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
implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}
Etapa 2: executar 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 mais detalhes.
Executar inferência em Swift
Etapa 1: importar o CocoaPods
Adicione o pod TensorFlowLiteTaskText ao Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Etapa 2: executar 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 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 mais detalhes.
Executar inferência em Python
Etapa 1: instalar o pacote pip
pip install tflite-support
Etapa 2: usar 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 mais opções de configuração do BertQuestionAnswerer.
Resultados de exemplo
Confira um exemplo dos resultados da resposta do modelo ALBERT.
Contexto: "A floresta tropical da Amazônia, também chamada de selva amazônica ou Amazônia, é uma floresta tropical de folhas amplas úmidas no bioma da Amazônia que cobre a maior parte da bacia amazônica da América do Sul. Esta bacia abrange 7.000.000 km2, dos quais 5.500.000 km2 são cobertos pela floresta tropical. Esta região inclui território que pertence a nove países".
Pergunta: "Onde fica 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
Teste a ferramenta simples de demonstração da CLI para BertQuestionAnswerer com seu próprio modelo e dados de teste.
Requisitos de compatibilidade de modelo
A API BertQuestionAnswerer espera um modelo do TFLite com metadados obrigatórios do modelo do TFLite.
Os metadados precisam atender aos seguintes requisitos:
input_process_unitspara tokenizador Wordpiece/SentencepieceTrês tensores de entrada com os nomes "ids", "mask" e "segment_ids" para a saída do tokenizer
2 tensores de saída com os nomes "end_logits" e "start_logits" para indicar a posição relativa da resposta no contexto