Klassifikator für natürliche Sprache einbinden

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.

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 RegexTokenizer eingerichtet 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.