Integra i ricercatori di testo

La ricerca testuale consente di cercare testi semanticamente simili all'interno di un corpus. Funziona incorporando la query di ricerca in un vettore ad alta dimensione che rappresenta il significato semantico della query, seguito dalla ricerca di somiglianza in un indice personalizzato predefinito utilizzando ScaNN (Scalable Nearest Neighbors).

A differenza della classificazione del testo (ad esempio il 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 ricostruendo l'indice. Ciò consente anche di lavorare con corpus più grandi (oltre 100.000 elementi).

Utilizza l'API TextSearcher della libreria attività per distribuire il tuo ricercatore di testo personalizzato nelle tue app mobili.

Funzionalità principali dell'API TextSearcher

  • Prende una singola stringa come input, esegue l'estrazione dell'incorporamento e la ricerca del vicino più vicino nell'indice.

  • Elaborazione del testo di input, incluse le tokenizzazioni di Wordpiece o Sentencepiece all'interno o all'esterno del grafico sul testo di input.

Prerequisiti

Prima di utilizzare l'API TextSearcher , è necessario creare un indice basato sul corpus personalizzato di testo in cui effettuare la ricerca. Ciò può essere ottenuto utilizzando l'API Model Maker Searcher seguendo e adattando il tutorial .

Per questo avrai bisogno di:

  • un modello di incorporamento di testo TFLite, come Universal Sentence Encoder. Per esempio,
    • quello riqualificato in questo Colab , che è ottimizzato per l'inferenza sul dispositivo. Sono necessari solo 6 ms per interrogare una stringa di testo su Pixel 6.
    • quello quantizzato , che è più piccolo del precedente ma impiega 38ms per ogni incorporamento.
  • il tuo corpus di testi.

Dopo questo passaggio, dovresti avere un modello di ricerca TFLite autonomo (ad esempio mobilenet_v3_searcher.tflite ), che è il modello di incorporamento del testo originale con l'indice allegato ai metadati del modello TFLite .

Esegui l'inferenza in Java

Passaggio 1: importa la dipendenza Gradle e altre impostazioni

Copia il file del modello di ricerca .tflite nella directory asset del modulo 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:

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 (NNAPI is included)
    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 il codice sorgente e javadoc per ulteriori opzioni per configurare 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();

Vedi il codice sorgente per ulteriori opzioni per configurare TextSearcher .

Esegui l'inferenza in Python

Passaggio 1: installare il pacchetto Pypi di supporto TensorFlow Lite.

È possibile installare il pacchetto TensorFlow Lite Support Pypi utilizzando il seguente comando:

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)

Vedi il codice sorgente per ulteriori opzioni per configurare 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 il semplice strumento demo CLI per TextSearcher con il tuo modello e i dati di test.