Narzędzia do osadzania tekstu umożliwiają osadzanie tekstu w wielowymiarowym wektorze cech reprezentującym jego znaczenie semantyczne, który można następnie porównać z wektorem cech innych tekstów w celu oceny ich podobieństwa semantycznego.
W przeciwieństwie do wyszukiwania tekstu , moduł umieszczania tekstu umożliwia obliczanie podobieństwa między tekstami na bieżąco, zamiast przeszukiwać wstępnie zdefiniowany indeks zbudowany z korpusu.
Użyj interfejsu API TextEmbedder
biblioteki zadań, aby wdrożyć niestandardowy moduł osadzania tekstu w aplikacjach mobilnych.
Najważniejsze funkcje interfejsu API TextEmbedder
Przetwarzanie tekstu wejściowego, w tym tokenizacje Wordpiece lub Zdanie na wykresie lub poza wykresem w tekście wejściowym.
Wbudowana funkcja użyteczności do obliczania cosinusa podobieństwa między wektorami cech.
Obsługiwane modele osadzania tekstu
Gwarantujemy kompatybilność następujących modeli z interfejsem API TextEmbedder
.
Modele niestandardowe spełniające wymagania dotyczące kompatybilności modeli .
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 konfiguracji TextEmbedder
.
Uruchom wnioskowanie w Pythonie
Krok 1: Zainstaluj pakiet Pypi obsługujący TensorFlow Lite.
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 konfiguracji TextEmbedder
.
Przykładowe wyniki
Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik od -1 do 1. Im wyższy, tym lepszy, tj. podobieństwo cosinusowe wynoszące 1 oznacza, że oba wektory są identyczne.
Cosine similarity: 0.954312
Wypróbuj proste narzędzie demonstracyjne CLI dla TextEmbedder, korzystając z własnego modelu i danych testowych.
Wymagania dotyczące kompatybilnoś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 można znaleźć 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ładnikami odpowiadającymiN
wymiarom zwróconego wektora cech dla tej warstwy wyjściowej. - Albo 2, albo 4 wymiary, tj.
[1 x N]
lub[1 x 1 x 1 x N]
.
- z
input_process_units dla tokenizera Wordpiece/Sentencepiece
Modele oparte na Universal Sentence Encoder (więcej szczegółów znajdziesz w kodzie źródłowym ):
Dokładnie 3 tensory wejściowe (kTfLiteString)
- Zapytanie o tensor tekstu 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 zapytania z nazwą metadanych „query_encoding”.
- Tensor kodowania odpowiedzi z nazwą metadanych „response_encoding”.
- Obydwa z
N
składnikami odpowiadającymiN
wymiarom zwróconego wektora cech dla tej warstwy wyjściowej. - Oba z 2 lub 4 wymiarami, 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ładnikami odpowiadającymiN
wymiarom zwróconego wektora cech dla tej warstwy wyjściowej. - Albo 2, albo 4 wymiary, tj.
[1 x N]
lub[1 x 1 x 1 x N]
.
- z