A API BertQuestionAnswerer
da Biblioteca de Tarefas carrega um modelo Bert e responde 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 de Wordpiece ou Sentencepiece fora do gráfico no texto de entrada.
Modelos BertQuestionAnswerer suportados
Os modelos a seguir são compatíveis com a API BertNLClassifier
.
Modelos criados pelo TensorFlow Lite Model Maker para BERT Question Answer .
Modelos personalizados que atendem aos requisitos de compatibilidade de modelos .
Execute inferência em Java
Etapa 1: importar dependência do Gradle e outras configurações
Copie o arquivo do modelo .tflite
para o diretório de ativos do módulo Android onde o modelo será executado. Especifique que o arquivo não deve ser compactado e adicione a biblioteca 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: executar 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);
Veja o código fonte para mais detalhes.
Execute inferência em Swift
Etapa 1: importar CocoaPods
Adicione o pod TensorFlowLiteTaskText no Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Etapa 2: executar inferência usando a API
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Veja o código fonte para mais detalhes.
Execute 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);
Veja o código fonte para mais detalhes.
Execute 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 de configuração BertQuestionAnswerer
.
Resultados de exemplo
Aqui está um exemplo dos resultados da 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 folha larga 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 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
Experimente a ferramenta de demonstração CLI simples para BertQuestionAnswerer com seu próprio modelo e dados de teste.
Requisitos de compatibilidade de 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 tokenizador de peça de palavra/frase3 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