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
Girdi olarak tek bir string alır, string ile sınıflandırma yapar ve çıktılar verir.
Giriş metni için isteğe bağlı Regex Tokenization mevcuttur.
Farklı sınıflandırma modellerini uyarlamak için yapılandırılabilir.
Desteklenen NLClassifier modelleri
Aşağıdaki modellerin NLClassifier
API ile uyumlu olması garanti edilmektedir.
Metin Sınıflandırması için TensorFlow Lite Model Maker
average_word_vec
oluşturulan ortalama_word_vec belirtimine sahip modeller.Model uyumluluk gereksinimlerini karşılayan özel modeller.
Java'da çıkarımı çalıştır
Bir Android uygulamasında NLClassifier
nasıl kullanılacağına ilişkin bir örnek için Metin Sınıflandırma 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 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 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ırmak için daha fazla seçenek 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.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++ ile çalıştırın
// 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ı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.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
NLClassifier
yapılandırmak için daha fazla seçenek için kaynak koduna bakın.
Örnek sonuçlar
İşte film inceleme modelinin sınıflandırma sonuçlarına bir örnek.
Girdi: "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 model ve test verilerinizle deneyin.
Model uyumluluğu gereksinimleri
Kullanım durumuna bağlı olarak, NLClassifier
API, TFLite Model Meta Verileri olan veya olmayan bir TFLite modeli yükleyebilir. TensorFlow Lite Meta Veri Yazıcı API'sını kullanarak doğal dil sınıflandırıcıları için meta veri oluşturma örneklerine bakın.
Uyumlu modeller aşağıdaki gereksinimleri karşılamalıdır:
Giriş tensörü: (kTfLiteString/kTfLiteInt32)
- Modelin girişi, ham girdi dizgisinin regex belirteçli endeksleri için bir kTfLiteString tensör ham girdi dizgisi veya 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 Metadata'sında bir
RegexTokenizer
ayarlanması gerekir.
Çıkış puanı tensörü: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Sınıflandırılan her kategorinin puanı için zorunlu çıktı tensörü.
Tür, Int türlerinden biriyse, karşılık gelen platformlara ikiye katlamak/yüzmek için dekuantize edin
Çıktı tensörünün kategori etiketleri için karşılık gelen Meta Verilerinde isteğe bağlı bir ilişkili dosya olabilir, 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 kategori için etiket için isteğe bağlı çıktı tensörü, çıktı puanı tensörü ile 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 yok sayılır.