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. In dieser Anleitung erfahren Sie, wie Sie den Textklassifikator mit Python verwenden.
Sie können diese Aufgabe in Aktion sehen, indem Sie sich die Webdemo 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 Python. Mit diesem Code können Sie diese Aufgabe testen und Ihre eigene Textklassifizierungsanwendung erstellen. Sie können den Beispielcode für den Textklassifikator nur in Ihrem Webbrowser aufrufen, ausführen und bearbeiten.
Wenn Sie den Textklassifikator für Raspberry Pi implementieren, sehen Sie sich die Beispiel-App für Raspberry Pi an.
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 Python.
Pakete
Der Textklassifikator verwendet das mediapipe-Paket pip. Sie können diese Abhängigkeiten so installieren:
$ python -m pip install mediapipe
Importe
Importieren Sie die folgenden Klassen, um auf die Aufgabenfunktionen des Textklassifikators zuzugreifen:
from mediapipe.tasks import python
from mediapipe.tasks.python import text
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 einem lokalen Verzeichnis:
model_path = '/absolute/path/to/text_classifier.tflite'
Geben Sie den Pfad des Modells mit dem Parameter BaseOptions
für das model_asset_path
-Objekt an:
base_options = BaseOptions(model_asset_path=model_path)
Aufgabe erstellen
Die „MediaPipe-Textklassifikator“-Aufgabe verwendet die create_from_options
-Funktion, um die Aufgabe einzurichten. Die Funktion create_from_options
akzeptiert Werte für Konfigurationsoptionen, um die Klassifikatoroptionen festzulegen. Sie können die Aufgabe auch mit der Factory-Funktion create_from_model_path
initialisieren. Die Funktion create_from_model_path
akzeptiert einen relativen oder absoluten Pfad zur Datei des trainierten Modells.
Weitere Informationen zu Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.
Im folgenden Codebeispiel wird gezeigt, wie diese Aufgabe erstellt und konfiguriert wird.
base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)
with python.text.TextClassifier.create_from_options(options) as classifier:
classification_result = classifier.classify(text)
Konfigurationsoptionen
Diese Aufgabe umfasst die folgenden Konfigurationsoptionen für Android-Apps:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
display_names_locale |
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 |
max_results |
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 |
score_threshold |
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 |
category_allowlist |
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 category_denylist schließen sich gegenseitig aus und die Verwendung beider Werte führt zu einem Fehler. |
Beliebige Strings | Nicht festgelegt |
category_denylist |
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 category_allowlist 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 (str
). 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.
input_text = '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.
with python.text.TextClassifier.create_from_options(options) as classifier:
classification_result = classifier.classify(text)
Ergebnisse verarbeiten und anzeigen
Der Textklassifikator gibt ein TextClassifierResult
-Objekt aus, das eine Liste möglicher 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"
.