Integracja z umieszczaniem tekstu.

Odtwarzacze tekstu umożliwiają wstawianie tekstu do wysokowymiarowego wektora cech reprezentujące jego znaczenie semantyczne, które można następnie porównać z funkcją wektora innych tekstów, aby ocenić ich podobieństwo semantyczne.

W przeciwieństwie do wyszukiwanie tekstowe, narzędzie do umieszczania tekstu pozwala na bieżąco obliczać podobieństwo tekstu zamiast przeszukiwać wstępnie zdefiniowany indeks utworzony na podstawie korpusu.

Użyj interfejsu Task Library API TextEmbedder, aby wdrożyć w niej własny komponent do umieszczania tekstu aplikacji mobilnych.

Najważniejsze funkcje interfejsu TextEmbedder API

  • Przetwarzanie tekstu wejściowego, w tym na wykresie i poza nim WordPress lub Zdanie tokenizacji w tekście wejściowym.

  • Wbudowaną funkcję użytkową do obliczania podobieństwo cosinusowe między wektory cech.

Obsługiwane modele umieszczania tekstu

Te modele gwarantują zgodność z modelem TextEmbedder API.

Uruchom wnioskowanie w C++

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

Zobacz kod źródłowy , aby uzyskać więcej opcji konfigurowania TextEmbedder.

Uruchom wnioskowanie w Pythonie

Krok 1. Zainstaluj pakiet Pypi Support TensorFlow Lite.

Możesz zainstalować pakiet Pypi Support Pypi na TensorFlow Lite za pomocą: polecenie:

pip install tflite-support

Krok 2. Korzystanie z modelu

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

Zobacz kod źródłowy , aby uzyskać więcej opcji konfigurowania TextEmbedder.

Przykładowe wyniki

Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik od -1 oraz 1. Im większe, tym lepsze, czyli podobieństwo cosinusowe rzędu 1 oznacza, że 2 wektory są identyczna.

Cosine similarity: 0.954312

Wypróbuj prostą Narzędzie interfejsu wiersza poleceń dla TextEmbedder z własnym modelem i danymi testowymi.

Wymagania dotyczące zgodności z modelem

Interfejs API TextEmbedder wymaga modelu TFLite z obowiązkowym ustawieniem Metadane modelu TFLite.

Obsługiwane są 3 główne typy modeli:

  • Modele oparte na BERT (zobacz kod źródłowy :

    • Dokładnie 3 tensory wejściowe (kTfLiteString)

      • Identyfikuje tensor o nazwie metadanych „ids”,
      • Tensor maski o nazwie metadanych „mask”.
      • Tensor identyfikatorów segmentów o nazwie metadanych „segment_ids”
    • Dokładnie jeden tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)

      • z komponentami N odpowiadającymi wymiarom N funkcji zwrócony wektor cech dla tej warstwy wyjściowej.
      • Dostępne są 2 lub 4 wymiary, np. [1 x N] lub [1 x 1 x 1 x N].
    • Wartość wejściowa_process_units dla tokenizatora tekstu Wordpiece/zdania

  • Modele oparte na koderze Universal Sentence Encoder (zobacz kod źródłowy :

    • Dokładnie 3 tensory wejściowe (kTfLiteString)

      • Tensor tekstu zapytania o nazwie metadanych „inp_text”.
      • Tensor kontekstu odpowiedzi z nazwą metadanych „res_context”.
      • Tensor tekstu odpowiedzi o nazwie metadanych „res_text”.
    • Dokładnie 2 tensory wyjściowe (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor kodowania zapytania o nazwie metadanych „query_encoding”.
      • Tensor kodowania odpowiedzi o nazwie metadanych „response_encoding”.
      • Oba z komponentami N odpowiadającymi wymiarom N funkcji zwrócony wektor cech dla tej warstwy wyjściowej.
      • Oba z 2 lub 4 wymiarami, np. [1 x N] lub [1 x 1 x 1 x N].
  • Dowolny model umieszczania tekstu z:

    • Tensor tekstu wejściowego (kTfLiteString)
    • Co najmniej 1 tensor wektora dystrybucyjnego wyjściowego (kTfLiteUInt8/kTfLiteFloat32)

      • z komponentami N odpowiadającymi wymiarom N funkcji zwrócony wektor cech dla tej warstwy wyjściowej.
      • Dostępne są 2 lub 4 wymiary, np. [1 x N] lub [1 x 1 x 1 x N].