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.