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

Görev Kitaplığı BertQuestionAnswerer API'si, Bert modeli yükler ve yanıtları yükler içeriği temel alan sorular belirleyebilirsiniz. Daha fazla bilgi için Soru-Cevap modeli için bir örnek teşkil eder.

BertQuestionAnswerer API'nin temel özellikleri

  • Soru ve bağlam olarak iki metin girişi alır ve mümkün olanların bir listesini çıkarır cevaplar.

  • Girişte grafik dışı Wordparça veya Cümle parçası tokenizasyonları gerçekleştirir metin.

Desteklenen BertQuestionAnswerer modelleri

Aşağıdaki modeller BertNLClassifier API ile 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ı Android modülünün öğe dizinine kopyalayın nerede çalıştırılacağı. Dosyanın sıkıştırılmaması gerektiğini belirtin ve modülün build.gradle dosyasına TensorFlow Lite kitaplığını 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);

Bkz. kaynak kod inceleyebilirsiniz.

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

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

Podfile'a TensorFlowLiteTaskText kapsülünü ekleme

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)

Bkz. kaynak kod inceleyebilirsiniz.

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

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

Bkz. kaynak kod inceleyebilirsiniz.

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)

Bkz. kaynak kod daha fazla BertQuestionAnswerer yapılandırma seçeneğine gidin.

Örnek sonuçlar

Bu soruya verilen cevapların bir örneğini ALBERT modeli.

Bağlam: "Amazon yağmur ormanları, alternatif olarak Amazon'da da bilinen Amazon kadar İngilizce, Amazon'da yer alan nemli geniş yapraklı tropik yağmur ormanıdır Güney Amerika'nın Amazon havzasının büyük kısmını kaplayan canlı bir bitki türü. Bu havza 7.000.000 km2 (2.700.000 milkare) boyunca 5.500.000 km2 (2.100.000 kilometrekare) yağmur ormanlarıyla kaplıdır. Bu bölge dokuz ulusa ait toprakları kapsar."

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

Nasıl yapıldığını BertQuestionAnswerer için KSA demo aracı kullanarak test edebilirsiniz.

Model uyumluluğu şartları

BertQuestionAnswerer API, kullanımı zorunlu olan bir TFLite modeli bekler TFLite Model Meta Verileri.

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

  • Wordparça/Sentence Parti Tokenizer için input_process_units

  • "ids", "mask" adlı 3 giriş tensörü ve "segment_ids" şunun çıktısı için: belirteç oluşturucu

  • "end_logits" adlı 2 çıkış tensörü ve "start_logits" belirtmek için cevabın bağlamdaki göreli konumu