Com a pesquisa de texto, é possível pesquisar textos semanticamente semelhantes em um corpus. Funciona incorporando a consulta de pesquisa em um vetor de alta dimensão que representa semântico da consulta, seguido pela pesquisa por similaridade em uma pesquisa índice personalizado usando ScaNN Vizinhos mais próximos escalonáveis.
Ao contrário da classificação de texto (por exemplo, Classificador de linguagem natural Bert), para expandir o número de itens que podem ser reconhecidos não requer novo treinamento o modelo inteiro. Para adicionar novos itens, basta reconstruir o índice. Isso também permite trabalhar com corpus maiores (mais de 100 mil itens).
Use a API Task Library TextSearcher
para implantar o pesquisador de texto personalizado em
seus apps para dispositivos móveis.
Principais recursos da API TextSearcher
Usa uma única string como entrada, executa a extração de embeddings e de vizinho mais próximo no índice.
Processamento de texto de entrada, incluindo dentro ou fora do gráfico Palavra-chave ou Frase de destaque tokenizações no texto de entrada.
Pré-requisitos
Antes de usar a API TextSearcher
, é necessário criar um índice com base no
um corpus de texto personalizado para pesquisar. Isso pode ser feito usando
API Model Maker Searcher
seguindo e adaptando
tutorial.
Para isso, você vai precisar do seguinte:
- um modelo de embedding de texto do TFLite, como o Universal Sentence Encoder. Para
exemplo,
- as um retreinado Colab, que é otimizado para inferência no dispositivo. Leva apenas 6 ms para consultar uma string de texto no Pixel 6.
- as quantizado uma, que é menor que a mostrada acima, mas leva 38 ms para cada embedding.
- seu corpus de texto.
Após essa etapa, você terá um modelo de pesquisa do TFLite autônomo (por exemplo,
mobilenet_v3_searcher.tflite
), que é o modelo original de embedding de texto com
o índice anexado ao
Metadados de modelo do TFLite.
Executar inferência em Java
Etapa 1: importar a dependência do Gradle e outras configurações
Copie o arquivo do modelo de pesquisa .tflite
para o diretório de assets do Android
módulo em que o modelo será executado. Especifique que o arquivo não deve ser
compactado e adicionar a biblioteca do TensorFlow Lite ao arquivo build.gradle
do módulo
arquivo:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
Etapa 2: uso do modelo
// Initialization
TextSearcherOptions options =
TextSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
TextSearcher textSearcher =
textSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = textSearcher.search(text);
Consulte a
código-fonte e o javadoc (em inglês)
para mais opções de configuração do TextSearcher
.
Executar inferência em C++
// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();
// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();
Consulte a
código-fonte
para mais opções de configuração do TextSearcher
.
Executar inferência em Python
Etapa 1: instalar o pacote Pypi de suporte do TensorFlow Lite
Instale o pacote TensorFlow Lite Support Pypi usando o seguinte: comando:
pip install tflite-support
Etapa 2: uso do modelo
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Consulte a
código-fonte
para mais opções de configuração do TextSearcher
.
Resultados de exemplo
Results:
Rank#0:
metadata: The sun was shining on that day.
distance: 0.04618
Rank#1:
metadata: It was a sunny day.
distance: 0.10856
Rank#2:
metadata: The weather was excellent.
distance: 0.15223
Rank#3:
metadata: The cat is chasing after the mouse.
distance: 0.34271
Rank#4:
metadata: He was very happy with his newly bought car.
distance: 0.37703
Teste a funcionalidade Ferramenta de demonstração da CLI para TextSearcher com seu próprio modelo e dados de teste.