Mengintegrasikan penjawab pertanyaan BERT

Task Library BertQuestionAnswerer API memuat model BERT dan jawaban pertanyaan berdasarkan isi bacaan yang diberikan. Untuk informasi selengkapnya, lihat contoh untuk model Question-Answer.

Fitur utama BertQuestionAnswerer API

  • Menggunakan dua input teks sebagai pertanyaan dan konteks serta menghasilkan daftar kemungkinan jawaban yang tepat.

  • Melakukan tokenisasi Kata atau Kalimat yang tidak grafik pada input teks.

Model BertQuestionAnswerer yang didukung

Model berikut kompatibel dengan BertNLClassifier API.

Menjalankan inferensi di Java

Langkah 1: Impor dependensi Gradle dan setelan lainnya

Salin file model .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tidak boleh dikompresi, dan tambahkan library TensorFlow Lite ke file build.gradle modul:

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'
}

Langkah 2: Jalankan inferensi menggunakan 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);

Lihat kode sumber untuk mengetahui detail selengkapnya.

Menjalankan inferensi di Swift

Langkah 1: Impor CocoaPods

Menambahkan pod TensorFlowLiteTaskText di Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end

Langkah 2: Jalankan inferensi menggunakan API

// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
      modelPath: mobileBertModelPath)

// Run inference
let answers = mobileBertAnswerer.answer(
      context: context, question: question)

Lihat kode sumber untuk mengetahui detail selengkapnya.

Menjalankan inferensi di 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);

Lihat kode sumber untuk mengetahui detail selengkapnya.

Menjalankan inferensi di Python

Langkah 1: Instal paket pip

pip install tflite-support

Langkah 2: Menggunakan model

# 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)

Lihat kode sumber guna mendapatkan opsi selengkapnya untuk mengonfigurasi BertQuestionAnswerer.

Hasil contoh

Berikut adalah contoh hasil jawaban dari Model ALBERT.

Konteks: "Hutan Amazon, alternatifnya, Amazon Jungle, juga dikenal di Bahasa Inggris seperti Amazonia, adalah hutan hujan tropis berdaun lebar yang lembap di Amazon bioma yang mencakup sebagian besar cekungan Amazon di Amerika Selatan. Basin ini mencakup 7.000.000 km2 (2.700.000 mil persegi), yang mana 5.500.000 km2 (2.100.000 sq mi) ditutupi oleh hutan hujan ini. Wilayah ini termasuk wilayah milik sembilan negara."

Pertanyaan: "Di mana hutan hujan Amazon?"

Jawaban:

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

Cobalah yang Alat demo CLI untuk BertQuestionAnswerer dengan model dan data uji Anda sendiri.

Persyaratan kompatibilitas model

BertQuestionAnswerer API mengharapkan model TFLite dengan Metadata Model TFLite.

Metadata harus memenuhi persyaratan berikut:

  • input_process_units untuk WordPotongan/SentencePotongan Tokenizer

  • 3 tensor input dengan nama "ids", "mask" dan "segment_ids" untuk output tokenizer

  • 2 tensor output dengan nama "end_logits" dan "start_logits" untuk menunjukkan posisi relatif untuk jawaban dalam konteks