Klassifikator für natürliche Sprache einbinden

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.

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.