Integrasikan pengklasifikasi bahasa alami

NLClassifier API Perpustakaan Tugas mengklasifikasikan teks input ke dalam kategori yang berbeda, dan merupakan API serbaguna dan dapat dikonfigurasi yang dapat menangani sebagian besar model klasifikasi teks.

Fitur utama dari NLClassifier API

  • Mengambil string tunggal sebagai input, melakukan klasifikasi dengan string dan output berpasangan sebagai hasil klasifikasi.

  • Tokenisasi Regex opsional tersedia untuk teks input.

  • Dapat dikonfigurasi untuk mengadaptasi model klasifikasi yang berbeda.

Model NLClassifier yang didukung

Model berikut dijamin kompatibel dengan NLClassifier API.

Jalankan inferensi di Java

Lihat aplikasi referensi Klasifikasi Teks untuk contoh cara menggunakan NLClassifier di aplikasi Android.

Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya

Salin file model .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tidak boleh dikompresi, dan tambahkan library TensorFlow Lite ke file build.gradle modul:

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.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}

Langkah 2: Jalankan inferensi menggunakan API

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

Lihat kode sumber untuk opsi lebih lanjut untuk mengkonfigurasi NLClassifier .

Jalankan inferensi di Swift

Langkah 1: Impor CocoaPods

Tambahkan pod TensorFlowLiteTaskText di Podfile

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

Langkah 2: Jalankan inferensi menggunakan API

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

Lihat kode sumber untuk lebih jelasnya.

Jalankan inferensi di C++

// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

Lihat kode sumber untuk lebih jelasnya.

Contoh hasil

Berikut adalah contoh hasil klasifikasi model review film .

Masukan: "Sungguh membuang-buang waktu saya."

Keluaran:

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

Cobalah alat demo CLI sederhana untuk NLClassifier dengan model dan data uji Anda sendiri.

Persyaratan kompatibilitas model

Bergantung pada kasus penggunaan, NLClassifier API dapat memuat model TFLite dengan atau tanpa TFLite Model Metadata . Lihat contoh pembuatan metadata untuk pengklasifikasi bahasa alami menggunakan TensorFlow Lite Metadata Writer API .

Model yang kompatibel harus memenuhi persyaratan berikut:

  • Tensor masukan: (kTfLiteString/kTfLiteInt32)

    • Input model harus berupa string input mentah tensor kTfLiteString atau tensor kTfLiteInt32 untuk indeks tokenized regex dari string input mentah.
    • Jika tipe input adalah kTfLiteString, tidak ada Metadata yang diperlukan untuk model.
    • Jika jenis input adalah kTfLiteInt32, RegexTokenizer perlu disiapkan di Metadata tensor input.
  • Tensor skor keluaran: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • Tensor keluaran wajib untuk skor masing-masing kategori yang diklasifikasikan.

    • Jika tipe adalah salah satu dari tipe Int, dequantize menjadi double/float ke platform yang sesuai

    • Dapat memiliki file terkait opsional dalam Metadata terkait tensor output untuk label kategori, file harus berupa file teks biasa dengan satu label per baris, dan jumlah label harus sesuai dengan jumlah kategori sebagai output model. Lihat contoh file label .

  • Tensor label keluaran: (kTfLiteString/kTfLiteInt32)

    • Tensor keluaran opsional untuk label untuk setiap kategori, harus memiliki panjang yang sama dengan tensor skor keluaran. Jika tensor ini tidak ada, API menggunakan indeks skor sebagai nama kelas.

    • Akan diabaikan jika file label terkait ada dalam Metadata tensor skor keluaran.