Mit der Aufgabe „MediaPipe Text Embedder“ können Sie eine numerische Darstellung von Textdaten erstellen, semantische Bedeutung erfassen. In dieser Anleitung erfahren Sie, wie Sie die Text Embedder mit Android-Apps
Weitere Informationen zu Funktionen, Modellen und Konfigurationsoptionen Sehen Sie sich die Übersicht an.
Codebeispiel
Der MediaPipe Tasks-Beispielcode ist eine einfache Implementierung eines Text Embedders. für Android. In diesem Beispiel werden die semantischen Ähnlichkeiten zwischen zwei ein physisches Android-Gerät oder ein Android-Gerät Emulator.
Du kannst die App als Ausgangspunkt für deine eigene Android-App verwenden oder darauf verweisen wenn Sie eine vorhandene App ändern. Der Beispielcode für Text Embedder wird auf 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 Beispielanwendung „Text Embedder“ verwenden:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Nachdem Sie eine lokale Version des Beispielcodes erstellt haben, können Sie das Projekt importieren in Android Studio ein und führen die App aus. Anweisungen hierzu finden Sie im Einrichtungsleitfaden für Android-Geräte
Schlüsselkomponenten
Die folgenden Dateien enthalten den wichtigen Code für dieses Beispiel eines Texteinbetters Anwendung:
- TextEmbedderHelper.kt: Initialisiert die Texteinbettung und verarbeitet das Modell und delegiert die Auswahl.
- MainActivity.kt: Implementiert die Anwendung und stellt die Komponenten der Benutzeroberfläche zusammen.
Einrichtung
In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Codeprojekte für die Nutzung von Text Embedder. Allgemeine Informationen zu Einrichten Ihrer Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich Anforderungen an die Plattformversion finden Sie im Einrichtungsleitfaden für Android-Geräte
<ph type="x-smartling-placeholder">Abhängigkeiten
Der Texteinbetter verwendet die com.google.mediapipe:tasks-text
-Bibliotheken. Dieses Element hinzufügen
Abhängigkeit zur Datei build.gradle
Ihres Android-App-Entwicklungsprojekts.
Sie können die erforderlichen Abhängigkeiten mit dem folgenden Code importieren:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Modell
Für die Aufgabe „MediaPipe Text Embedder“ ist ein trainiertes Modell erforderlich, für die Aufgabe. Weitere Informationen zu verfügbaren trainierten Modellen für Text Embedder finden Sie unter in der Aufgabenübersicht im Abschnitt „Modelle“.
Wählen Sie das Modell aus, laden Sie es herunter und speichern Sie es dann in Ihrem Projektverzeichnis:
<dev-project-root>/src/main/assets
Geben Sie den Pfad des Modells innerhalb des Parameters ModelAssetPath
an. Im
Beispielcode haben, wird das Modell in der setupTextEmbedder()
-Funktion im
TextEmbedderHelper.kt
Datei:
Mit der Funktion BaseOptions.Builder.setModelAssetPath()
den Pfad angeben
die vom Modell verwendet werden. Diese Methode wird im Codebeispiel in den
.
Aufgabe erstellen
Sie können die Aufgabe mit einer der createFrom...()
-Funktionen erstellen. Die
Die Funktion createFromOptions()
akzeptiert Konfigurationsoptionen, um den Einbettungscode festzulegen
Optionen. Sie können die Aufgabe auch mit der createFromFile()
-Factory initialisieren
. Die Funktion createFromFile()
akzeptiert einen relativen oder absoluten Pfad zu
die Datei mit dem trainierten Modell. Weitere Informationen zu Konfigurationsoptionen finden Sie unter
Konfigurationsoptionen.
Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
Die Beispielcode-Implementierung legt die Optionen für Texteinbettungen in der
setupTextEmbedder()
in der Spalte
TextEmbedderHelper.kt
-Datei.
Konfigurationsoptionen
Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Android-Apps:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
l2_normalize |
Gibt an, ob der zurückgegebene Featurevektor mit der L2-Norm normalisiert werden soll. Verwenden Sie diese Option nur, wenn das Modell noch keine native L2_NORMALIZATION TFLite Op. In den meisten Fällen ist dies bereits der Fall und Die L2-Normalisierung wird somit über TFLite-Inferenz ohne Notwendigkeit erreicht. für diese Option. | Boolean |
False |
quantize |
Ob die zurückgegebene Einbettung in Byte quantisiert werden soll mithilfe von eine skalare Quantisierung. Bei Einbettungen wird implizit angenommen, Daher hat jede Dimension garantiert einen Wert in [-1,0; 1,0]. Verwenden Sie die Option „l2_normalize“ verwenden, wenn dies nicht der Fall ist. | Boolean |
False |
Daten vorbereiten
Der Texteinbetter arbeitet mit Textdaten (String
). Die Aufgabe verarbeitet die Dateneingabe
Vorverarbeitung, einschließlich Tokenisierung und Tensor-Vorverarbeitung. Alle
erfolgt die Vorverarbeitung in der Funktion embed()
. Es ist nicht nötig,
zusätzliche Vorverarbeitung des Eingabetexts.
val inputText = "The input text to be embedded."
Aufgabe ausführen
Der Texteinbetter verwendet die Funktion embed
, um Inferenzen auszulösen. Für Text
Einbettung, bedeutet dies, dass die Einbettungsvektoren für den Eingabetext zurückgegeben werden.
Der folgende Code zeigt, wie die Verarbeitung mit dem Aufgabenmodell ausgeführt wird.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
Im Beispielcode wird die Funktion embed
im
TextEmbedderHelper.kt
-Datei.
Ergebnisse verarbeiten und anzeigen
Beim Ausführen der Inferenz gibt die Aufgabe „Text Embedder“ Folgendes zurück: TextEmbedderResult
das eine Liste von Einbettungen (entweder Gleitkomma- oder
skalar quantisiert) für den Eingabetext verwendet.
Im Folgenden sehen Sie ein Beispiel für die Ausgabedaten dieser Aufgabe:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Sie können die semantische Ähnlichkeit zweier Einbettungen mit der Funktion
TextEmbedder.cosineSimilarity
. Der folgende Code zeigt ein Beispiel.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
Im Beispielcode wird die Funktion TextEmbedder.cosineSimilarity()
im
TextEmbedderHelper.kt
-Datei.