Guia de incorporação de texto para Python

A tarefa MediaPipe Text Embedder permite criar uma representação numérica dos dados de texto para capturar seu significado semântico. Estas instruções mostram como usar o Incorporador de texto com Python.

Para mais informações sobre recursos, modelos e opções de configuração, desta tarefa, consulte a Visão geral.

Exemplo de código

O código de exemplo para o incorporador de texto fornece uma implementação completa em Python para sua referência. Esse código ajuda a testar a tarefa você começou a criar seu próprio embedder de texto. É possível exibir, executar e editar Exemplo de incorporador de texto código usando apenas o navegador da Web com o Google Colab. Você pode conferir o código-fonte neste exemplo GitHub.

Configuração

Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o incorporador de texto. Para informações gerais a configuração do seu ambiente de desenvolvimento para usar tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o Guia de configuração do Python.

Pacotes

O incorporador de texto usa o pacote pip mediapipe. É possível instalar a dependência pelo seguinte:

$ python -m pip install mediapipe

Importações

Importe as seguintes classes para acessar as funções da tarefa do incorporador de texto:

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

Modelo

A tarefa MediaPipe Text Embedder requer um modelo treinado que seja compatível com esse tarefa. Para mais informações sobre modelos treinados disponíveis para o incorporador de texto, consulte na seção de visão geral da tarefa Modelos.

Selecione e faça o download de um modelo e armazene-o em um diretório local. Você pode usar o padrão UniversalSentenceEncoder um modelo de machine learning.

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

Especifique o caminho do modelo no parâmetro model_asset_path, conforme mostrado abaixo:

base_options = BaseOptions(model_asset_path=model_path)

Criar a tarefa

A tarefa MediaPipe Text Embedder usa a função create_from_options para configurar o tarefa. A função create_from_options aceita valores para configuração. para definir as opções do incorporador. Também é possível inicializar a tarefa usando o Função de fábrica create_from_model_path. A função create_from_model_path aceita um caminho relativo ou absoluto para o arquivo de modelo treinado. Para mais informações sobre opções de configuração, consulte Opções de configuração.

O código abaixo demonstra como criar e configurar essa tarefa.

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)

Opções de configuração

Esta tarefa tem as seguintes opções de configuração para aplicativos Python:

Nome da opção Descrição Intervalo de valor Valor padrão
l2_normalize Define se o vetor de atributo retornado deve ser normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver um L2_NORMALIZATION Op. do TFLite. Na maioria dos casos, esse já é o caso e Assim, a normalização L2 é alcançada por meio da inferência do TFLite sem a necessidade para essa opção. Boolean False
quantize Se o embedding retornado deve ser quantizado em bytes por meio de com a quantização escalar. Os embeddings são implicitamente definidos como unidade-norma e portanto, qualquer dimensão terá um valor em [-1.0, 1.0]. Usar a opção l2_normalize, se este não for o caso. Boolean False

Preparar dados

O incorporador de texto funciona com dados de texto (str). A tarefa lida com a entrada de dados incluindo a tokenização e o pré-processamento de tensores.

Todo o pré-processamento é feito na função embed. Não é necessário para pré-processamento adicional do texto de entrada.

input_text = "The input text to be embedded."

Executar a tarefa

O incorporador de texto usa a função embed para acionar inferências. Para texto embedding, isso significa retornar os vetores de embedding para o texto de entrada.

O código a seguir demonstra como executar o processamento com o modelo de tarefa.

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

Gerenciar e exibir resultados

O incorporador de texto gera uma TextEmbedderResult que contém uma lista de embeddings (de ponto flutuante ou quantificado por escalar) para o texto de entrada.

Confira abaixo um exemplo dos dados de saída desta tarefa:

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

É possível comparar a semelhança semântica de dois embeddings usando o função TextEmbedder.cosine_similarity. Confira o código a seguir exemplo.

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