La ricerca testuale consente di cercare testo semanticamente simile in un corpus. Funziona incorporando la query di ricerca in un vettore ad alta dimensionalità che rappresenta significato semantico della query, seguito dalla ricerca di somiglianze in un un indice personalizzato utilizzando ScaNN (vicinati più vicini scalabili).
In contrapposizione alla classificazione del testo (ad es. classificatore del linguaggio naturale di Bert), l'espansione del numero di elementi che possono essere riconosciuti non richiede il riaddestramento dell'intero modello. È possibile aggiungere nuovi elementi semplicemente ricreando l'indice. Anche questo consente di lavorare con corpus più grandi (oltre 100.000 elementi).
Utilizza l'API TextSearcher
della libreria di attività per eseguire il deployment dello strumento di ricerca di testo personalizzato in
le tue app mobile.
Funzionalità principali dell'API TextSearcher
Prende una singola stringa come input, esegue l'estrazione di incorporamento e la ricerca del vicino più prossimo nell'indice.
Elaborazione del testo di input, incluso all'interno o fuori dal grafico Parrucchiere o Fondamentale tokenizzazioni sul testo di input.
Prerequisiti
Prima di utilizzare l'API TextSearcher
, è necessario creare un indice basato sul
un corpus di testo personalizzato in cui eseguire la ricerca. È possibile farlo utilizzando
API Model Maker Searcher
seguendo e adattando le
tutorial.
Per farlo avrai bisogno di:
- un modello di incorporamento di testo TFLite, come Universal Fraence Encoder. Per
un esempio,
- il uno riaddestrato in questo Colab ottimizzato per l'inferenza on-device. Bastano 6 ms per eseguire query stringa di testo su Pixel 6.
- il quantizzato una, che è più piccola di quella indicata sopra, ma richiede 38 ms per ogni incorporamento.
- il tuo corpus di testo.
Dopo questo passaggio, dovresti avere un modello di ricerca TFLite autonomo (ad es.
mobilenet_v3_searcher.tflite
), che è il modello di incorporamento di testo originale con
l'indice collegato
Metadati del modello TFLite.
Esegui l'inferenza in Java
Passaggio 1: importa la dipendenza da Gradle e altre impostazioni
Copia il file del modello dell'utente che ha eseguito la ricerca .tflite
nella directory degli asset di Android
in cui verrà eseguito il modello. Specifica che il file non deve essere
compresso e aggiungi la libreria TensorFlow Lite al file build.gradle
del modulo
file:
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'
}
Passaggio 2: utilizzo del modello
// 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);
Consulta le
codice sorgente e javadoc
per visualizzare altre opzioni di configurazione di TextSearcher
.
Esegui l'inferenza in 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();
Consulta le
codice sorgente
per altre opzioni di configurazione di TextSearcher
.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto Pypi di assistenza TensorFlow Lite
Puoi installare il pacchetto Pypi di assistenza TensorFlow Lite utilizzando quanto segue :
pip install tflite-support
Passaggio 2: utilizzo del modello
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Consulta le
codice sorgente
per altre opzioni di configurazione di TextSearcher
.
Risultati di esempio
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
Prova la semplice Strumento dimostrativo dell'interfaccia a riga di comando per TextSearcher con il tuo modello e dati di test.