Las incorporaciones de texto permiten incorporar texto en un vector de atributos de alta dimensión que representa su significado semántico, que luego se puede comparar con el atributo de otros textos para evaluar su similitud semántica.
A diferencia de búsqueda de texto, la incorporación de texto permite calcular la similitud entre textos sobre la marcha en lugar de buscar en un índice predefinido creado a partir de un corpus.
Usa la API de TextEmbedder
de la Biblioteca de tareas para implementar tu incorporación de texto personalizada en
tus aplicaciones para dispositivos móviles.
Funciones clave de la API de TextEmbedder
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.
Es una función de utilidad incorporada para calcular similitud coseno entre vectores de atributos.
Modelos de incorporaciones de texto compatibles
Se garantiza la compatibilidad de los siguientes modelos con TextEmbedder
en la API de Cloud.
El Modelo TFLite del Universal Sentence Encoder de TensorFlow Hub
Los modelos personalizados que cumplen con los requisitos de compatibilidad del modelo.
Ejecuta inferencias en C++
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
Consulta la
código fuente
si quieres obtener más opciones para configurar TextEmbedder
.
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_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
Consulta la
código fuente
si quieres obtener más opciones para configurar TextEmbedder
.
Resultados de ejemplo
La similitud coseno entre los vectores de atributos normalizados devuelve una puntuación entre -1 y 1. Cuanto más alto sea mejor, es decir, una similitud coseno de 1 significa que los dos vectores son idénticos.
Cosine similarity: 0.954312
Prueba lo sencillo Herramienta de demostración de la CLI para TextEmbedder con tu propio modelo y datos de prueba.
Requisitos de compatibilidad del modelo
La API de TextEmbedder
espera un modelo TFLite con
Metadatos del modelo de TFLite.
Se admiten tres tipos principales de modelos:
Modelos basados en BERT (consulta código fuente para obtener más información):
Exactamente 3 tensores de entrada (kTfLiteString)
- IDs, con el nombre de metadatos “ids”
- Enmascara el tensor, con el nombre de metadatos “mask”.
- Tensor de IDs de segmento, con nombre de metadatos "segment_ids"
Exactamente un tensor de salida (kTfLiteUInt8/kTfLiteFloat32)
- con componentes
N
correspondientes a las dimensionesN
de la vector de atributos que se muestra para esta capa de salida. - 2 o 4 dimensiones, p. ej.,
[1 x N]
o[1 x 1 x 1 x N]
- con componentes
Un input_process_units para el tokenizador de Wordpiece/Sentencepiece
Modelos basados en el Codificador de oraciones universal (consulta código fuente para obtener más información):
Exactamente 3 tensores de entrada (kTfLiteString)
- Tensor de texto de consulta, con nombre de metadatos “inp_text”.
- Tensor de contexto de respuesta, con nombre de metadatos “res_context”.
- Tensor de texto de respuesta, con nombre de metadatos “res_text”.
Exactamente 2 tensores de salida (kTfLiteUInt8/kTfLiteFloat32)
- Tensor de codificación de consulta, con el nombre de metadatos “query_encoding”.
- Tensor de codificación de respuesta, con el nombre de metadatos “response_encoding”.
- Ambos con componentes
N
correspondientes a las dimensionesN
de la vector de atributos que se muestra para esta capa de salida. - Ambas con 2 o 4 dimensiones, p.ej.,
[1 x N]
o[1 x 1 x 1 x N]
.
Cualquier modelo de incorporaciones de texto que contenga lo siguiente:
- Un tensor de texto de entrada (kTfLiteString)
Al menos un tensor de incorporación de salida (kTfLiteUInt8/kTfLiteFloat32)
- con componentes
N
correspondientes a las dimensionesN
de la vector de atributos que se muestra para esta capa de salida. - 2 o 4 dimensiones, p. ej.,
[1 x N]
o[1 x 1 x 1 x N]
- con componentes