Wyszukiwanie tekstowe umożliwia wyszukiwanie tekstu podobnego semantycznie w korpusie. Działa umieszczając wyszukiwane hasło we wektorze wysokowymiarowym, który reprezentuje z znaczeniem semantycznym zapytania, a następnie wyszukiwaniem podobieństwa w zdefiniowanym wstępnie, niestandardowego indeksu za pomocą ScaNN (skalowalne najbliższe sąsiedzi).
W odróżnieniu od klasyfikacji tekstu (np. klasyfikator języka naturalnego Bert), Zwiększenie liczby rozpoznawanych przedmiotów nie wymaga ponownego trenowania dla całego modelu. Nowe elementy można dodawać, tworząc indeks. To także umożliwia pracę z większymi (ponad 100 tys. elementów) korpusami.
Użyj interfejsu Task Library API TextSearcher
, aby wdrożyć w nim niestandardowy mechanizm wyszukiwania tekstu
aplikacji mobilnych.
Najważniejsze funkcje interfejsu TextSearcher API
Jako dane wejściowe pobiera pojedynczy ciąg znaków, przeprowadza wyodrębnianie wektora dystrybucyjnego i wyszukiwanie najbliższych sąsiadów w indeksie.
Przetwarzanie tekstu wejściowego, w tym na wykresie i poza nim WordPress lub Zdanie tokenizacji w tekście wejściowym.
Wymagania wstępne
Zanim użyjesz interfejsu API TextSearcher
, musisz utworzyć indeks na podstawie
niestandardowy korpus tekstu do przeszukania. Można to osiągnąć za pomocą
Interfejs Model Maker Searcher API
Stosując i dostosowując
samouczek.
Potrzebujesz do tego:
- model TFLite do umieszczania tekstu, np. Universal Sentence Encoder. Dla:
przykład,
- jeden przeszkolony(-a) w tym Colab która jest zoptymalizowana pod kątem wnioskowania na urządzeniu. Wysłanie zapytania zajmuje tylko 6 ms ciąg tekstowy na Pixelu 6.
- skwantyzowana która jest mniejsza niż powyżej, ale w każdym z nich trwa 38 ms.
- Twojego korpusu tekstowego.
Po wykonaniu tego kroku musisz mieć samodzielny model wyszukiwania TFLite (np.
mobilenet_v3_searcher.tflite
), czyli pierwotny model umieszczania tekstu, z którym
do indeksu dołączonego do
Metadane modelu TFLite.
Uruchom wnioskowanie w Javie
Krok 1. Zaimportuj zależność Gradle i inne ustawienia
Skopiuj plik modelu wyszukiwarki .tflite
do katalogu zasobów Androida
w którym będzie uruchomiony model. Określ, że plik nie powinien być
skompresować i dodać bibliotekę TensorFlow Lite do modułu build.gradle
plik:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
Krok 2. Korzystanie z modelu
// Initialization
TextSearcherOptions options =
TextSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
TextSearcher textSearcher =
textSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = textSearcher.search(text);
Zobacz
kod źródłowy i javadoc
, aby poznać więcej opcji konfigurowania TextSearcher
.
Uruchom wnioskowanie w C++
// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();
// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();
Zobacz
kod źródłowy
, aby uzyskać więcej opcji konfigurowania TextSearcher
.
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_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Zobacz
kod źródłowy
, aby uzyskać więcej opcji konfigurowania TextSearcher
.
Przykładowe wyniki
Results:
Rank#0:
metadata: The sun was shining on that day.
distance: 0.04618
Rank#1:
metadata: It was a sunny day.
distance: 0.10856
Rank#2:
metadata: The weather was excellent.
distance: 0.15223
Rank#3:
metadata: The cat is chasing after the mouse.
distance: 0.34271
Rank#4:
metadata: He was very happy with his newly bought car.
distance: 0.37703
Wypróbuj prostą Narzędzie demonstracyjne interfejsu wiersza poleceń dla TextSearcher z własnym modelem i danymi testowymi.