Przewodnik umieszczania tekstu w internecie

Zadanie MediaPipe Text Embedder pozwala utworzyć liczbową reprezentację danych tekstowych w celu zebrania ich semantycznego znaczenia. W tych instrukcjach pokazujemy, jak korzystać z kreatora tekstu w przypadku aplikacji internetowych i JavaScript.

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 JavaScripcie do wglądu. Ten kod ułatwia przetestowanie tego zadania i rozpoczęcie tworzenia własnej aplikacji do umieszczania tekstu. Możesz wyświetlać, uruchamiać i edytować przykładowy kod kreatora tekstu za pomocą przeglądarki.

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 dla aplikacji internetowych.

Pakiety JavaScript

Kod do umieszczania tekstu jest dostępny w pakiecie @mediapipe/tasks-text. Te biblioteki możesz znaleźć i pobrać za pomocą linków dostępnych w przewodniku po konfiguracji platformy.

Wymagane pakiety możesz zainstalować za pomocą tego polecenia na potrzeby lokalnego środowiska wykonawczego, korzystając z tego polecenia:

npm install @mediapipe/tasks-text

Jeśli chcesz przeprowadzić wdrożenie na serwerze, możesz użyć usługi sieci dostarczania treści (CDN) takiej jak jsDelivr, aby dodać kod bezpośrednio do strony HTML w ten sposób:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

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 projektu:

<dev-project-root>/app/shared/models

Tworzenie zadania

Aby przygotować zadanie do uruchamiania wnioskowania, użyj 1 z funkcji createFrom...() umieszczania tekstu. Możesz użyć funkcji createFromModelPath() ze ścieżką względną lub bezwzględną do wytrenowanego pliku modelu. W poniższym przykładzie kodu pokazano korzystanie z funkcji createFromOptions(). Więcej informacji o dostępnych opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.

Ten kod pokazuje, jak skompilować i skonfigurować to zadanie:

async function createEmbedder() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textEmbedder = await TextEmbedder.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
      },
      quantize: true
    }
  );
}
createEmbedder();

Opcje konfiguracji

To zadanie ma następujące opcje konfiguracji dla aplikacji internetowych i JavaScript:

Nazwa opcji Opis Zakres wartości Wartość domyślna
l2Normalize 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 l2Normalize. Boolean False

Przygotuj dane

Umieszczony tekst obsługuje dane tekstowe (string). 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.

const inputText = "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ń.

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

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.cosineSimilarity. Oto przykładowy kod.

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

Przykładowy kod do umieszczania tekstu pokazuje, jak wyświetlać wyniki umieszczania zwrócone przez zadanie. Więcej informacji znajdziesz w przykładowym kodzie.