La tâche de l'intégrateur de texte MediaPipe vous permet de créer une représentation numérique de données textuelles pour saisir sa signification sémantique. Ces instructions vous expliquent comment utiliser Outil d'intégration de texte avec des applications Android
Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la section Présentation.
Exemple de code
L'exemple de code MediaPipe Tasks est une implémentation simple d'un intégrateur de texte pour Android. L'exemple évalue les similitudes sémantiques entre deux de texte, et nécessite un appareil Android physique émulateur d'application.
Vous pouvez utiliser l'application comme point de départ pour votre propre application Android ou vous y référer. lorsque vous modifiez une application existante. L'exemple de code de l'outil d'intégration de texte est hébergé GitHub
Télécharger le code
Les instructions suivantes vous expliquent comment créer une copie locale de l'exemple à l'aide de l'outil de ligne de commande git.
<ph type="x-smartling-placeholder">Pour télécharger l'exemple de code:
- Clonez le dépôt Git à l'aide de la commande suivante:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Si vous le souhaitez, vous pouvez configurer votre instance Git pour utiliser le paiement creuse.
uniquement les fichiers de l'application exemple de l'outil d'intégration de texte:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Après avoir créé une version locale de l'exemple de code, vous pouvez importer le projet dans Android Studio et exécuter l'application. Pour obtenir des instructions, consultez le Guide de configuration Android
Composants clés
Les fichiers suivants contiennent le code essentiel pour cet exemple d'outil d'intégration de texte application:
- TextEmbedderHelper.kt: Initialise l'outil d'intégration de texte, et gère la sélection du modèle et du délégué.
- MainActivity.kt: Met en œuvre l'application et assemble les composants de l'interface utilisateur.
Configuration
Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement projets de code spécifiques pour utiliser l'outil d'intégration de texte. Pour obtenir des informations générales sur configurer votre environnement de développement pour utiliser les tâches MediaPipe, y compris version de la plate-forme requise, consultez le guide de configuration Android
<ph type="x-smartling-placeholder">Dépendances
L'outil d'intégration de texte utilise les bibliothèques com.google.mediapipe:tasks-text
. Ajouter
au fichier build.gradle
de votre projet de développement d'applications Android.
Vous pouvez importer les dépendances requises avec le code suivant:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Modèle
La tâche de l'outil d'intégration de texte MediaPipe nécessite un modèle entraîné compatible avec tâche. Pour en savoir plus sur les modèles entraînés disponibles pour l'outil d'intégration de texte, consultez la section Modèles de la présentation des tâches.
Sélectionnez et téléchargez le modèle, puis stockez-le dans le répertoire de votre projet:
<dev-project-root>/src/main/assets
Spécifiez le chemin d'accès du modèle dans le paramètre ModelAssetPath
. Dans
exemple de code, le modèle est défini dans la fonction setupTextEmbedder()
TextEmbedderHelper.kt
:
Utiliser la fonction BaseOptions.Builder.setModelAssetPath()
pour spécifier le chemin d'accès
utilisées par le modèle. Cette méthode est mentionnée dans l'exemple de code de la
.
Créer la tâche
Vous pouvez utiliser l'une des fonctions createFrom...()
pour créer la tâche. La
La fonction createFromOptions()
accepte les options de configuration pour définir l'intégrateur
options. Vous pouvez également initialiser la tâche à l'aide de la fabrique createFromFile()
.
. La fonction createFromFile()
accepte un chemin d'accès relatif ou absolu vers
le fichier du modèle entraîné. Pour en savoir plus sur les options de configuration, consultez
Options de configuration.
Le code suivant montre comment compiler et configurer cette tâche.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
L'exemple d'implémentation de code définit les options d'intégration de texte dans la section
fonction setupTextEmbedder()
dans
TextEmbedderHelper.kt
.
Options de configuration
Cette tâche comporte les options de configuration suivantes pour les applications Android:
Nom de l'option | Description | Plage de valeurs | Valeur par défaut |
---|---|---|---|
l2_normalize |
Indique s'il faut normaliser le vecteur de caractéristiques renvoyé avec la norme L2. N'utilisez cette option que si le modèle ne contient pas encore d'élément natif L2_NORMALIZATION TFLite Op. Dans la plupart des cas, c'est déjà le cas et La normalisation L2 est ainsi obtenue via l'inférence TFLite sans avoir besoin pour cette option. | Boolean |
False |
quantize |
Indique si la représentation vectorielle continue renvoyée doit être quantifiée en octets via la quantification scalaire. Les représentations vectorielles continues sont implicitement considérées comme étant une norme unitaire Par conséquent, toute dimension aura une valeur comprise dans [-1.0, 1.0]. Utilisez l'option l2_normalize si ce n'est pas le cas. | Boolean |
False |
Préparer les données
L'outil d'intégration de texte fonctionne avec des données textuelles (String
). La tâche gère la saisie des données
le prétraitement, y compris la tokenisation et le prétraitement des Tensors. Tout
le prétraitement est géré dans la fonction embed()
. Il n'est pas nécessaire
un prétraitement supplémentaire
du texte d'entrée au préalable.
val inputText = "The input text to be embedded."
Exécuter la tâche
L'outil d'intégration de texte utilise la fonction embed
pour déclencher des inférences. Texte
cela signifie renvoyer les vecteurs de représentation vectorielle continue pour le texte d'entrée.
Le code suivant montre comment exécuter le traitement avec le modèle de tâche.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
Dans l'exemple de code, la fonction embed
est appelée dans le
TextEmbedderHelper.kt
.
Gérer et afficher les résultats
Lors de l'exécution de l'inférence, la tâche de l'intégrateur de texte renvoie un TextEmbedderResult
contenant une liste de représentations vectorielles continues (à virgule flottante ou
quantifiée scalaire) pour le texte d'entrée.
Voici un exemple de données de sortie de cette tâche:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Vous pouvez comparer la similarité sémantique de deux représentations vectorielles continues à l'aide de la fonction
fonction TextEmbedder.cosineSimilarity
. Consultez le code suivant pour obtenir un exemple.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
Dans l'exemple de code, la fonction TextEmbedder.cosineSimilarity()
est appelée dans le
TextEmbedderHelper.kt
.