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

Görev Kitaplığı'nın NLClassifier API'si, giriş metnini farklı kategorilere ayı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'nin temel özellikleri

  • Giriş olarak tek bir dize alır, dizeyle sınıflandırma yapar ve sınıflandırma sonuçları olarak <label, score=""> çiftlerini çıkarır.</label,>

  • Giriş metni için isteğe bağlı normal ifadeyle belirteçleştirme özelliği kullanılabilir.

  • Farklı sınıflandırma modellerine uyacak ş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

NLClassifier öğesinin Android uygulamasında nasıl kullanılacağına ilişkin örnek için Text Classification referans uygulamasını inceleyin.

1. adım: 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 öğeler 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
    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ırma

// 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ırmayla ilgili diğer seçenekler için kaynak koduna bakın.

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

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

Podfile'a TensorFlowLiteTaskText kapsülünü ekleyin.

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

2. adım: API'yi kullanarak çıkarım çalıştırma

// 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 bilgi için kaynak koduna bakın.

C++'ta çıkarım ç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 bilgi için kaynak koduna bakın.

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.NLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

NLClassifier yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.

Örnek sonuçlar

Film yorumu modelinin sınıflandırma sonuçlarına ilişkin bir örneği aşağıda bulabilirsiniz.

Giriş: "Ne kadar da vaktimi boşa harcadım."

Çıkış:

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

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

Model uyumluluğu koşulları

Kullanım alanına bağlı olarak NLClassifier API, TFLite Model Metadata ile veya bu olmadan bir TFLite modeli yükleyebilir. TensorFlow Lite Metadata Writer API'yi kullanarak doğal dil sınıflandırıcıları için meta veri oluşturma örneklerini inceleyin.

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

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

    • Modelin girişi, kTfLiteString tensör ham giriş dizesi veya kTfLiteInt32 tensör olmalıdır. Bu tensör, ham giriş dizesinin normal ifadeyle belirteçleştirilmiş dizinlerini içerir.
    • Giriş türü kTfLiteString ise model için Metadata gerekmez.
    • Giriş türü kTfLiteInt32 ise giriş tensörünün Metadata'sında RegexTokenizer ayarlanmalıdır.
  • Çı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 platformlarda çift/kayan nokta türüne dönüştürün.

    • Çıkış tensörünün karşılık gelen meta verilerinde isteğe bağlı olarak ilişkili bir dosya olabilir. Kategori etiketleri için dosya, her satırda bir etiket olacak şekilde düz metin dosyası olmalı ve etiket sayısı, model çıkışlarındaki kategori sayısıyla eşleşmelidir. Örnek etiket dosyasına bakın.

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

    • Her kategori için etiketin 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 dizinlerini kullanır.

    • İlişkili etiket dosyası çıkış puanı tensörünün meta verilerinde mevcutsa yoksayılır.