Narzędzia do tworzenia wektorów dystrybucyjnych 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, aby ocenić ich podobieństwo semantyczne.
W przeciwieństwie do wyszukiwania tekstowego moduł do osadzania tekstu umożliwia obliczanie podobieństwa między tekstami na bieżąco, zamiast przeszukiwania wstępnie zdefiniowanego indeksu utworzonego na podstawie korpusu.
Użyj interfejsu Task Library TextEmbedder API, aby wdrożyć niestandardowy moduł do osadzania tekstu w aplikacjach mobilnych.
Kluczowe funkcje interfejsu TextEmbedder API
Przetwarzanie tekstu wejściowego, w tym tokenizacja Wordpiece lub Sentencepiece w grafie lub poza nim.
Wbudowana funkcja narzędziowa do obliczania podobieństwa cosinusowego między wektorami cech.
Obsługiwane modele wektorów dystrybucyjnych tekstu
Te modele są zgodne z TextEmbedderAPI.
modele niestandardowe, które spełniają wymagania dotyczące zgodności modeli;
Uruchamianie wnioskowania 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());
Więcej opcji konfigurowania TextEmbedder znajdziesz w kodzie źródłowym.
Uruchamianie wnioskowania w Pythonie
Krok 1. Zainstaluj pakiet TensorFlow Lite Support Pypi.
Pakiet TensorFlow Lite Support Pypi możesz zainstalować za pomocą tego 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)
Więcej opcji konfigurowania TextEmbedder znajdziesz w kodzie źródłowym.
Przykładowe wyniki
Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik z zakresu od -1 do 1. Im wyższa wartość, tym lepiej. Podobieństwo cosinusowe równe 1 oznacza, że 2 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 modeli
Interfejs TextEmbedder API oczekuje modelu TFLite z obowiązkowymi metadanymi modelu TFLite.
Obsługiwane są 3 główne typy modeli:
Modele oparte na BERT (więcej informacji znajdziesz w kodzie źródłowym):
Dokładnie 3 tensory wejściowe (kTfLiteString)
tensor identyfikatorów o nazwie metadanych „ids”,
Tensor maski z nazwą metadanych „mask”.
Tensor identyfikatorów segmentów z nazwą metadanych „segment_ids”
Dokładnie 1 tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)
z
Nkomponentami odpowiadającymiNwymiarom zwróconego wektora cech dla tej warstwy wyjściowej.Może to być 2 lub 4 wymiary, czyli
[1 x N]lub[1 x 1 x 1 x N].Jednostki input_process_units dla tokenizera Wordpiece/Sentencepiece
Modele oparte na Universal Sentence Encoder (więcej informacji znajdziesz w kodzie źródłowym):
Dokładnie 3 tensory wejściowe (kTfLiteString)
Tensor tekstu zapytania z nazwą metadanych „inp_text”.
Tensor kontekstu odpowiedzi o nazwie metadanych „res_context”.
Tensor tekstu odpowiedzi z nazwą 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 mają komponenty
Nodpowiadające wymiaromNzwróconego wektora cech dla tej warstwy wyjściowej.Oba z 2 lub 4 wymiarami, czyli
[1 x N]lub[1 x 1 x 1 x N].
dowolny model wektorów dystrybucyjnych tekstu, który:
- Tensor tekstu wejściowego (kTfLiteString)
Co najmniej 1 tensor osadzania danych wyjściowych (kTfLiteUInt8/kTfLiteFloat32)
z
Nkomponentami odpowiadającymiNwymiarom zwróconego wektora cech dla tej warstwy wyjściowej.Może to być 2 lub 4 wymiary, czyli
[1 x N]lub[1 x 1 x 1 x N].