BERT doğal dil sınıflandırıcısını entegre edin

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Görev Kitaplığı BertNLClassifier API'si, giriş metnini farklı kategorilerde sınıflandıran NLClassifier çok benzer, ancak bu API, TFLite modeli dışında Kelime Parçası ve Cümle Parçası belirteçleri gerektiren Bert ile ilgili modeller için özel olarak uyarlanmıştır.

BertNLClassifier API'sinin temel özellikleri

  • Girdi olarak tek bir string alır, string ile sınıflandırma yapar ve çıktılar verir. sınıflandırma sonuçları olarak çiftler.

  • Giriş metninde grafik dışı Sözcük Parçası veya Cümle Parçası belirteçleri gerçekleştirir.

Desteklenen BertNLClassifier modelleri

Aşağıdaki modeller BertNLClassifier API ile uyumludur.

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
BertNLClassifierOptions options =
    BertNLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertNLClassifier classifier =
    BertNLClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Category> results = classifier.classify(input);

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 bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

// Run inference
let categories = bertNLClassifier.classify(text: input)

Daha fazla ayrıntı için kaynak koduna bakın.

Çıkarımı C++ ile çalıştırın

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
std::vector<core::Category> categories = classifier->Classify(input_text);

Daha fazla ayrıntı için kaynak koduna bakın.

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

Adım 1: pip paketini kurun

pip install tflite-support

Adım 2: Modeli kullanma

# Imports
from tflite_support.task import text

# Initialization
classifier = text.BertNLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

BertNLClassifier yapılandırmak için daha fazla seçenek için kaynak koduna bakın.

Örnek sonuçlar

Model Maker'ın MobileBet modelini kullanan film incelemelerinin sınıflandırma sonuçlarına bir örnek.

Girdi: "büyüleyici ve genellikle etkileyici bir yolculuk"

Çıktı:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

BertNLClassifier için basit CLI demo aracını kendi model ve test verilerinizle deneyin.

Model uyumluluğu gereksinimleri

BetNLClassifier 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ı Belirteçleştiricisi için input_process_units

  • Belirteç çıkışı için "ids", "mask" ve "segment_ids" adlarına sahip 3 giriş tensörü

  • İsteğe bağlı olarak eklenen bir etiket dosyasıyla, float32 tipinde 1 çıkış tensörü. Bir etiket dosyası eklenmişse, dosya her satırda bir etiket bulunan bir düz metin dosyası olmalı ve etiket sayısı model çıktıları olarak kategori sayısıyla eşleşmelidir.