Doğal dil sınıflandırıcısını entegre edin

Görev Kitaplığının NLClassifier API'si, giriş metnini farklı kategorilerde sınıflandırır ve çoğu metin sınıflandırma modelini işleyebilen çok yönlü ve yapılandırılabilir bir API'dir.

NLClassifier API'sinin temel özellikleri

  • Giriş olarak tek bir dize alır, dize ve çıktılarla sınıflandırmayı gerçekleştirir sınıflandırma sonuçları olarak çiftler.

  • Giriş metni için isteğe bağlı Regex Tokenizasyonu mevcuttur.

  • Farklı sınıflandırma modellerine uyum sağlayacak şekilde yapılandırılabilir.

Desteklenen NLClassifier modelleri

Aşağıdaki modellerin NLClassifier API ile uyumlu olduğu garanti edilir.

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

Bir Android uygulamasında NLClassifier nasıl kullanılacağına ilişkin bir örnek için Metin Sınıflandırması referans uygulamasına bakın.

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 asset 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 Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

2. Adım: API'yi kullanarak çıkarımı çalıştırın

// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options =
    NLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setInputTensorName(INPUT_TENSOR_NAME)
        .setOutputScoreTensorName(OUTPUT_SCORE_TENSOR_NAME)
        .build();
NLClassifier classifier =
    NLClassifier.createFromFileAndOptions(context, modelFile, options);

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

NLClassifier yapılandırmaya yönelik daha fazla seçenek için kaynak koduna bakın.

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

1. Adım: CocoaPod'ları içe aktarın

TensorFlowLiteTaskText bölmesini Podfile'a ekleyin

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

2. Adım: API'yi kullanarak çıkarımı çalıştırın

// Initialization
var modelOptions:TFLNLClassifierOptions = TFLNLClassifierOptions()
modelOptions.inputTensorName = inputTensorName
modelOptions.outputScoreTensorName = outputScoreTensorName
let nlClassifier = TFLNLClassifier.nlClassifier(
      modelPath: modelPath,
      options: modelOptions)

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

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

Çıkarımı C++'da çalıştırma

// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<NLClassifier> classifier = NLClassifier::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ırma

Adım 1: pip paketini yükleyin

pip install tflite-support

Adım 2: Modelin kullanılması

# Imports
from tflite_support.task import text

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

# Run inference
text_classification_result = classifier.classify(text)

NLClassifier yapılandırmaya yönelik daha fazla seçenek için kaynak koduna bakın.

Örnek sonuçlar

Aşağıda film inceleme modelinin sınıflandırma sonuçlarına bir örnek verilmiştir.

Giriş: "Ne büyük zaman kaybı."

Çıktı:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

NLClassifier için basit CLI demo aracını kendi modeliniz ve test verilerinizle deneyin.

Model uyumluluk gereksinimleri

Kullanım durumuna bağlı olarak NLClassifier API, TFLite Model Meta Verileri içeren veya içermeyen bir TFLite modeli yükleyebilir. TensorFlow Lite Meta Veri Yazarı API'sini kullanarak doğal dil sınıflandırıcıları için meta veriler oluşturma örneklerine bakın.

Uyumlu modeller aşağıdaki gereksinimleri karşılamalıdır:

  • Giriş tensörü: (kTfLiteString/kTfLiteInt32)

    • Modelin girişi ya bir kTfLiteString tensör ham giriş dizesi ya da ham giriş dizesinin normal ifadeyle belirtilmiş dizinleri için bir kTfLiteInt32 tensörü olmalıdır.
    • Giriş türü kTfLiteString ise model için Meta Veri gerekmez.
    • Giriş türü kTfLiteInt32 ise giriş tensörünün Meta Verilerinde bir RegexTokenizer ayarlanması gerekir.
  • Çıkış puanı tensörü: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • Sınıflandırılan her kategorinin puanı için zorunlu çıkış tensörü.

    • Tür, Int türlerinden biriyse, ilgili platformlara çift/kaydırmak için onu dekuantize edin

    • Kategori etiketleri için çıktı tensörünün karşılık gelen Meta Verilerinde isteğe bağlı bir ilişkili dosya bulunabilir; dosya, her satırda bir etiket bulunan düz bir metin dosyası olmalı ve etiket sayısı, model çıktıları olarak kategori sayısıyla eşleşmelidir. Örnek etiket dosyasına bakın.

  • Çıkış etiketi tensörü: (kTfLiteString/kTfLiteInt32)

    • Her kategorinin etiketi için isteğe bağlı çıkış tensörü, çıkış puanı tensörüyle aynı uzunlukta olmalıdır. Bu tensör mevcut değilse API, sınıf adları olarak puan endekslerini kullanır.

    • İlişkili etiket dosyası çıktı puanı tensörünün Meta Verilerinde mevcutsa göz ardı edilecektir.