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 apps para Android.
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 código de ejemplo de MediaPipe Tasks es una implementación simple de un Text Embedder para Android. En el ejemplo, se evalúan las similitudes semánticas entre dos fragmentos de texto y requiere un dispositivo Android físico o una emulador.
Puedes usar la app como punto de partida para tu propia app para Android o hacer referencia a ella. cuando se modifica una app existente. El código de ejemplo de Text Embedder se aloja en GitHub:
Descarga el código
En las siguientes instrucciones, se muestra cómo crear una copia local del ejemplo con la herramienta de línea de comandos git.
Para descargar el código de ejemplo, haz lo siguiente:
- Clona el repositorio de Git con el siguiente comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
- De forma opcional, configura tu instancia de Git para que use un método de confirmación de la compra disperso
solo los archivos de la aplicación de ejemplo de Text Embedder:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Después de crear una versión local del código de ejemplo, puedes importar el proyecto en Android Studio y ejecutar la app. Para obtener instrucciones, consulta la Guía de configuración de Android
Componentes clave
Los siguientes archivos contienen el código crucial para este ejemplo de incorporación de texto. aplicación:
- TextEmbedderHelper.kt: Inicializa la incorporación de texto y controla la selección del modelo y del delegado.
- MainActivity.kt: Implementa la aplicación y ensambla los componentes de la interfaz de usuario.
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 Android
Dependencias
La incorporación de texto usa las bibliotecas com.google.mediapipe:tasks-text
. Agregar
dependencia al archivo build.gradle
de tu proyecto de desarrollo de apps para Android.
Puedes importar las dependencias necesarias con el siguiente código:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
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 el modelo; luego, guárdalo en el directorio de tu proyecto:
<dev-project-root>/src/main/assets
Especifica la ruta del modelo dentro del parámetro ModelAssetPath
. En la
código de ejemplo, el modelo se define en la función setupTextEmbedder()
en
TextEmbedderHelper.kt
archivo:
Usa la función BaseOptions.Builder.setModelAssetPath()
para especificar la ruta de acceso
que usa el modelo. Este método se menciona en el ejemplo de código en la próxima
sección.
Crea la tarea
Puedes usar una de las funciones createFrom...()
para crear la tarea. El
La función createFromOptions()
acepta las opciones de configuración para configurar la incorporación
opciones de estado. También puedes inicializar la tarea con la configuración de fábrica de createFromFile()
.
. La función createFromFile()
acepta una ruta de acceso relativa o absoluta a
el archivo de modelo entrenado. Para obtener más información sobre las opciones de configuración, consulta
Opciones de configuración.
En el siguiente código, se muestra cómo compilar y configurar esta tarea.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
La implementación de código de ejemplo establece las opciones de incorporaciones de texto en el
función setupTextEmbedder()
en
TextEmbedderHelper.kt
.
Opciones de configuración
Esta tarea tiene las siguientes opciones de configuración para apps para Android:
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 (String
). 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 se necesita
el procesamiento previo adicional
del texto de entrada de antemano.
val inputText = "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.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
En el código de ejemplo, se llama a la función embed
en la
TextEmbedderHelper.kt
.
Cómo controlar y mostrar resultados
Después de ejecutar la inferencia, la tarea de incorporación de texto muestra un TextEmbedderResult
.
que contiene una lista de incorporaciones (ya sea de punto flotante o
escalar cuantificados) 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.cosineSimilarity
. Consulta el siguiente código para ver un ejemplo.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
En el código de ejemplo, se llama a la función TextEmbedder.cosineSimilarity()
en la
TextEmbedderHelper.kt
.