A API Task Library BertQuestionAnswerer
carrega um modelo Bert e responde.
perguntas com base no conteúdo de um trecho específico. Para mais informações, consulte a
exemplo para o modelo pergunta-resposta.
Principais recursos da API BertQuestionAnswerer
Ela usa duas entradas de texto como pergunta e contexto e gera uma lista de possíveis respostas
Executa tokenizações do Word Word ou Frases fora do gráfico na entrada em textos.
Modelos BertQuestionAnswerer compatíveis
Os modelos a seguir são compatíveis com a API BertNLClassifier
.
Modelos criados pela TensorFlow Lite Model Maker para a resposta a perguntas com o BERT.
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 modelo .tflite
para o diretório de assets do módulo Android.
em que o modelo será executado. Especifique que o arquivo não deve ser compactado.
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 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 a código-fonte para mais detalhes.
Executar inferência no Swift
Etapa 1: importar o CocoaPods
Adicionar o pod do TensorFlowLiteTaskText ao 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)
Consulte a 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 a código-fonte para mais detalhes.
Executar inferência em Python
Etapa 1: instalar o pacote pip
pip install tflite-support
Etapa 2: uso do 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 a
código-fonte
para mais opções de configuração do BertQuestionAnswerer
.
Resultados de exemplo
Aqui está um exemplo dos resultados da resposta Modelo ALBERT.
Contexto: "A floresta amazônica, alternativamente, a Selva Amazônica, também conhecida em "Amazônia", em inglês, é uma floresta tropical úmida de folha ampla da Amazônia bioma que cobre a maior parte da bacia Amazônica da América do Sul. Esta bacia abrange 7.000.000 km2 (2.700.000 milhas quadradas), dos quais 5.500.000 km2 (2.100.000 km2) 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
Teste a funcionalidade Ferramenta de demonstração da CLI para BertQuestionAnswerer com seu próprio modelo e dados de teste.
Requisitos de compatibilidade do modelo
A API BertQuestionAnswerer
espera um modelo TFLite com valores obrigatórios
Metadados de modelo do TFLite.
Os metadados devem atender aos seguintes requisitos:
input_process_units
para tokenizador do Wordnote/Sentencenote3 tensores de entrada com os nomes "ids", "mask" e "segment_ids" para a saída de o tokenizador
2 tensores de saída com o nome "end_logits" e "start_logits" para indicar a posição relativa da resposta no contexto