Przewodnik umieszczania tekstu w Pythonie

Zadanie MediaPipe Text Embedder pozwala utworzyć liczbową reprezentację danych tekstowych w celu zebrania ich semantycznego znaczenia. Te instrukcje pokazują, jak korzystać z narzędzia do umieszczania tekstu w Pythonie.

Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w sekcji Omówienie.

Przykładowy kod

Przykładowy kod narzędzia do umieszczania tekstu zawiera pełną implementację tego zadania w Pythonie dla ułatwienia. Ten kod pomoże Ci przetestować to zadanie i rozpocząć tworzenie własnego narzędzia do umieszczania tekstu. Google Colab umożliwia wyświetlanie, uruchamianie i edytowanie przykładowego kodu kreatora tekstu w przeglądarce. Kod źródłowy tego przykładu znajdziesz na GitHub.

Konfiguracja

W tej sekcji znajdziesz opis kluczowych kroków, które należy wykonać, aby skonfigurować środowisko programistyczne i projekty kodu związane z umieszczaniem tekstu. Ogólne informacje o konfigurowaniu środowiska programistycznego na potrzeby zadań MediaPipe, w tym o wymaganiach dotyczących wersji platformy, znajdziesz w przewodniku konfiguracji języka Python.

Pakiety

Umieszczony tekst korzysta z pakietu mediapipe pip. Możesz zainstalować zależność, używając tego kodu:

$ python -m pip install mediapipe

Importowane dane

Aby uzyskać dostęp do funkcji zadania umieszczania tekstu, zaimportuj następujące klasy:

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

Model

Zadanie MediaPipe Text Embedder wymaga wytrenowanego modelu zgodnego z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach do umieszczania tekstu znajdziesz w sekcji poświęconej modelom – omówieniem zadań.

Wybierz i pobierz model, a następnie zapisz go w katalogu lokalnym. Możesz użyć zalecanego modelu UniversalSentenceEncoder.

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

Określ ścieżkę modelu w parametrze model_asset_path, jak poniżej:

base_options = BaseOptions(model_asset_path=model_path)

Tworzenie zadania

Zadanie do umieszczania tekstu MediaPipe konfiguruje to zadanie za pomocą funkcji create_from_options. Funkcja create_from_options akceptuje wartości opcji konfiguracji, aby ustawić opcje umieszczania. Możesz też zainicjować zadanie za pomocą funkcji fabrycznej create_from_model_path. Funkcja create_from_model_path akceptuje ścieżkę względną lub bezwzględną do wytrenowanego pliku modelu. Więcej informacji o opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.

Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.

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)

Opcje konfiguracji

To zadanie ma następujące opcje konfiguracji aplikacji w Pythonie:

Nazwa opcji Opis Zakres wartości Wartość domyślna
l2_normalize Określa, czy znormalizować zwrócony wektor cech z normą L2. Użyj tej opcji tylko wtedy, gdy model nie zawiera jeszcze natywnej operacji L2_NORMALIZATION TFLite. W większości przypadków tak się dzieje i w ten sposób można uzyskać normalizację L2 za pomocą wnioskowania TFLite bez potrzeby użycia tej opcji. Boolean False
quantize Określa, czy zwrócone umieszczenie ma zostać poddane kwantyzacji do liczby bajtów za pomocą kwantyzacji skalarnej. Osadzone elementy są domyślnie uznawane za normę jednostki, dlatego każdy wymiar na pewno ma wartość [-1,0, 1,0]. Jeśli tak nie jest, użyj opcji l2_normalize. Boolean False

Przygotuj dane

Umieszczony tekst obsługuje dane tekstowe (str). To zadanie obsługuje wstępne przetwarzanie danych wejściowych, w tym tokenizację i wstępne przetwarzanie tensorów.

Przetwarzanie wstępne jest realizowane w ramach funkcji embed. Nie ma potrzeby wcześniejszego wstępnego przetwarzania tekstu wejściowego.

input_text = "The input text to be embedded."

Uruchamianie zadania

Umieszczony tekst używa funkcji embed do aktywowania wnioskowania. W przypadku umieszczania tekstu oznacza to zwrócenie wektorów reprezentacji dla tekstu wejściowego.

Poniższy kod pokazuje, jak wykonywać przetwarzanie za pomocą modelu zadań.

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

Obsługa i wyświetlanie wyników

Narzędzie do umieszczania tekstu generuje obiekt TextEmbedderResult zawierający listę elementów osadzonych (zmiennoprzecinkowych lub skalarnych) dla tekstu wejściowego.

Poniżej znajdziesz przykład danych wyjściowych z tego zadania:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

Możesz porównać semantyczne podobieństwo 2 wektorów dystrybucyjnych za pomocą funkcji TextEmbedder.cosine_similarity. Oto przykładowy kod.

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