Die NLClassifier API der Task Library klassifiziert Eingabetext in verschiedene Kategorien. Sie ist vielseitig und konfigurierbar und kann die meisten Modelle für die Textklassifizierung verarbeiten.
Wichtige Funktionen der NLClassifier API
Akzeptiert einen einzelnen String als Eingabe, führt die Klassifizierung mit dem String durch und gibt <label, score="">-Paare als Klassifizierungsergebnisse aus.</label,>
Optionale Regex-Tokenisierung für Eingabetext verfügbar.
Konfigurierbar, um verschiedene Klassifizierungsmodelle anzupassen.
Unterstützte NLClassifier-Modelle
Die folgenden Modelle sind garantiert mit der NLClassifier API kompatibel.
Das Modell zur Sentimentklassifizierung von Filmrezensionen.
Modelle mit
average_word_vec-Spezifikation, die von TensorFlow Lite Model Maker für die Textklassifizierung erstellt wurden.Benutzerdefinierte Modelle, die die Anforderungen an die Modellkompatibilität erfüllen.
Inferenz in Java ausführen
Ein Beispiel für die Verwendung von NLClassifier in einer Android-App finden Sie in der Referenz-App zur Textklassifizierung.
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei .tflite in das Assets-Verzeichnis des Android-Moduls, in dem das Modell ausgeführt wird. Geben Sie an, dass die Datei nicht komprimiert werden soll, und fügen Sie die TensorFlow Lite-Bibliothek der build.gradle-Datei des Moduls hinzu:
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'
}
Schritt 2: Inferenz mit der API ausführen
// 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);
Weitere Optionen zum Konfigurieren von NLClassifier finden Sie im Quellcode.
Inferenz in Swift ausführen
Schritt 1: CocoaPods importieren
TensorFlowLiteTaskText-Pod in Podfile hinzufügen
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Schritt 2: Inferenz mit der API ausführen
// 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)
Weitere Informationen finden Sie im Quellcode.
Inferenz in C++ ausführen
// 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);
Weitere Informationen finden Sie im Quellcode.
Inferenz in Python ausführen
Schritt 1: pip-Paket installieren
pip install tflite-support
Schritt 2: Modell verwenden
# Imports
from tflite_support.task import text
# Initialization
classifier = text.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
Weitere Optionen zum Konfigurieren von NLClassifier finden Sie im Quellcode.
Beispielergebnisse
Hier sehen Sie ein Beispiel für die Klassifizierungsergebnisse des Modells für Filmrezensionen.
Eingabe: „Was für eine Zeitverschwendung.“
Ausgabe:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Testen Sie das einfache CLI-Demotool für NLClassifier mit Ihrem eigenen Modell und Ihren Testdaten.
Anforderungen an die Modellkompatibilität
Je nach Anwendungsfall kann die NLClassifier API ein TFLite-Modell mit oder ohne TFLite-Modellmetadaten laden. Beispiele für das Erstellen von Metadaten für Natural Language-Klassifizierer mit der TensorFlow Lite Metadata Writer API
Die kompatiblen Modelle müssen die folgenden Anforderungen erfüllen:
Eingabetensor: (kTfLiteString/kTfLiteInt32)
- Die Eingabe des Modells sollte entweder ein kTfLiteString-Tensor mit dem Roh-Eingabestring oder ein kTfLiteInt32-Tensor mit den regulären Ausdruckstoken-Indexen des Roh-Eingabestrings sein.
- Wenn der Eingabetyp kTfLiteString ist, sind keine Metadaten für das Modell erforderlich.
- Wenn der Eingabetyp kTfLiteInt32 ist, muss in den Metadaten des Eingabetensors ein
RegexTokenizereingerichtet werden.
Tensor für Ausgabebereich: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Obligatorischer Ausgabetensor für die Punktzahl jeder klassifizierten Kategorie.
Wenn der Typ einer der Int-Typen ist, wird er für die entsprechenden Plattformen in „Double“ oder „Float“ dequantisiert.
Kann eine optionale zugehörige Datei in den entsprechenden Metadaten des Ausgabetensors für Kategorielabels haben. Die Datei sollte eine Nur-Text-Datei mit einem Label pro Zeile sein und die Anzahl der Labels sollte der Anzahl der Kategorien in der Modellausgabe entsprechen. Beispiel für eine Labeldatei
Tensor für Ausgabelabel: (kTfLiteString/kTfLiteInt32)
Optionaler Ausgabetensor für das Label für jede Kategorie. Er sollte dieselbe Länge wie der Ausgabepunktzahl-Tensor haben. Wenn dieser Tensor nicht vorhanden ist, verwendet die API Score-Indexe als Klassennamen.
Wird ignoriert, wenn die zugehörige Labeldatei in den Metadaten des Ausgabebewertungstensors vorhanden ist.