Eine Frage haben? Verbinden Sie sich mit der Community im TensorFlow Forum Visit Forum

Integrieren Sie den BERT-Klassifikator für natürliche Sprachen

Die BertNLClassifier API der Aufgabenbibliothek ist dem NLClassifier sehr ähnlich, der Eingabetext in verschiedene Kategorien klassifiziert, mit der Ausnahme, dass diese API speziell auf Bert-bezogene Modelle zugeschnitten ist, für die Wordpiece- und Satzstück-Tokenisierungen außerhalb des TFLite-Modells erforderlich sind.

Hauptmerkmale der BertNLClassifier-API

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

  • Führt out-of-Diagramm Wordpiece oder Sentencepiece tokenizations auf Eingabetext.

Unterstützte BertNLClassifier-Modelle

Die folgenden Modelle sind mit der BertNLClassifier API kompatibel.

Führen Sie Inferenz in Java aus

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.2.0'
}

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

// Initialization
BertNLClassifier classifier = BertNLClassifier.createFromFile(context, modelFile);

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

Weitere Informationen finden Sie im Quellcode .

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.2.0'
end

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

// Initialization
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

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

Weitere Informationen finden Sie im Quellcode .

Führen Sie Inferenz in C ++ aus

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).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 von Filmkritiken mit dem MobileBert- Modell von Model Maker.

Input: "Es ist eine charmante und oft beeinflussende Reise"

Ausgabe:

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

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

Modellkompatibilitätsanforderungen

Die BetNLClassifier API erwartet ein TFLite-Modell mit obligatorischen TFLite-Modellmetadaten .

Die Metadaten sollten die folgenden Anforderungen erfüllen:

  • input_process_units für Wordpiece / Sentencepiece Tokenizer

  • 3 Eingabetensoren mit den Namen "ids", "mask" und "segment_ids" für die Ausgabe des Tokenizers

  • 1 Ausgangstensor vom Typ float32 mit einer optional angehängten Etikettendatei. Wenn eine Etikettendatei angehängt ist, sollte die Datei eine Nur-Text-Datei mit einem Etikett pro Zeile sein und die Anzahl der Etiketten sollte mit der Anzahl der Kategorien bei der Modellausgabe übereinstimmen.