Mit der Textsuche kann nach semantisch ähnlichem Text in einem Korpus gesucht werden. Funktioniert indem die Suchanfrage in einen hochdimensionalen Vektor eingebettet wird, der die die semantische Bedeutung der Abfrage, gefolgt von der Ähnlichkeitssuche benutzerdefinierter Index mit ScaNN (Skalierbare nächstgelegene Nachbarn).
Im Gegensatz zur Textklassifizierung (z.B. Bert-Klassifikator für natürliche Sprache) Wenn die Anzahl der Elemente, die erkannt werden können, erhöht werden soll, ist kein erneutes Training erforderlich. für das gesamte Modell. Neue Elemente können hinzugefügt werden, indem der Index einfach neu erstellt wird. Dies gilt auch für ermöglicht die Arbeit mit größeren (mehr als 100.000) Elementen.
Verwenden Sie die Task Library TextSearcher
API, um Ihre benutzerdefinierte Textsuche in diesem Bereich bereitzustellen:
für mobile Apps.
Wichtige Features der TextSearcher API
Nimmt einen einzelnen String als Eingabe, führt die Einbettungsextraktion aus und Suche nach dem nächsten Nachbarn im Index.
Eingabetextverarbeitung, einschließlich In-Graph oder Out-of-Graph Wortstück oder Satzsatz Tokenisierungen für Eingabetext.
Vorbereitung
Bevor Sie die TextSearcher
API verwenden können, muss ein Index auf der Grundlage des
benutzerdefinierter Textkorpus für die Suche. Dies kann mithilfe von
Model Maker Searcher API
indem Sie die
Anleitung.
Dazu benötigen Sie Folgendes:
- ein TFLite-Texteinbettungsmodell wie den Universal Sentence Encoder. Für
Beispiel:
<ph type="x-smartling-placeholder">
- </ph>
- die eins in diesem Colab das für On-Device-Inferenz optimiert ist. Es dauert nur 6 ms, eine Abfrage Textstring auf Pixel 6.
- die quantisiert eine. Diese ist kleiner als die oben genannte, aber für jede Einbettung 38 ms benötigt.
- Ihres Textkorpus.
Nach diesem Schritt sollten Sie ein eigenständiges TFLite-Suchmodell haben (z.B.
mobilenet_v3_searcher.tflite
), das ursprüngliche Modell zur Texteinbettung mit
den Index an die
TFLite-Modellmetadaten.
Inferenz in Java ausführen
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei der Suche .tflite
in das Asset-Verzeichnis des Android-
Modul, in dem das Modell ausgeführt wird. Geben Sie an, dass die Datei nicht
komprimiert und fügen Sie die TensorFlow Lite-Bibliothek zum build.gradle
des Moduls hinzu.
Datei:
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'
}
Schritt 2: Modell verwenden
// 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);
Weitere Informationen finden Sie in der
Quellcode und Javadoc
finden Sie weitere Optionen zum Konfigurieren von TextSearcher
.
Inferenz in C++ ausführen
// 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();
Weitere Informationen finden Sie in der
Quellcode
finden Sie weitere Optionen zum Konfigurieren von TextSearcher
.
Inferenz in Python ausführen
Schritt 1: Pypi-Paket für das TensorFlow Lite-Support installieren
Sie können das Pypi-Paket für die TensorFlow Lite-Unterstützung so installieren: Befehl:
pip install tflite-support
Schritt 2: Modell verwenden
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Weitere Informationen finden Sie in der
Quellcode
finden Sie weitere Optionen zum Konfigurieren von TextSearcher
.
Beispielergebnisse
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
Probieren Sie die einfache CLI-Demotool für TextSearcher mit eigenen Modell- und Testdaten.