La recherche de texte permet de rechercher du texte sémantiquement similaire dans un corpus. Il fonctionne en intégrant la requête de recherche dans un vecteur de grande dimension représentant la signification sémantique de la requête, suivi d'une recherche de similarité dans un index personnalisé prédéfini à l'aide de ScaNN (Scalable Nearest Neighbours).
Contrairement à la classification de texte (par exemple , le classificateur de langage naturel Bert ), l'augmentation du nombre d'éléments pouvant être reconnus ne nécessite pas de réentraîner l'ensemble du modèle. De nouveaux éléments peuvent être ajoutés en reconstruisant simplement l'index. Cela permet également de travailler avec des corpus plus grands (plus de 100 000 éléments).
Utilisez l'API Task Library TextSearcher
pour déployer votre chercheur de texte personnalisé dans vos applications mobiles.
Principales fonctionnalités de l'API TextSearcher
Prend une seule chaîne en entrée, effectue une extraction par intégration et une recherche du voisin le plus proche dans l'index.
Traitement du texte d'entrée, y compris les tokenisations Wordpiece ou Sentencepiece dans le graphique ou hors graphique sur le texte d'entrée.
Conditions préalables
Avant d'utiliser l'API TextSearcher
, un index doit être créé en fonction du corpus de texte personnalisé dans lequel effectuer la recherche. Ceci peut être réalisé à l'aide de l'API Model Maker Searcher en suivant et en adaptant le didacticiel .
Pour cela vous aurez besoin de :
- un modèle d'intégration de texte TFLite, tel que Universal Sentence Encoder. Par exemple,
- votre corpus de texte.
Après cette étape, vous devriez disposer d'un modèle de recherche TFLite autonome (par exemple mobilenet_v3_searcher.tflite
), qui est le modèle d'intégration de texte original avec l'index attaché dans les métadonnées du modèle TFLite .
Exécuter l'inférence en Java
Étape 1 : Importer la dépendance Gradle et d'autres paramètres
Copiez le fichier de modèle de recherche .tflite
dans le répertoire d'actifs du module Android où le modèle sera exécuté. Spécifiez que le fichier ne doit pas être compressé et ajoutez la bibliothèque TensorFlow Lite au fichier build.gradle
du module :
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 (NNAPI is included)
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'
}
Étape 2 : Utilisation du modèle
// 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);
Voir le code source et javadoc pour plus d'options pour configurer TextSearcher
.
Exécuter l'inférence en 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();
Consultez le code source pour plus d'options pour configurer TextSearcher
.
Exécuter l'inférence en Python
Étape 1 : Installez le package Pypi de support TensorFlow Lite.
Vous pouvez installer le package Pypi TensorFlow Lite Support à l'aide de la commande suivante :
pip install tflite-support
Étape 2 : Utilisation du modèle
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Consultez le code source pour plus d'options pour configurer TextSearcher
.
Exemples de résultats
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
Essayez l' outil de démonstration CLI simple pour TextSearcher avec votre propre modèle et vos données de test.