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 capturar su significado semántico. En estas instrucciones, se muestra cómo usar la incorporación de texto con Python.

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

Ejemplo de código

El código de ejemplo de Text Embedder proporciona una implementación completa de esta tarea en Python para tu referencia. Este código te ayudará a probar esta tarea y comenzar a compilar tu propia incorporación de texto. Puedes ver, ejecutar y editar el código de ejemplo de la Incorporación de texto solo con tu navegador web con Google Colab. Puedes ver el código fuente de este ejemplo en GitHub.

Configuración

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

Paquetes

Text Embedder usa el paquete pip de mediapipe. Puedes instalar la dependencia con lo siguiente:

$ python -m pip install mediapipe

Importaciones

Importa las siguientes clases para acceder a las funciones de tareas de Incorporación de texto:

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 esta tarea. Si deseas obtener más información sobre los modelos entrenados disponibles para Text Embedder, consulta la descripción general de la tarea en la sección Modelos.

Selecciona y descarga un modelo, y almacénalo en un directorio local. Puedes usar el modelo recomendado de UniversalSentenceEncoder.

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 las opciones de configuración a fin de establecer las opciones de incorporación. También puedes inicializar la tarea con la función de fábrica create_from_model_path. La función create_from_model_path acepta una ruta de acceso relativa o absoluta al archivo del modelo entrenado. Si deseas obtener más información sobre las opciones de configuración, consulta Opciones de configuración.

En el siguiente código, se muestra la compilación y configuración de 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 incluye las siguientes opciones de configuración para 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 mostrados con la norma L2. Usa esta opción solo si el modelo todavía no contiene una operación nativa de TFLite L2_NORMALIZATION. En la mayoría de los casos, este ya es el caso y, por lo tanto, la normalización L2 se logra a través de inferencia de TFLite sin necesidad de esta opción. Boolean False
quantize Indica si la incorporación que se muestra debe cuantizarse en bytes a través de la cuantización escalar. Se supone implícitamente que las incorporaciones son la norma unitaria y, por lo tanto, se garantiza que cualquier dimensión tenga un valor en [-1.0, 1.0]. Si este no es el caso, usa la opción l2_normalize. Boolean False

Preparar los datos

Text Embedder funciona con datos de texto (str). Esta tarea controla el procesamiento previo de la entrada de datos, 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 realizar un procesamiento previo adicional del texto de entrada con anticipación.

input_text = "The input text to be embedded."

Ejecuta la tarea

Text Embedder usa la función embed para activar inferencias. Para la incorporación de texto, esto 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 los resultados

La incorporación de texto genera una TextEmbedderResult que contiene una lista de incorporaciones (de punto flotante o escalar cuantizada) 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 la 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])