Görev Kitaplığı BertQuestionAnswerer
API, bir Bert modeli yükler ve belirli bir pasajın içeriğine göre soruları yanıtlar. Daha fazla bilgi için, buradaki Soru-Cevap modelinin belgelerine bakın .
BertQuestionAnswerer API'sinin temel özellikleri
Soru ve bağlam olarak iki metin girişi alır ve olası yanıtların bir listesini verir.
Giriş metninde grafik dışı Sözcük Parçası veya Cümle Parçası belirteçleri gerçekleştirir.
Desteklenen BertQuestionCevap modelleri
Aşağıdaki modeller BertNLClassifier
API ile uyumludur.
BERT Soru Yanıtı için TensorFlow Lite Model Maker tarafından oluşturulan modeller.
Model uyumluluk gereksinimlerini karşılayan özel modeller.
Java'da çıkarımı çalıştır
Adım 1: 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 varlıklar 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 (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
}
2. Adım: API'yi kullanarak çıkarımı çalıştırın
// 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 ayrıntı için kaynak koduna bakın.
Swift'de çıkarımı çalıştır
1. Adım: CocoaPod'ları İçe Aktarın
Podfile'de TensorFlowLiteTaskText bölmesini ekleyin
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
end
2. Adım: API'yi kullanarak çıkarımı çalıştırın
// Initialization
let mobileBertAnswerer = TFLBertQuestionAnswerer.questionAnswerer(
modelPath: mobileBertModelPath)
// Run inference
let answers = mobileBertAnswerer.answer(
context: context, question: question)
Daha fazla ayrıntı için kaynak koduna bakın.
Çıkarımı C++ ile çalıştırın
// Initialization
BertQuestionAnswererOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<BertQuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();
// Run inference
std::vector<QaAnswer> positive_results = answerer->Answer(context_of_question, question_to_ask);
Daha fazla ayrıntı için kaynak koduna bakın.
Örnek sonuçlar
İşte ALBERT modelinin cevap sonuçlarına bir örnek.
Bağlam: "Amazon yağmur ormanı, alternatif olarak, İngilizcede Amazonia olarak da bilinen Amazon Ormanı, Amazon biyomunda, Güney Amerika'nın Amazon havzasının çoğunu kapsayan nemli, geniş yapraklı bir tropikal yağmur ormanıdır. Bu havza 7.000.000 km2'yi (2.700.000 sq mi) kapsar ), bunun 5.500.000 km2'si (2.100.000 sq mi) yağmur ormanlarıyla kaplıdır. Bu bölge dokuz ülkeye ait toprakları içerir."
Soru: "Amazon yağmur ormanları 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
BertQuestionAnswerer için basit CLI demo aracını kendi model ve test verilerinizle deneyin.
Model uyumluluğu gereksinimleri
BertQuestionAnswerer
API, zorunlu TFLite Model Meta Verilerine sahip bir TFLite modeli bekler.
Meta Veriler aşağıdaki gereksinimleri karşılamalıdır:
Sözcük Parçası/Cümle Parçası Simgeleştiricisi için
input_process_units
Belirteç oluşturucunun çıktısı için "ids", "mask" ve "segment_ids" adlarına sahip 3 giriş tensörü
Bağlamdaki cevabın göreli konumunu belirtmek için "end_logits" ve "start_logits" adlarına sahip 2 çıkış tensörü