Weź udział w sympozjum Women in ML 7 grudnia Zarejestruj się teraz

Zintegruj elementy do osadzania tekstu.

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Moduły osadzania tekstu umożliwiają osadzanie tekstu w wysokowymiarowym wektorze cech reprezentującym jego znaczenie semantyczne, które można następnie porównać z wektorami cech innych tekstów w celu oceny ich podobieństwa semantycznego.

W przeciwieństwie do wyszukiwania tekstu , narzędzie do osadzania tekstu umożliwia obliczanie podobieństwa między tekstami w locie, zamiast przeszukiwania predefiniowanego indeksu utworzonego z korpusu.

Użyj interfejsu API TextEmbedder biblioteki zadań, aby wdrożyć niestandardowe narzędzie do osadzania tekstu w aplikacjach mobilnych.

Kluczowe cechy TextEmbedder API

Obsługiwane modele osadzania tekstu

Gwarantujemy zgodność następujących modeli z interfejsem API TextEmbedder .

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 TensorFlow Lite Support Pypi.

Możesz zainstalować pakiet TensorFlow Lite Support Pypi za pomocą następującego polecenia:

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 kosinusowe między znormalizowanymi wektorami cech daje wynik między -1 a 1. Im wyższy, tym lepszy, tj. podobieństwo cosinusowe równe 1 oznacza, że ​​oba wektory są identyczne.

Cosine similarity: 0.954312

Wypróbuj proste narzędzie demonstracyjne CLI dla TextEmbedder z własnym modelem i danymi testowymi.

Wymagania dotyczące zgodności modelu

Interfejs API TextEmbedder oczekuje modelu TFLite z obowiązkowymi metadanymi modelu TFLite .

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

  • Modele oparte na BERT (więcej szczegółów w kodzie źródłowym ):

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

      • Tensor identyfikatorów, z nazwą metadanych „ids”,
      • Tensor maski z nazwą metadanych „maska”.
      • Tensor identyfikatorów segmentów z nazwą metadanych „segment_ids”
    • Dokładnie jeden tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)

      • z N składowymi odpowiadającymi wymiarom N zwróconego wektora cech dla tej warstwy wyjściowej.
      • Albo 2 lub 4 wymiary, tj. [1 x N] lub [1 x 1 x 1 x N] .
    • Input_process_units dla Wordpiece/Sentencepiece Tokenizer

  • Modele oparte na Universal Sentence Encoder (więcej szczegółów w kodzie źródłowym ):

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

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

      • Tensor kodowania zapytań z nazwą metadanych „query_encoding”.
      • Tensor kodowania odpowiedzi z nazwą metadanych „response_encoding”.
      • Oba z N składowymi odpowiadającymi wymiarom N zwróconego wektora cech dla tej warstwy wyjściowej.
      • Oba mają 2 lub 4 wymiary, tj. [1 x N] lub [1 x 1 x 1 x N] .
  • Dowolny model osadzania tekstu z:

    • Tensor tekstu wejściowego (kTfLiteString)
    • Co najmniej jeden tensor osadzania wyjścia (kTfLiteUInt8/kTfLiteFloat32)

      • z N składowymi odpowiadającymi wymiarom N zwróconego wektora cech dla tej warstwy wyjściowej.
      • Albo 2 lub 4 wymiary, tj. [1 x N] lub [1 x 1 x 1 x N] .