Cómo integrar usuarios que buscan texto

La búsqueda de texto permite buscar texto con similitud semántica en un corpus. Funciona incorporando la consulta de búsqueda en un vector de alta dimensión que representa el el significado semántico de la consulta, seguido de la búsqueda de similitud en un índice personalizado con ScaNN (vecinos más cercanos escalables).

A diferencia de la clasificación de texto (p.ej., Clasificador de lenguaje natural BERT). Expandir la cantidad de elementos que se pueden reconocer no requiere volver a entrenar para todo el modelo. Se pueden agregar elementos nuevos con solo volver a compilar el índice. Esto también permite trabajar con corpus más grandes (más de 100,000 elementos).

Usa la API de TextSearcher de la Biblioteca de tareas para implementar tu buscador de texto personalizado en tus aplicaciones para dispositivos móviles.

Funciones clave de la API de TextSearcher

  • Toma una sola cadena como entrada, realiza la extracción de incorporaciones y la búsqueda de vecino más cercano en el índice.

  • Procesamiento de texto de entrada, ya sea en el gráfico o fuera del gráfico Wordpiece o Oración las asignaciones de token en el texto de entrada.

Requisitos previos

Antes de usar la API de TextSearcher, se debe compilar un índice basado en la corpus de texto personalizado en el que buscar. Esto se puede lograr API de Model Maker Searcher mediante el seguimiento y la adaptación de instructivo.

Para ello necesitarás lo siguiente:

  • un modelo de incorporación de texto de TFLite, como Universal Sentence Encoder. Para ejemplo,
    • el uno se volvió a entrenar en esta Colab, que está optimizado para la inferencia en el dispositivo. Solo se necesitan 6 ms para consultar una cadena de texto en Pixel 6.
    • el cuantizado que es más pequeña que la anterior, pero tarda 38 ms por cada incorporación.
  • tu corpus de texto.

Después de este paso, deberías tener un modelo de buscador de TFLite independiente (p.ej., mobilenet_v3_searcher.tflite), que es el modelo original de incorporación de texto con el índice adjunto en el Metadatos del modelo de TFLite.

Ejecuta inferencias en Java

Paso 1: Importa la dependencia de Gradle y otros parámetros de configuración

Copia el archivo de modelo del buscador .tflite en el directorio de recursos de Android en el que se ejecutará el modelo. Especifica que el archivo no debe y agrega la biblioteca de TensorFlow Lite al archivo build.gradle del módulo archivo:

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'
}

Paso 2: Usa el modelo

// 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 la código fuente y javadoc si quieres obtener más opciones para configurar TextSearcher.

Ejecuta inferencias en 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 la código fuente si quieres obtener más opciones para configurar TextSearcher.

Ejecuta la inferencia en Python

Paso 1: Instala el paquete Pypi de asistencia de TensorFlow Lite

Puedes instalar el paquete de compatibilidad con Pypi de TensorFlow Lite con el siguiente comando: :

pip install tflite-support

Paso 2: Usa el modelo

from tflite_support.task import text

# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)

# Run inference
result = text_searcher.search(text)

Consulta la código fuente si quieres obtener más opciones para configurar TextSearcher.

Resultados de ejemplo

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

Prueba lo sencillo Herramienta de demostración de la CLI para TextSearcher con tu propio modelo y datos de prueba.