Mit der Aufgabe „Textklassifikator“ können Sie Text in bestimmte Kategorien unterteilen, wie positive oder negative Stimmungen. Die Kategorien basieren auf und wie es trainiert wurde. In dieser Anleitung erfahren Sie, wie Sie den Textklassifikator in iOS-Apps verwenden. Das hier beschriebene Codebeispiel finden Sie unter GitHub
Sie können diese Aufgabe in Aktion sehen, indem Sie dieses Web- Für über die Funktionen, Modelle und Konfigurationsoptionen finden Sie in der Übersicht:
Codebeispiel
Der Beispielcode von MediaPipe Tasks ist eine einfache Implementierung eines Textklassifikators. App für iOS.
Du kannst die App als Ausgangspunkt für deine eigene iOS-App verwenden oder darauf verweisen wenn Sie eine vorhandene App ändern. Sehen Sie sich dazu den Beispielcode des Textklassifikators an. am GitHub
Code herunterladen
In der folgenden Anleitung erfahren Sie, wie Sie eine lokale Kopie des Beispiels erstellen. mit dem Befehlszeilentool git erstellen.
<ph type="x-smartling-placeholder">So laden Sie den Beispielcode herunter:
Klonen Sie das Git-Repository mit dem folgenden Befehl:
git clone https://github.com/google-ai-edge/mediapipe-samples
Konfigurieren Sie optional Ihre Git-Instanz für den Sparse-Checkout, damit Sie nur die Dateien für die Textklassifikator-Beispiel-App:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Nachdem Sie eine lokale Version des Beispielcodes erstellt haben, können Sie den MediaPipe-Aufgabenbibliothek, öffnen Sie das Projekt mit Xcode und führen Sie die App aus. Für finden Sie im Einrichtungsleitfaden für iOS.
Schlüsselkomponenten
Die folgenden Dateien enthalten den wichtigen Code für das Beispiel des Textklassifikators Anwendung:
- TextClassifierHelper.swift: Initialisiert den Textklassifikator und übernimmt die Modellauswahl.
- ViewController.swift: Implementiert die UI und formatiert die Ergebnisse.
Einrichtung
In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und für die Verwendung des Textklassifikators. Allgemeine Informationen zum Einrichten der Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich Plattformversion finden Sie im Einrichtungsleitfaden für iOS.
<ph type="x-smartling-placeholder">Abhängigkeiten
Der Textklassifikator verwendet die Bibliothek MediaPipeTasksText
, die installiert werden muss
mit CocoaPods. Die Bibliothek ist sowohl mit Swift- als auch mit Objective-C-Apps kompatibel.
und erfordert keine zusätzliche sprachspezifische Einrichtung.
Eine Anleitung zur Installation von CocoaPods unter macOS findest du im Artikel zu CocoaPods
Installationsanleitung.
Eine Anleitung zum Erstellen eines Podfile
mit den für Ihr Projekt erforderlichen Pods
erhalten Sie unter Verwendung
CocoaPods
Fügen Sie mit dem folgenden Code den Pod „MediaPipeTasksText“ in Podfile
ein:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Falls Ihre App Einheitentestziele enthält, lesen Sie den Einrichtungsleitfaden für
iOS: Weitere Informationen zur Einrichtung
Dein Podfile
.
Modell
Für die Aufgabe „Textklassifikator“ von MediaPipe ist ein trainiertes Modell erforderlich, bei dieser Aufgabe. Weitere Informationen zu den verfügbaren trainierten Modellen für Textklassifikator, siehe Aufgabenübersicht Modelle .
Wählen Sie ein Modell aus, laden Sie es herunter und fügen Sie es mit Xcode Ihrem Projektverzeichnis hinzu. Eine Anleitung zum Hinzufügen von Dateien zu Ihrem Xcode-Projekt finden Sie unter Verwalten von Dateien und Ordner in Ihrem Xcode Projekt.
Verwenden Sie das Attribut BaseOptions.modelAssetPath
, um den Pfad zum Modell anzugeben
in deinem App Bundle. Ein Codebeispiel finden Sie im nächsten Abschnitt.
Aufgabe erstellen
Sie können die Textklassifikatoraufgabe erstellen, indem Sie einen seiner Initialisierer aufrufen. Die
Der TextClassifier(options:)
-Initialisierer legt Werte für die Konfiguration fest.
Optionen.
Wenn Sie keinen Textklassifikator benötigen, der mit einer benutzerdefinierten Konfiguration initialisiert wurde
können Sie mit dem TextClassifier(modelPath:)
-Initialisierer ein
Textklassifikator mit den Standardoptionen. Weitere Informationen zur Konfiguration
finden Sie unter Konfigurationsübersicht.
Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
Konfigurationsoptionen
Diese Aufgabe bietet die folgenden Konfigurationsoptionen für iOS-Apps:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
displayNamesLocale |
Legt die Sprache der Labels fest, die für Anzeigenamen in der
Metadaten des Aufgabenmodells, falls verfügbar. Standardwert ist en für
Englisch. Sie können den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen
mit der TensorFlow Lite Metadata Writer API
| Gebietsschemacode | de |
maxResults |
Legt die optionale maximale Anzahl der am besten bewerteten Klassifizierungsergebnisse fest auf zurückgeben. Wenn < 0 setzen, werden alle verfügbaren Ergebnisse zurückgegeben. | Beliebige positive Zahlen | -1 |
scoreThreshold |
Legt den Schwellenwert für die Vorhersagepunktzahl fest, der den Wert in die Modellmetadaten (falls vorhanden). Ergebnisse unter diesem Wert werden abgelehnt. | Beliebiger Gleitkommawert | Nicht festgelegt |
categoryAllowlist |
Legt die optionale Liste der zulässigen Kategorienamen fest. Wenn das Feld nicht leer ist,
Klassifizierungsergebnisse, deren Kategoriename nicht in dieser Gruppe enthalten ist, werden
herausgefiltert. Doppelte oder unbekannte Kategorienamen werden ignoriert.
Diese Option schließt sich mit categoryDenylist gegenseitig aus und verwendet
führt beides zu einem Fehler. |
Alle Strings | Nicht festgelegt |
categoryDenylist |
Legt die optionale Liste der unzulässigen Kategorienamen fest. Wenn
nicht leer ist, werden Klassifizierungsergebnisse gefiltert, deren Kategoriename in diesem Satz enthalten ist.
aus. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option
ausschließlich mit categoryAllowlist und die Verwendung beider führt zu einem Fehler. |
Alle Strings | Nicht festgelegt |
Daten vorbereiten
Der Textklassifikator funktioniert mit Textdaten. Die Aufgabe verarbeitet die Dateneingabe Vorverarbeitung, einschließlich Tokenisierung und Tensor-Vorverarbeitung.
Die gesamte Vorverarbeitung erfolgt über die Funktion classify(text:)
. Es gibt keine
eine zusätzliche Vorverarbeitung des Eingabetexts.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
Aufgabe ausführen
Verwenden Sie die Methode classify(text:)
, um den Textklassifikator auszuführen. Textklassifikator
gibt die möglichen Kategorien für den Eingabetext zurück.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Hinweis: Die Aufgabe blockiert den aktuellen Thread, bis die Inferenz ausgeführt wird. auf den Text. Um das Blockieren des aktuellen Threads zu vermeiden, führen Sie die Verarbeitung in einem Hintergrundthread mit iOS Versand oder NSOperation Frameworks.
Ergebnisse verarbeiten und anzeigen
Beim Ausführen einer Inferenz gibt die Textklassifikatoraufgabe ein TextClassifierResult
zurück.
-Objekt, das die Liste der möglichen Kategorien für den Eingabetext enthält. Die
Kategorien werden durch das verwendete Modell definiert. Wenn Sie
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, indem Sie den BERT-Klassifikator für den Eingabetext ausgeführt haben:
"an imperfect but overall entertaining mystery"
Die ViewController.swift im Beispielcode, der zeigt, wie die Erkennungsergebnisse angezeigt werden die von der Aufgabe zurückgegeben wurden.