Anleitung zum Einbetten von Text unter Android

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:

  1. Klonen Sie das Git-Repository mit dem folgenden Befehl:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. 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.