Les représentations vectorielles continues de texte permettent d'intégrer du texte dans un vecteur de caractéristiques de grande dimension représentant sa signification sémantique, qui peut ensuite être comparée à la caractéristique d'autres textes pour évaluer leur similarité sémantique.
Par opposition à recherche textuelle, La représentation vectorielle continue de texte permet de calculer la similarité entre les textes à la volée au lieu d'effectuer une recherche dans un index prédéfini construit à partir d'un corpus.
Déployez votre outil d'intégration de texte personnalisé à l'aide de l'API TextEmbedder
de la bibliothèque de tâches.
vos applications mobiles.
Principales fonctionnalités de l'API TextEmbedder
Traitement du texte d'entrée, y compris dans et hors graphique Texte verbal ou Extrait de phrase et tokenisations sur le texte d'entrée.
Fonction utilitaire intégrée permettant de calculer le similarité cosinus entre des vecteurs de caractéristiques.
Modèles de système d'intégration de texte compatibles
La compatibilité des modèles suivants avec TextEmbedder
est garantie.
API.
La Modèle TFLite Universal Sentence Encoder de TensorFlow Hub
Les modèles personnalisés qui répondent aux exigences de compatibilité des modèles.
Exécuter une inférence en 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());
Consultez le
code source
pour afficher d'autres options de configuration de TextEmbedder
.
Exécuter une inférence en Python
Étape 1: Installez le package Pypi de support TensorFlow Lite.
Vous pouvez installer le package Pypi de support TensorFlow Lite à l'aide de la commande suivante : :
pip install tflite-support
Étape 2: Utiliser le modèle
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)
Consultez le
code source
pour afficher d'autres options de configuration de TextEmbedder
.
Exemples de résultats
La similarité cosinus entre les vecteurs de caractéristiques normalisés renvoie un score compris entre -1 et 1. Plus elle est élevée, mieux c'est. En d'autres termes, une similarité cosinus de 1 signifie que les deux vecteurs identiques.
Cosine similarity: 0.954312
Essayez la méthode la plus simple Outil de démonstration de la CLI pour TextEmbedder avec votre propre modèle et vos données de test.
Exigences de compatibilité des modèles
L'API TextEmbedder
attend un modèle TFLite avec des
Métadonnées du modèle TFLite.
Trois principaux types de modèles sont acceptés:
Modèles basés sur BERT (voir code source pour en savoir plus):
Exactement trois Tensors d'entrée (kTfLiteString)
- Tensor d'identifiants, avec le nom de métadonnées "ids",
- Tensor de masque, avec le nom de métadonnées "mask".
- Tensor des ID de segment, avec le nom de métadonnées "segment_ids"
Un seul Tensor de sortie (kTfLiteUInt8/kTfLiteFloat32)
- avec des composants
N
correspondant aux dimensionsN
du vecteur de caractéristiques renvoyé pour cette couche de sortie. - Deux ou quatre dimensions (
[1 x N]
ou[1 x 1 x 1 x N]
, par exemple).
- avec des composants
Une valeur "input_process_units" pour la fonction de tokenisation de WordFragment/Sentenceroom
Modèles basés sur Universal Sentence Encoder (voir code source pour en savoir plus):
Exactement trois Tensors d'entrée (kTfLiteString)
- Tensor de texte de requête, avec le nom de métadonnées "inp_text".
- Tensor de contexte de réponse, avec le nom de métadonnées "res_context".
- Tensor du texte de réponse, avec le nom de métadonnées "res_text".
Exactement deux Tensors de sortie (kTfLiteUInt8/kTfLiteFloat32)
- Tensor d'encodage de requête, avec le nom de métadonnées "query_encoding".
- Tensor d'encodage de réponse, avec le nom de métadonnées "response_encoding".
- Tous deux avec des composants
N
correspondant aux dimensionsN
du vecteur de caractéristiques renvoyé pour cette couche de sortie. - Les deux attributs doivent comporter 2 ou 4 dimensions (par exemple,
[1 x N]
ou[1 x 1 x 1 x N]
).
Tout modèle d'intégration de texte avec:
- Tensor de texte d'entrée (kTfLiteString)
Au moins un Tensor de représentation vectorielle continue de sortie (kTfLiteUInt8/kTfLiteFloat32)
- avec des composants
N
correspondant aux dimensionsN
du vecteur de caractéristiques renvoyé pour cette couche de sortie. - Deux ou quatre dimensions (
[1 x N]
ou[1 x 1 x 1 x N]
, par exemple).
- avec des composants