Guia de incorporação de texto para Python

Com a tarefa MediaPipe Text Embedder, é possível criar uma representação numérica dos dados de texto para capturar o significado semântico deles. Estas instruções mostram como usar o incorporador de texto com Python.

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

Exemplo de código

O código de exemplo do Incorporador de texto oferece uma implementação completa dessa tarefa em Python para sua referência. O código ajuda a testar essa tarefa e começar a criar seu próprio incorporado de texto. É possível ver, executar e editar o exemplo de código do Text Embedder usando apenas seu navegador da Web com o Google Colab. Confira o código-fonte deste exemplo no GitHub.

Configuração

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

Pacotes

O Text Embedder usa o pacote Mediapipe. Você pode instalar a dependência com o seguinte:

$ python -m pip install mediapipe

Importações

Importe as seguintes classes para acessar as funções da tarefa Text Embedder:

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 compatível com ela. Para mais informações sobre os modelos treinados disponíveis para o incorporador de texto, consulte a seção Modelos de visão geral da tarefa.

Selecione e faça o download de um modelo e armazene-o em um diretório local. Use o modelo UniversalSentenceEncoder recomendado.

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

Especifique o caminho do modelo dentro do 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 a tarefa. A função create_from_options aceita valores das opções de configuração para definir as opções do incorporador. Também é possível inicializar a tarefa usando a 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 as opções de configuração, consulte Opções de configuração.

O código a seguir 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 será normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver uma operação nativa do TFLite L2_NORMALIZATION. Na maioria dos casos, esse já é o caso, e a normalização L2 é, portanto, feita por meio da inferência TFLite sem precisar dessa opção. Boolean False
quantize Define se o embedding retornado precisa ser quantizado em bytes por meio da quantização escalar. Os embeddings são implicitamente considerados padrão de unidade e, portanto, qualquer dimensão tem um valor em [-1.0, 1.0]. Use a opção l2_normalize se esse não for o caso. Boolean False

preparar dados

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

Todo o pré-processamento é processado na função embed. Não é necessário fazer mais um pré-processamento do texto de entrada com antecedência.

input_text = "The input text to be embedded."

Executar a tarefa

O Incorporador de texto usa a função embed para acionar inferências. Na incorporação de texto, isso significa retornar os vetores de embedding do 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 mostrar resultados

O Incorporador de texto gera um TextEmbedderResult que contém uma lista de embeddings (de ponto flutuante ou quantizado escalar) para o texto de entrada.

Veja a seguir um exemplo dos dados de saída dessa 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 a função TextEmbedder.cosine_similarity. Confira um exemplo no código a seguir.

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