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

Görev Kitaplığı BertNLClassifier API, NLClassifier API'sine çok benzer Bu API, giriş metnini farklı kategorilere ayırır: kelime işlemcileriyle uyumlu olan Bert'le ilişkili modeller için TFLite modeli dışındaki cümle parçası tokenizasyonları.

BertNLClassifier API'nin temel özellikleri

  • Giriş olarak tek bir dize alır, dizeyle sınıflandırma yapar ve <label, score=""> gibi çıkışlar eşlemelerini sınıflandırma sonucu olarak kullanabilirsiniz.</label,>

  • Grafik dışı Wordparça performansı gösteriyor veya Cümle parçası giriş metninde tokenizasyonlar.

Desteklenen BertNLClassifier 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
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);

Kaynağa bakın 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 bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

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

Kaynağa bakın kod inceleyebilirsiniz.

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

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

Kaynağa bakın 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
classifier = text.BertNLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

Kaynağa bakın kod daha fazla BertNLClassifier yapılandırma seçeneğine gidin.

Örnek sonuçlar

Aşağıda, MobileBert modeli.

Giriş: "Bu, büyüleyici ve genellikle etkileyen bir yolculuk"

Çıkış:

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

KSA demo aracını kullanarak BertNLClassifier kullanarak test edebilirsiniz.

Model uyumluluğu şartları

BetNLClassifier API, zorunlu TFLite Modeline sahip bir TFLite modeli bekler Meta veri.

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

  • Wordparça/SentenceParça Tokenizer için giriş_process_units

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

  • İsteğe bağlı olarak eklenmiş bir etiket dosyasıyla birlikte, float32 türünde 1 çıkış tensörü. etiket dosyası eklendiğinde, dosya tek bir etikete sahip bir düz metin dosyası olmalıdır her satıra bir sayı girilmelidir ve etiket sayısı, çıkartıyor.