Leitfaden zur Textklassifizierung für das Web

Mit der Aufgabe „MediaPipe-Textklassifikator“ können Sie Text in eine Reihe definierter Kategorien einteilen, z. B. nach positiver oder negativer Stimmung. Die Kategorien richten sich nach dem von Ihnen verwendeten Modell und danach, wie dieses Modell trainiert wurde. Hier erfahren Sie, wie Sie den Textklassifikator für Web- und JavaScript-Apps verwenden.

In der Demo können Sie sich diese Aufgabe in Aktion ansehen. Weitere Informationen zu den Funktionen, Modellen und Konfigurationsoptionen dieser Aufgabe finden Sie in der Übersicht.

Codebeispiel

Der Beispielcode für den Textklassifikator bietet eine vollständige Implementierung dieser Aufgabe in JavaScript. Mit diesem Code können Sie diese Aufgabe testen und mit dem Erstellen Ihrer eigenen Anwendung zur Textklassifizierung beginnen. Sie können den Beispielcode für die Textklassifikation einfach in Ihrem Webbrowser aufrufen, ausführen und bearbeiten.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Codeprojekte speziell für die Verwendung des Textklassifikators beschrieben. Allgemeine Informationen zum Einrichten der Entwicklungsumgebung für MediaPipe Tasks, einschließlich der Anforderungen an die Plattformversion, finden Sie im Einrichtungsleitfaden für das Web.

JavaScript-Pakete

Der Textklassifikatorcode ist im Paket @mediapipe/tasks-text verfügbar. Sie können diese Bibliotheken über die Links im Einrichtungsleitfaden für die Plattform herunterladen.

Mit dem folgenden Befehl können Sie die erforderlichen Pakete mit dem folgenden Code für das lokale Staging installieren:

npm install @mediapipe/tasks-text

Wenn die Bereitstellung auf einem Server erfolgen soll, können Sie einen Content Delivery Network-Dienst wie jsDelivr verwenden, um Ihrer HTML-Seite Code direkt hinzuzufügen:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

Modell

Die MediaPipe-Textklassifikatoraufgabe erfordert ein trainiertes Modell, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu verfügbaren trainierten Modellen für den Textklassifikator finden Sie in der Aufgabenübersicht im Abschnitt „Modelle“.

Wählen Sie ein Modell aus, laden Sie es herunter und speichern Sie es dann in Ihrem Projektverzeichnis:

<dev-project-root>/assets/bert_text_classifier.tflite

Geben Sie den Pfad des Modells mit dem Parameter baseOptions für das modelAssetPath-Objekt an:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Aufgabe erstellen

Verwenden Sie eine der TextClassifier.createFrom...()-Funktionen des Textklassifikators, um die Aufgabe zum Ausführen von Inferenzen vorzubereiten. Sie können die Funktion createFromModelPath() mit einem relativen oder absoluten Pfad zur trainierten Modelldatei verwenden. Im Codebeispiel unten wird die Verwendung der Funktion TextClassifier.createFromOptions() veranschaulicht. Weitere Informationen zu den verfügbaren Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.

Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Konfigurationsoptionen

Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Web- und JavaScript-Anwendungen:

Option Beschreibung Wertebereich Standardwert
displayNamesLocale Legt die Sprache von Labels fest, die für Anzeigenamen bereitgestellt werden, die in den Metadaten des Aufgabenmodells angegeben sind, sofern verfügbar. Der Standardwert für Englisch ist en. Mit der TensorFlow Lite Metadata Writer API können Sie den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen. Sprachcode en
maxResults Legt die optionale maximale Anzahl der Klassifizierungsergebnisse mit den besten Bewertungen fest, die zurückgegeben werden sollen. Wenn < 0, werden alle verfügbaren Ergebnisse zurückgegeben. Beliebige positive Zahlen -1
scoreThreshold Legt den Schwellenwert für den Vorhersagewert fest, der den in den Modellmetadaten angegebenen Grenzwert überschreibt (falls vorhanden). Ergebnisse unter diesem Wert werden abgelehnt. Beliebige Gleitkommazahl Nicht festgelegt
categoryAllowlist Legt die optionale Liste der zulässigen Kategorienamen fest. Wenn das Feld nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename nicht in diesem Set enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option und categoryDenylist schließen sich gegenseitig aus und die Verwendung beider Werte führt zu einem Fehler. Beliebige Strings Nicht festgelegt
categoryDenylist Legt die optionale Liste der nicht zulässigen Kategorienamen fest. Wenn das Feld nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename in diesem Satz enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option und categoryAllowlist schließen sich gegenseitig aus und die Verwendung beider Optionen führt zu einem Fehler. Beliebige Strings Nicht festgelegt

Daten vorbereiten

Der Textklassifikator funktioniert mit Textdaten (String). Die Aufgabe übernimmt die Vorverarbeitung der Dateneingabe, einschließlich Tokenisierung und Tensor-Vorverarbeitung.

Die gesamte Vorverarbeitung erfolgt in der classify()-Funktion. Eine zusätzliche Vorverarbeitung des Eingabetexts ist im Voraus nicht erforderlich.

const inputText = "The input text to be classified.";

Task ausführen

Der Textklassifikator verwendet die classify()-Funktion, um Inferenzen auszulösen. Bei der Textklassifizierung bedeutet dies, dass die möglichen Kategorien für den Eingabetext zurückgegeben werden.

Der folgende Code zeigt, wie die Verarbeitung mit dem Aufgabenmodell ausgeführt wird.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

Ergebnisse verarbeiten und anzeigen

Der Textklassifikator gibt einen TextClassifierResult aus, der die Liste der möglichen Kategorien für den Eingabetext enthält. Die Kategorien werden durch das von Ihnen verwendete Modell definiert. Wenn Sie also andere Kategorien verwenden möchten, wählen Sie ein anderes Modell aus oder trainieren Sie ein vorhandenes Modell neu.

Im Folgenden sehen Sie ein Beispiel für die Ausgabedaten dieser Aufgabe:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

Dieses Ergebnis erhalten Sie durch Ausführen des BERT-Klassifikators für den Eingabetext: "an imperfect but overall entertaining mystery".