Die NLClassifier
API der Task Library klassifiziert Eingabetext in verschiedene
und ist eine vielseitige und konfigurierbare API, die die meisten
Klassifizierungsmodelle.
Wichtige Funktionen der NLClassifier API
Nimmt einen einzelnen String als Eingabe, führt eine Klassifizierung mit dem String durch gibt <label, score=""> aus als Klassifizierungsergebnisse.</label,>
Optionale Regex-Tokenisierung für Eingabetext verfügbar.
Konfigurierbar, um verschiedene Klassifizierungsmodelle anzupassen.
Unterstützte NLClassifier-Modelle
Die folgenden Modelle sind garantiert kompatibel mit dem NLClassifier
der API erstellen.
Die Aussage zum Filmrezension Klassifizierung Modell.
Modelle mit der Spezifikation
average_word_vec
, die von TensorFlow Lite Model Maker erstellt wurden für Textklassifizierung.Benutzerdefinierte Modelle, die die Modellkompatibilität erfüllen Anforderungen.
Inferenz in Java ausführen
Weitere Informationen finden Sie in der Referenz zur Textklassifizierung.
App
findest du ein Beispiel für die Verwendung von NLClassifier
in einer Android-App.
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei .tflite
in das Asset-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 der Datei build.gradle
des Moduls die TensorFlow Lite-Bibliothek 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);
Siehe Quelle
Code
finden Sie weitere Optionen zum Konfigurieren von NLClassifier
.
Inferenzen 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)
Siehe Quelle Code .
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);
Siehe Quelle Code .
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)
Siehe Quelle
Code
finden Sie weitere Optionen zum Konfigurieren von NLClassifier
.
Beispielergebnisse
Hier ist ein Beispiel für die Klassifizierungsergebnisse der Filmrezension. Modell.
Input: „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 eigenen Modell- und Testdaten.
Anforderungen an die Modellkompatibilität
Je nach Anwendungsfall kann die NLClassifier
API ein TFLite-Modell mit
oder ohne TFLite-Modellmetadaten. Beispiele ansehen
zum Erstellen von Metadaten für Natural Language-Klassifikatoren mit TensorFlow Lite.
Metadaten-Autor
API hinzu.
Die kompatiblen Modelle müssen die folgenden Anforderungen erfüllen:
Eingabetensor: (kTfLiteString/kTfLiteInt32)
- Die Eingabe des Modells sollte entweder eine Roheingabe eines kTfLiteString-Tensors sein String oder kTfLiteInt32-Tensor für tokenisierte Regex-Indexe der Roheingabe .
- Wenn der Eingabetyp kTfLiteString ist, nicht Für das Modell sind Metadaten erforderlich.
- Wenn der Eingabetyp kTfLiteInt32 ist, muss ein
RegexTokenizer
eingerichtet werden in des Eingabetensors Metadaten:
Tensor für Ausgabewert: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Erforderlicher Ausgabetensor für die Punktzahl jeder klassifizierten Kategorie.
Wenn der Typ einer der Typen "Int" ist, dequantisieren Sie ihn in "double/float", entsprechende Plattformen
Kann eine optionale verknüpfte Datei in den Ausgabetensoren haben entsprechende Metadata für die Kategorie Labels handelt, sollte die Datei eine Nur-Text-Datei mit einem Label pro Zeile sein, Die Anzahl der Labels sollte mit der Anzahl der Kategorien übereinstimmen, Modellausgaben. Siehe Beispiellabel Datei.
Ausgabelabel-Tensor: (kTfLiteString/kTfLiteInt32)
Optionaler Ausgabetensor für das Label für jede Kategorie, sollte der wie der Punktzahl-Tensor für die Ausgabe. Wenn dieser Tensor nicht vorhanden ist, Die API verwendet Punktzahlindexe als Klassennamen.
Wird ignoriert, wenn die zugehörige Labeldatei in der Ausgabebewertung vorhanden ist Tensor-Metadaten.