BERT soru cevaplayıcısını entegre et

Görev Kitaplığı BertQuestionAnswerer API'si bir Bert modeli yükler ve belirli bir pasajın içeriğine göre soruları yanıtlar. Daha fazla bilgi için Soru-Cevap modeli örneğine bakın.

BertQuestionAnswerer API'nin temel özellikleri

  • Soru ve bağlam olarak iki metin girişi alır ve olası yanıtların listesini verir.

  • Giriş metninde grafik dışı Wordpiece veya Sentencepiece belirteçleştirme işlemleri gerçekleştirir.

Desteklenen BertQuestionAnswerer modelleri

Aşağıdaki modeller BertNLClassifier API'siyle uyumludur.

Java'da çıkarım çalıştırma

1. adım: Gradle bağımlılığını ve diğer ayarları içe aktarın

.tflite model dosyasını, modelin çalıştırılacağı Android modülünün öğeler dizinine kopyalayın. Dosyanın sıkıştırılmaması gerektiğini belirtin ve TensorFlow Lite kitaplığını modülün build.gradle dosyasına ekleyin:

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

2. adım: API'yi kullanarak çıkarım çalıştırma

// 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);

Daha fazla bilgi için kaynak koduna bakın.

Swift'te çıkarım çalıştırma

1. adım: CocoaPods'u içe aktarın

Podfile'a TensorFlowLiteTaskText kapsülünü ekleyin.

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

2. adım: API'yi kullanarak çıkarım çalıştırma

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

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

Daha fazla bilgi için kaynak koduna bakın.

C++'ta çıkarım çalıştırma

// 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);

Daha fazla bilgi için kaynak koduna bakın.

Python'da çıkarım çalıştırma

1. adım: pip paketini yükleyin

pip install tflite-support

2. adım: Modeli kullanma

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

BertQuestionAnswerer yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.

Örnek sonuçlar

ALBERT model'in cevap sonuçlarına dair bir örneği aşağıda bulabilirsiniz.

Bağlam: "Amazon yağmur ormanı, diğer adıyla Amazon ormanı, İngilizcede Amazonia olarak da bilinir. Amazon biyomunda yer alan bu nemli, geniş yapraklı tropikal yağmur ormanı, Güney Amerika'daki Amazon havzasının büyük bir bölümünü kaplar. Bu havza 7.000.000 km2 (2.700.000 sq mi) alanı kapsar ve bu alanın 5.500.000 km2 (2.100.000 sq mi) bölümü yağmur ormanlarıyla kaplıdır. Bu bölge, dokuz ülkeye ait toprakları kapsıyor."

Soru: "Amazon yağmur ormanı nerede?"

Yanıtlar:

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

Kendi modeliniz ve test verilerinizle basit BertQuestionAnswerer için CLI demo aracını deneyin.

Model uyumluluğu koşulları

BertQuestionAnswerer API, zorunlu TFLite Model Meta Verileri içeren bir TFLite modeli bekler.

Meta veriler aşağıdaki koşulları karşılamalıdır:

  • input_process_units Wordpiece/Sentencepiece Tokenizer için

  • Çıkış için "ids", "mask" ve "segment_ids" adlı 3 giriş tensörü

  • Bağlamdaki yanıtın göreceli konumunu belirtmek için "end_logits" ve "start_logits" adlı 2 çıkış tensörü