BERT-Klassifikator für natürliche Sprache einbinden

Die BertNLClassifier API der Task Library ist der NLClassifier sehr ähnlich die Eingabetext in verschiedene Kategorien einteilt, außer dass diese API die speziell auf Bert-bezogene Modelle zugeschnitten sind, Satz-Tokenisierungen außerhalb des TFLite-Modells.

Wichtige Funktionen der BertNLClassifier API

  • Nimmt einen einzelnen String als Eingabe, führt eine Klassifizierung mit dem String durch gibt <label, score=""> aus als Klassifizierungsergebnisse.</label,>

  • Führt Out-of-Graph-Wortgruppen aus oder Satzsatz Tokenisierungen für Eingabetext.

Unterstützte BertNLClassifier-Modelle

Die folgenden Modelle sind mit der BertNLClassifier API kompatibel.

Inferenz in Java ausführen

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 Text Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

Schritt 2: Inferenz mit der API ausführen

// Initialization
BertNLClassifierOptions options =
    BertNLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertNLClassifier classifier =
    BertNLClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Category> results = classifier.classify(input);

Siehe Quelle Code .

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
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

// Run inference
let categories = bertNLClassifier.classify(text: input)

Siehe Quelle Code .

Inferenz in C++ ausführen

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::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.BertNLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

Siehe Quelle Code finden Sie weitere Optionen zum Konfigurieren von BertNLClassifier.

Beispielergebnisse

Hier ist ein Beispiel für die Klassifizierungsergebnisse von Filmrezensionen mit dem MobileBert aus Model Maker.

Eingabe: „Es ist eine bezaubernde und oft mitreißende Reise.“

Ausgabe:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

Testen Sie das einfache CLI-Demotool für BertNLClassifier mit eigenen Modell- und Testdaten.

Anforderungen an die Modellkompatibilität

Die BetNLClassifier API erwartet ein TFLite-Modell mit dem obligatorischen TFLite-Modell Metadaten.

Metadaten sollten die folgenden Anforderungen erfüllen:

  • "input_process_units" für die Tokenizer-Funktion "Wortstück-/Satzteil"

  • 3 Eingabetensoren mit den Namen „ids“, „mask“ und "segment_ids" für die Ausgabe von der Tokenizer

  • 1 Ausgabetensor vom Typ float32 mit einer optional angehängten Labeldatei. Wenn ein Labeldatei angehängt ist, sollte es sich um eine Nur-Text-Datei mit einem Label handeln. pro Zeile und die Anzahl der Beschriftungen sollte mit der Anzahl der Kategorien übereinstimmen, die Modellausgaben.