Integra gli utenti che eseguono ricerche di testo

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 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 Posizionato 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 che è più piccolo di quello riportato 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 del 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.