Anleitung zum Texteinbetten in Python

Mit der Aufgabe „MediaPipe-Texteinbettung“ können Sie eine numerische Darstellung von Textdaten erstellen, um ihre semantische Bedeutung zu erfassen. In dieser Anleitung erfahren Sie, wie Sie den Texteinbetter mit Python verwenden.

Weitere Informationen zu den Funktionen, Modellen und Konfigurationsoptionen dieser Aufgabe finden Sie in der Übersicht.

Codebeispiel

Der Beispielcode für Text Embedder bietet eine vollständige Implementierung dieser Aufgabe in Python zu Referenzzwecken. Mit diesem Code können Sie diese Aufgabe testen und Ihren eigenen Texteinbetter erstellen. Sie können den Beispielcode von Text Embedder einfach über Ihren Webbrowser mit Google Colab ansehen, ausführen und bearbeiten. Sie können sich den Quellcode für dieses Beispiel auf GitHub ansehen.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Codeprojekte speziell für die Verwendung von Text Embedder beschrieben. Allgemeine Informationen zum Einrichten der Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich der Anforderungen an die Plattformversion, finden Sie im Einrichtungsleitfaden für Python.

Pakete

Texteinbetterer verwendet das pip-Paket von mediapipe. So können Sie die Abhängigkeit installieren:

$ python -m pip install mediapipe

Importe

Importieren Sie die folgenden Klassen, um auf die Aufgabenfunktionen für Texteinbettungen zuzugreifen:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

Modell

Die „MediaPipe-Texteinbettung“-Aufgabe erfordert ein trainiertes Modell, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu verfügbaren trainierten Modellen für Text Embedder 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. Sie können das empfohlene UniversalSentenceEncoder-Modell verwenden.

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

Geben Sie den Pfad des Modells innerhalb des Parameters model_asset_path an, wie unten dargestellt:

base_options = BaseOptions(model_asset_path=model_path)

Aufgabe erstellen

Die Aufgabe „MediaPipe-Texteinbettung“ verwendet die Funktion create_from_options, um die Aufgabe einzurichten. Die Funktion create_from_options akzeptiert Werte für Konfigurationsoptionen, um die Einbettungsoptionen 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 trainierten Modelldatei. Weitere Informationen zu Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.

Im folgenden Codebeispiel wird gezeigt, wie diese Aufgabe erstellt und konfiguriert wird.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

Konfigurationsoptionen

Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Python-Anwendungen:

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 keinen nativen L2_NORMALIZATION TFLite-Vorgang enthält. In den meisten Fällen ist dies bereits der Fall und die L2-Normalisierung wird daher durch TFLite-Inferenz erreicht, ohne dass diese Option erforderlich ist. Boolean False
quantize Gibt an, ob die zurückgegebene Einbettung über eine skalare Quantisierung in Byte quantisiert werden soll. Bei Einbettungen wird implizit davon ausgegangen, dass es sich um eine Einheitsnorm handelt. Daher hat jede Dimension garantiert einen Wert bei [-1,0, 1,0]. Sollte dies nicht der Fall sein, verwenden Sie die Option „l2_normalize“. Boolean False

Daten vorbereiten

Der Texteinbetter funktioniert mit Textdaten (str). Die Aufgabe übernimmt die Vorverarbeitung der Dateneingabe, einschließlich Tokenisierung und Tensor-Vorverarbeitung.

Die gesamte Vorverarbeitung erfolgt in der embed-Funktion. Eine zusätzliche Vorverarbeitung des Eingabetexts ist im Voraus nicht erforderlich.

input_text = "The input text to be embedded."

Task ausführen

Der Texteinbetter nutzt die Funktion embed, um Inferenzen auszulösen. Bei der Texteinbettung 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.

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

Ergebnisse verarbeiten und anzeigen

Der Texteinbetter gibt einen TextEmbedderResult aus, der eine Liste der (entweder Gleitkomma- oder skalarquantisierten) Einbettungen für den Eingabetext enthält.

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

Mit der Funktion TextEmbedder.cosine_similarity können Sie die semantische Ähnlichkeit von zwei Einbettungen vergleichen. Im folgenden Code sehen Sie ein Beispiel.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])