Merken Sie den Termin vor! Google I / O kehrt vom 18. bis 20. Mai zurück Registrieren Sie sich jetzt
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Integrieren Sie den Klassifikator für natürliche Sprachen

Die NLClassifier API der Task Library klassifiziert Eingabetext in verschiedene Kategorien und ist eine vielseitige und konfigurierbare API, die die meisten Textklassifizierungsmodelle verarbeiten kann.

Hauptmerkmale der NLClassifier-API

  • Nimmt eine einzelne Zeichenfolge als Eingabe, führt eine Klassifizierung mit der Zeichenfolge und den Ausgaben durch Paare als Klassifizierungsergebnisse.

  • Optionale Regex-Tokenisierung für Eingabetext verfügbar.

  • Konfigurierbar zur Anpassung verschiedener Klassifizierungsmodelle.

Unterstützte NLClassifier-Modelle

Die folgenden Modelle sind garantiert mit der NLClassifier API kompatibel.

Führen Sie Inferenz in Java aus

In der Referenz-App zur NLClassifier ein Beispiel für die Verwendung von NLClassifier in einer Android-App.

Schritt 1: Importieren Sie die Gradle-Abhängigkeit und andere Einstellungen

Kopieren Sie die .tflite Modelldatei 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 zur build.gradle Datei des Moduls build.gradle :

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Text Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.1.0'
}

Schritt 2: Führen Sie die Inferenz mithilfe der API aus

// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options = NLClassifierOptions.builder().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 den Quellcode für mehr Optionen zu konfigurieren NLClassifier .

Führen Sie eine Inferenz in Swift aus

Schritt 1: Importieren Sie CocoaPods

Fügen Sie den TensorFlowLiteTaskText-Pod in Podfile hinzu

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.0.1-nightly'
end

Schritt 2: Führen Sie die Inferenz mithilfe der API aus

// 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 .

Führen Sie Inferenz in C ++ aus

// Initialization
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromFileAndOptions(
    model_path,
    {
      .input_tensor_name=kInputTensorName,
      .output_score_tensor_name=kOutputScoreTensorName,
    }).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

Weitere Informationen finden Sie im Quellcode .

Beispielergebnisse

Hier ist ein Beispiel für die Klassifizierungsergebnisse des Filmkritikmodells .

Input: "Was für eine Zeitverschwendung."

Ausgabe:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

Probieren Sie das einfache CLI-Demo-Tool für NLClassifier mit Ihren eigenen Modell- und Testdaten aus.

Modellkompatibilitätsanforderungen

Je nach Anwendungsfall kann die NLClassifier API ein TFLite-Modell mit oder ohne TFLite-Modellmetadaten laden .

Die kompatiblen Modelle sollten die folgenden Anforderungen erfüllen:

  • Eingabetensor: (kTfLiteString / kTfLiteInt32)

    • Die Eingabe des Modells sollte entweder eine rohe kTfLiteString-Tensor-Eingabezeichenfolge oder ein kTfLiteInt32-Tensor für Regex-Token-Indizes der rohen Eingabezeichenfolge sein.

    • Wenn der Eingabetyp kTfLiteString ist, sind für das Modell keine Metadaten erforderlich.

    • Wenn der Eingabetyp kTfLiteInt32 ist, muss in den Metadaten des Eingabetensors ein RegexTokenizer eingerichtet werden.

  • Ausgabe-Score-Tensor: (kTfLiteUInt8 / kTfLiteInt8 / kTfLiteInt16 / kTfLiteFloat32 / kTfLiteFloat64)

    • Obligatorischer Ausgangstensor für die Punktzahl jeder klassifizierten Kategorie.

    • Wenn der Typ einer der Int-Typen ist, dequantisieren Sie ihn, um ihn auf die entsprechenden Plattformen zu verdoppeln / zu verschieben

    • Kann eine optionale zugeordnete Datei in den entsprechenden Metadaten des Ausgabetensors für Kategoriebeschriftungen enthalten. Die Datei sollte eine Nur-Text-Datei mit einer Beschriftung pro Zeile sein und die Anzahl der Beschriftungen sollte mit der Anzahl der Kategorien als Modellausgaben übereinstimmen.

  • Ausgabeetikettentensor: (kTfLiteString / kTfLiteInt32)

    • Der optionale Ausgangstensor für das Etikett für jede Kategorie sollte dieselbe Länge wie der Ausgangstensor haben. Wenn dieser Tensor nicht vorhanden ist, verwendet die API Score-Indizes als Klassennamen.

    • Wird ignoriert, wenn die zugehörige Etikettendatei in den Metadaten des Ausgabe-Tensors vorhanden ist.