Guía de incorporación de texto para Python

La tarea MediaPipe Text Embedder te permite crear una representación numérica de los datos de texto para captan su significado semántico. Estas instrucciones te muestran cómo usar la Incorporador de texto con Python.

Para obtener más información sobre las capacidades, los modelos y las opciones de configuración para completar esta tarea, consulta la Descripción general.

Ejemplo de código

El ejemplo de código para el Incorporador de texto proporciona una implementación completa de este en Python para tu referencia. Este código te ayuda a probar esta tarea y obtener empezaste a crear tu propia incorporación de texto. Puedes ver, ejecutar y editar la Ejemplo de incorporador de texto código usando solo un navegador web con Google Colab. Puedes ver el código fuente de este ejemplo sobre GitHub:

Configuración

En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y proyectos de código específicamente para usar Text Embedder. Para obtener información general configurar tu entorno de desarrollo para usar tareas de MediaPipe, como requisitos de la versión de la plataforma, consulta la Guía de configuración de Python

Paquetes

La incorporación de texto usa el paquete mediapipe pip. Puedes instalar la dependencia con lo siguiente:

$ python -m pip install mediapipe

Importaciones

Importa las siguientes clases para acceder a las funciones de la tarea de Text Embedder:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

Modelo

La tarea MediaPipe Text Embedder requiere un modelo entrenado que sea compatible con tarea. Para obtener más información sobre los modelos entrenados disponibles para Text Embedder, consulta la sección Modelos de la descripción general de la tarea.

Selecciona y descarga un modelo y, luego, guárdalo en un directorio local. Puedes usar las recomendaciones UniversalSentenceEncoder un modelo de responsabilidad compartida.

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

Especifica la ruta del modelo dentro del parámetro model_asset_path, como se muestra a continuación:

base_options = BaseOptions(model_asset_path=model_path)

Crea la tarea

La tarea MediaPipe Text Embedder usa la función create_from_options para configurar la tarea. La función create_from_options acepta valores para la configuración para definir las opciones de incorporación. También puedes inicializar la tarea con el comando Función de fábrica create_from_model_path. La función create_from_model_path acepte una ruta de acceso absoluta o relativa al archivo de modelo entrenado. Para ver más sobre opciones de configuración, consulta Opciones de configuración.

En el siguiente código, se muestra cómo compilar y configurar esta tarea.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

Opciones de configuración

Esta tarea tiene las siguientes opciones de configuración para las aplicaciones de Python:

Nombre de la opción Descripción Rango de valores Valor predeterminado
l2_normalize Indica si se debe normalizar el vector de atributos mostrado con la norma L2. Usa esta opción solo si el modelo no contiene un código nativo L2_NORMALIZATION TFLite Op. En la mayoría de los casos, esto ya es así y Así, la normalización de L2 se logra mediante la inferencia de TFLite sin necesidad para esta opción. Boolean False
quantize Si la incorporación devuelta se debe cuantificar a bytes mediante la cuantización escalar. Se supone implícitamente que las incorporaciones son norma de unidad y por lo que se garantiza que cualquier dimensión tendrá un valor en [-1.0, 1.0]. Usa la opción l2_normalize si este no es el caso. Boolean False

Preparar los datos

El Incorporador de texto funciona con datos de texto (str). La tarea maneja la entrada de datos el procesamiento previo, incluida la asignación de token y el procesamiento previo del tensor.

Todo el procesamiento previo se controla dentro de la función embed. No es necesario para un procesamiento previo adicional del texto de entrada.

input_text = "The input text to be embedded."

Ejecuta la tarea

La incorporación de texto usa la función embed para activar inferencias. Para texto significa mostrar los vectores de incorporación para el texto de entrada.

En el siguiente código, se muestra cómo ejecutar el procesamiento con el modelo de tareas.

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

Cómo controlar y mostrar resultados

El Incorporador de texto genera un TextEmbedderResult que contiene una lista de de entrada (ya sea de punto flotante o escalar cuantizadas) para el texto de entrada.

A continuación, se muestra un ejemplo de los datos de salida de esta tarea:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

Puedes comparar la similitud semántica de dos incorporaciones con el función TextEmbedder.cosine_similarity. Consulta el siguiente código para ver un ejemplo.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])