Leitfaden zur Textklassifizierung für das Web

Mit der MediaPipe Text Classifier-Aufgabe können Sie Text in eine Reihe definierter Kategorien klassifizieren, z. B. in positive oder negative Stimmung. Die Kategorien hängen vom verwendeten Modell und davon ab, wie das Modell trainiert wurde. In dieser Anleitung erfahren Sie, wie Sie den Text Classifier für Web- und JavaScript-Apps verwenden.

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

Codebeispiel

Der Beispielcode für den Textklassifikator enthält eine vollständige Implementierung dieser Aufgabe in JavaScript. Mit diesem Code können Sie diese Aufgabe testen und mit der Entwicklung Ihrer eigenen Textklassifizierungs-App beginnen. Sie können das Beispiel für die Textklassifizierung einfach in Ihrem Webbrowser aufrufen, ausführen und bearbeiten.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Ihrer Codeprojekte für die Verwendung von Text Classifier beschrieben. Allgemeine Informationen zum Einrichten Ihrer Entwicklungsumgebung für die Verwendung von MediaPipe Tasks, einschließlich der Anforderungen an die Plattformversion, finden Sie im Einrichtungshandbuch für Web.

JavaScript-Pakete

Der Code für den Textklassifikator ist über das Paket @mediapipe/tasks-text verfügbar. Sie können diese Bibliotheken über die Links im Einrichtungsleitfaden der Plattform aufrufen und herunterladen.

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

npm install @mediapipe/tasks-text

Wenn Sie die Bereitstellung auf einem Server vornehmen möchten, können Sie einen CDN-Dienst (Content Delivery Network) wie jsDelivr verwenden, um Code direkt in Ihre HTML-Seite einzufügen:

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

Modell

Für die MediaPipe Text Classifier-Aufgabe ist ein trainiertes Modell erforderlich, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu den 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 in Ihrem Projektverzeichnis:

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

Geben Sie den Pfad des Modells mit dem baseOptions-Objektparameter modelAssetPath an, wie unten dargestellt:

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

Aufgabe erstellen

Verwenden Sie eine der Text Classifier-Funktionen TextClassifier.createFrom...(), um die Aufgabe für die Ausführung von Inferenz zu vorbereiten. Sie können die Funktion createFromModelPath() mit einem relativen oder absoluten Pfad zur trainierten Modelldatei verwenden. Das folgende Codebeispiel zeigt die Verwendung der Funktion TextClassifier.createFromOptions(). Weitere Informationen zu den verfügbaren Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.

Der folgende Code zeigt, wie Sie diese Aufgabe erstellen und konfigurieren:

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

Für diese Aufgabe sind die folgenden Konfigurationsoptionen für Web- und JavaScript-Anwendungen verfügbar:

Option Beschreibung Wertebereich Standardwert
displayNamesLocale Legt die Sprache der Labels fest, die für Anzeigenamen verwendet werden sollen, die in den Metadaten des Modells der Aufgabe angegeben sind, sofern verfügbar. Der Standardwert ist en für Englisch. Sie können den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen. Verwenden Sie dazu die TensorFlow Lite Metadata Writer API. Gebietsschemacode de
maxResults Legt die optionale maximale Anzahl der zurückzugebenden Klassifizierungsergebnisse mit der höchsten Punktzahl fest. Wenn der Wert < 0 ist, werden alle verfügbaren Ergebnisse zurückgegeben. Beliebige positive Zahlen -1
scoreThreshold Legt den Vorhersagewert-Schwellenwert fest, der den in den Modellmetadaten angegebenen Wert überschreibt (falls vorhanden). Ergebnisse unter diesem Wert werden abgelehnt. Beliebiger Gleitkommawert Nicht festgelegt
categoryAllowlist Legt die optionale Liste der zulässigen Kategorienamen fest. Wenn nicht leer, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename nicht in dieser Menge enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option schließt categoryDenylist aus. Wenn Sie beide verwenden, wird ein Fehler ausgegeben. Beliebige Strings Nicht festgelegt
categoryDenylist Legt die optionale Liste der Kategorienamen fest, die nicht zulässig sind. Wenn nicht leer, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename in dieser Menge enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option schließt categoryAllowlist aus. Wenn Sie beide verwenden, wird ein Fehler ausgegeben. Beliebige Strings Nicht festgelegt

Daten vorbereiten

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

Die gesamte Vorverarbeitung erfolgt in der Funktion classify(). Der Eingabetext muss nicht zusätzlich vorverarbeitet werden.

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

Aufgabe ausführen

Der Textklassifikator verwendet die Funktion classify(), um Inferenzvorgänge auszulösen. Bei der Textklassifizierung bedeutet das, dass die möglichen Kategorien für den eingegebenen Text 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 ein TextClassifierResult aus, das die Liste der möglichen Kategorien für den Eingabetext enthält. Die Kategorien werden durch das verwendete Modell definiert. Wenn Sie andere Kategorien benötigen, 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 wurde durch Ausführen des BERT-Klassifikators für den Eingabetext: "an imperfect but overall entertaining mystery".