Os incorporadores de texto permitem incorporar o texto em um vetor de características de alta dimensão que representa seu significado semântico, que pode então ser comparado com o vetor de características de outros textos para avaliar sua similaridade semântica.
Ao contrário da pesquisa de texto , o incorporador de texto permite calcular a semelhança entre textos dinamicamente, em vez de pesquisar através de um índice predefinido construído a partir de um corpus.
Use a API Task Library TextEmbedder
para implantar seu incorporador de texto personalizado em seus aplicativos móveis.
Principais recursos da API TextEmbedder
Processamento de texto de entrada, incluindo tokenizações de Wordpiece ou Sentencepiece dentro ou fora do gráfico no texto de entrada.
Função de utilidade integrada para calcular a similaridade de cosseno entre vetores de recursos.
Modelos de incorporação de texto suportados
Os modelos a seguir são compatíveis com a API TextEmbedder
.
O modelo TFLite do codificador de frases universal do TensorFlow Hub
Modelos personalizados que atendem aos requisitos de compatibilidade de modelos .
Execute inferência em C++
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
Consulte o código-fonte para obter mais opções de configuração TextEmbedder
.
Execute inferência em Python
Etapa 1: Instale o pacote Pypi de suporte do TensorFlow Lite.
Você pode instalar o pacote Pypi de suporte do TensorFlow Lite usando o seguinte comando:
pip install tflite-support
Etapa 2: usando o modelo
from tflite_support.task import text
# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
Consulte o código-fonte para obter mais opções de configuração TextEmbedder
.
Resultados de exemplo
A similaridade de cosseno entre vetores de características normalizados retorna uma pontuação entre -1 e 1. Quanto maior, melhor, ou seja, uma similaridade de cosseno de 1 significa que os dois vetores são idênticos.
Cosine similarity: 0.954312
Experimente a ferramenta de demonstração CLI simples para TextEmbedder com seu próprio modelo e dados de teste.
Requisitos de compatibilidade de modelo
A API TextEmbedder
espera um modelo TFLite com metadados de modelo TFLite obrigatórios.
Três tipos principais de modelos são suportados:
Modelos baseados em BERT (veja o código-fonte para mais detalhes):
Exatamente 3 tensores de entrada (kTfLiteString)
- Tensor de IDs, com nome de metadados "ids",
- Tensor de máscara, com nome de metadados "máscara".
- Tensor de IDs de segmento, com nome de metadados "segment_ids"
Exatamente um tensor de saída (kTfLiteUInt8/kTfLiteFloat32)
- com
N
componentes correspondentes àsN
dimensões do vetor de recursos retornado para esta camada de saída. - 2 ou 4 dimensões, ou seja
[1 x N]
ou[1 x 1 x 1 x N]
.
- com
Um input_process_units para tokenizador de Wordpiece/Sentencepiece
Modelos baseados no Universal Sentence Encoder (consulte o código-fonte para obter mais detalhes):
Exatamente 3 tensores de entrada (kTfLiteString)
- Consulta o tensor de texto, com nome de metadados "inp_text".
- Tensor de contexto de resposta, com nome de metadados "res_context".
- Tensor de texto de resposta, com nome de metadados "res_text".
Exatamente 2 tensores de saída (kTfLiteUInt8/kTfLiteFloat32)
- Tensor de codificação de consulta, com nome de metadados "query_encoding".
- Tensor de codificação de resposta, com nome de metadados "response_encoding".
- Ambos com
N
componentes correspondentes àsN
dimensões do vetor de recursos retornado para esta camada de saída. - Ambos com 2 ou 4 dimensões, ou seja
[1 x N]
ou[1 x 1 x 1 x N]
.
Qualquer modelo de incorporação de texto com:
- Um tensor de texto de entrada (kTfLiteString)
Pelo menos um tensor de incorporação de saída (kTfLiteUInt8/kTfLiteFloat32)
- com
N
componentes correspondentes àsN
dimensões do vetor de recursos retornado para esta camada de saída. - 2 ou 4 dimensões, ou seja
[1 x N]
ou[1 x 1 x 1 x N]
.
- com