Integrasikan penjawab pertanyaan BERT

Task Library BertQuestionAnswerer API memuat model Bert dan menjawab pertanyaan berdasarkan konten bagian tertentu. Untuk informasi lebih lanjut, lihat dokumentasi model Tanya-Jawab di sini .

Fitur utama API BertQuestionAnswerer

  • Mengambil dua masukan teks sebagai pertanyaan dan konteks dan mengeluarkan daftar kemungkinan jawaban.

  • Melakukan tokenisasi Wordpiece atau Kalimat di luar grafik pada teks masukan.

Model BertQuestionAnswerer yang didukung

Model berikut ini kompatibel dengan BertNLClassifier API.

Jalankan inferensi di Java

Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya

Salin file model .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tersebut tidak boleh dikompresi, dan tambahkan pustaka 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 (NNAPI is included)
    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 lebih jelasnya.

Jalankan inferensi di Swift

Langkah 1: Impor CocoaPods

Tambahkan 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 lebih jelasnya.

Jalankan 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 lebih jelasnya.

Jalankan inferensi dengan 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 untuk opsi lebih lanjut untuk mengonfigurasi BertQuestionAnswerer .

Contoh hasil

Berikut contoh hasil jawaban model ALBERT .

Konteks: "Hutan hujan Amazon, sebagai alternatif, Hutan Amazon, juga dikenal dalam bahasa Inggris sebagai Amazonia, adalah hutan hujan tropis berdaun lebar yang lembab di bioma Amazon yang mencakup sebagian besar cekungan Amazon di Amerika Selatan. Cekungan ini meliputi wilayah seluas 7.000.000 km2 (2.700.000 mil persegi) ), dimana 5.500.000 km2 (2.100.000 sq mi) ditutupi oleh hutan hujan. Wilayah ini mencakup wilayah milik sembilan negara."

Pertanyaan: Di manakah letak 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 alat demo CLI sederhana untuk BertQuestionAnswerer dengan model dan data pengujian Anda sendiri.

Persyaratan kompatibilitas model

BertQuestionAnswerer API mengharapkan model TFLite dengan Metadata Model TFLite wajib.

Metadata harus memenuhi persyaratan berikut:

  • input_process_units untuk Tokenizer Bagian Kata/Kalimat

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

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