L'attività Incorporatore di testo MediaPipe consente di creare una rappresentazione numerica dei dati di testo in acquisire il suo significato semantico. Queste istruzioni mostrano come utilizzare Incorporatore di testo con app per Android.
Per ulteriori informazioni su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.
Esempio di codice
Il codice di esempio delle attività di MediaPipe è una semplice implementazione di un incorporamento di testo per Android. L'esempio valuta le somiglianze semantiche tra due porzioni di testo e richiede un dispositivo Android fisico o un sistema operativo Android un emulatore.
Puoi utilizzare l'app come punto di partenza per la tua app per Android o fare riferimento all'app quando modifichi un'app esistente. Il codice di esempio di Text Embedder è ospitato su GitHub.
Scarica il codice
Le seguenti istruzioni mostrano come creare una copia locale dell'esempio utilizzando lo strumento a riga di comando git.
Per scaricare il codice di esempio:
- Clona il repository git utilizzando il comando seguente:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Facoltativamente, configura la tua istanza Git per l'utilizzo di un pagamento sparso, in modo da avere
solo i file dell'app di esempio Text Embedder:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Dopo aver creato una versione locale del codice di esempio, puoi importare il progetto in Android Studio ed eseguire l'app. Per istruzioni, consulta la Guida alla configurazione per Android.
Componenti chiave
I seguenti file contengono il codice fondamentale per questo esempio di incorporamento di testo applicazione:
- TextEmbedderHelper.kt: Inizializza l'incorporatore di testo e gestisce il modello e la selezione del delegato.
- MainActivity.kt: Implementa l'applicazione e assembla i componenti dell'interfaccia utente.
Configurazione
Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice che usano specificatamente Incorporatore di testo. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta la Guida alla configurazione per Android.
Dipendenze
L'incorporamento di testo utilizza le librerie com.google.mediapipe:tasks-text
. Aggiungi questo
al file build.gradle
del progetto di sviluppo di app per Android.
Puoi importare le dipendenze richieste con il seguente codice:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Modello
L'attività Incorporatore di testo MediaPipe richiede un modello addestrato compatibile con dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per l'incorporamento di testo, consulta la panoramica delle attività nella sezione Modelli.
Seleziona e scarica il modello, quindi archivialo nella directory del progetto:
<dev-project-root>/src/main/assets
Specifica il percorso del modello all'interno del parametro ModelAssetPath
. Nella
di codice di esempio, il modello è definito nella funzione setupTextEmbedder()
in
TextEmbedderHelper.kt
file:
Utilizza la funzione BaseOptions.Builder.setModelAssetPath()
per specificare il percorso
usato dal modello. Questo metodo è indicato nell'esempio di codice della
.
Crea l'attività
Puoi utilizzare una delle funzioni di createFrom...()
per creare l'attività. La
La funzione createFromOptions()
accetta le opzioni di configurazione per impostare l'incorporamento
le opzioni di CPU e memoria disponibili. Puoi anche inizializzare l'attività utilizzando il valore di fabbrica createFromFile()
personalizzata. La funzione createFromFile()
accetta un percorso relativo o assoluto per
del modello addestrato. Per ulteriori informazioni sulle opzioni di configurazione, consulta
Opzioni di configurazione.
Il codice seguente illustra come creare e configurare questa attività.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
L'implementazione del codice di esempio imposta le opzioni di incorporamento del testo nella
nella funzione setupTextEmbedder()
TextEmbedderHelper.kt
.
Opzioni di configurazione
Questa attività include le seguenti opzioni di configurazione per le app per Android:
Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
---|---|---|---|
l2_normalize |
Indica se normalizzare il vettore di caratteristiche restituito con la norma L2. Utilizza questa opzione solo se il modello non contiene già un L2_NORMALIZZAZIONE TFLite Op. Nella maggior parte dei casi, questo è già il caso. La normalizzazione L2 viene quindi ottenuta attraverso l'inferenza TFLite senza necessità per questa opzione. | Boolean |
False |
quantize |
Indica se l'incorporamento restituito deve essere quantizzato in byte tramite quantizzazione scalare. Gli incorporamenti sono implicitamente considerati come norma unitaria. pertanto è garantito che qualsiasi dimensione abbia un valore pari a [-1,0, 1,0]. Utilizza le funzionalità di in caso contrario l'opzione l2_normalize. | Boolean |
False |
Preparazione dei dati
Incorporatore di testo funziona con i dati di testo (String
). L'attività gestisce l'input dei dati
pre-elaborazione, tra cui la tokenizzazione e la pre-elaborazione dei tensori. Tutti
la pre-elaborazione viene gestita all'interno della funzione embed()
. Non è necessario
un'ulteriore pre-elaborazione del testo di input.
val inputText = "The input text to be embedded."
Esegui l'attività
L'incorporamento di testo utilizza la funzione embed
per attivare le inferenze. Per testo
incorporamento, ciò significa restituire i vettori di incorporamento per il testo di input.
Il seguente codice mostra come eseguire l'elaborazione con il modello di attività.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
Nel codice di esempio, la funzione embed
viene chiamata nel
TextEmbedderHelper.kt
.
Gestire e visualizzare i risultati
Quando viene eseguita l'inferenza, l'attività Incorporatore di testo restituisce un TextEmbedderResult
contenente un elenco di incorporamenti (a rappresentazione in virgola mobile
quantizzato scalare) per il testo di input.
Di seguito è riportato un esempio dei dati di output di questa attività:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Puoi confrontare la somiglianza semantica di due incorporamenti utilizzando
Funzione TextEmbedder.cosineSimilarity
. Vedi il codice che segue per un esempio.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
Nel codice di esempio, la funzione TextEmbedder.cosineSimilarity()
viene chiamata nel
TextEmbedderHelper.kt
.