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. Essa funcionalidade é usada com frequência para comparar a semelhança semântica de dois textos usando técnicas matemáticas de comparação, como a similaridade de cossenos. Essa tarefa opera em dados de texto com um modelo de machine learning (ML) e gera uma representação numérica dos dados de texto como uma lista de vetores de atributo de alta dimensão, também conhecidos como vetores de embedding, em formato de ponto flutuante ou quantizado.
Comece já
Comece a usar essa tarefa seguindo um destes guias de implementação para sua plataforma de destino. Estes guias específicos da plataforma orientam você em uma implementação básica dessa tarefa, incluindo um modelo recomendado e um exemplo de código com as opções de configuração recomendadas:
- Android: exemplo de código – Guia
- Python: exemplo de código: guia
- Web – Exemplo de código – Guia
Detalhes da tarefa
Nesta seção, descrevemos os recursos, as entradas, as saídas e as opções de configuração desta tarefa.
Recursos
- Processamento de texto de entrada: oferece suporte à tokenização fora do gráfico para modelos sem tokenização no gráfico.
- Como incorporar a computação de similaridade: função utilitária integrada para calcular a semelhança de cossenos entre dois vetores de atributos.
- Quantização: oferece suporte à quantização escalar para os vetores de atributos.
Entradas de tarefas | Saídas de tarefas |
---|---|
O incorporador de texto aceita os seguintes tipos de dados de entrada:
|
O incorporador de texto gera uma lista de embeddings que consiste em:
|
Opções de configuração
Essa tarefa tem as seguintes opções de configuração:
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 |
Modelos
Oferecemos um modelo padrão recomendado quando você começa a desenvolver com essa tarefa.
Modelo do Universal Sentence Encoder (recomendado)
Esse modelo usa uma arquitetura de codificador duplo e foi treinado com vários conjuntos de dados de perguntas e respostas.
Considere os seguintes pares de frases:
- ("é uma viagem charmosa e muitas vezes impactante", "que viagem ótima e fantástica")
- ("Eu gosto do meu smartphone", "Odeio meu smartphone")
- ("Este restaurante tem um ótimo truque", "Precisamos verificar novamente os detalhes do nosso plano")
Os embeddings de texto nos dois primeiros pares têm maior semelhança de cosseno do que os do terceiro porque os dois primeiros pares de frases compartilham um tópico comum de "sentimento de viagem" e "opinião telefônica", respectivamente, enquanto o terceiro par de frases não compartilha um tópico comum.
Observe que, embora as duas frases no segundo par tenham sentimentos opostos, elas têm uma alta pontuação de similaridade porque compartilham um tópico comum.
Nome do modelo | Forma de entrada | Tipo de quantização | Versions |
---|---|---|---|
Universal Sentence Encoder (em inglês) | string, string, string | Nenhum (float32) | Mais recente |
Comparativos de mercado de tarefas
Aqui estão os comparativos de mercado de tarefas para todo o pipeline com base nos modelos pré-treinados acima. O resultado da latência é a latência média no Pixel 6 usando CPU / GPU.
Nome do modelo | Latência da CPU | Latência da GPU |
---|---|---|
Codificador de frases universais | 18,21 ms | - |