Guida all'incorporamento del testo per Python

L'attività Incorporamento di testo MediaPipe consente di creare una rappresentazione numerica dei dati di testo per acquisirne il significato semantico. Queste istruzioni mostrano come usare Text Embedder con Python.

Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per l'incorporamento di testo fornisce un'implementazione completa di questa attività in Python come riferimento. Questo codice ti consente di testare l'attività e iniziare a creare un tuo incorporatore di testo. Puoi visualizzare, eseguire e modificare il codice di esempio di Text Embedder utilizzando solo il tuo browser web con Google Colab. Puoi visualizzare il codice sorgente per questo esempio su GitHub.

Configurazione

In questa sezione vengono descritti i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice in modo specifico per l'utilizzo di Text Embedder. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti di versione della piattaforma, consulta la Guida alla configurazione per Python.

Pacchetti

L'incorporamento di testo utilizza il pacchetto pip mediapipe. Puoi installare la dipendenza con quanto segue:

$ python -m pip install mediapipe

Importazioni

Importa le seguenti classi per accedere alle funzioni dell'attività Incorporamento di testo:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

Modello

L'attività Incorporamento di testo MediaPipe richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per l'incorporamento di testo, consulta la sezione Modelli della panoramica dell'attività.

Seleziona e scarica un modello, quindi archivialo in una directory locale. Puoi utilizzare il modello consigliato UniversalSentenceEncoder.

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

Specifica il percorso del modello all'interno del parametro model_asset_path, come mostrato di seguito:

base_options = BaseOptions(model_asset_path=model_path)

Creare l'attività

L'attività Incorporamento di testo MediaPipe utilizza la funzione create_from_options per configurarla. La funzione create_from_options accetta i valori per le opzioni di configurazione al fine di impostare le opzioni dell'incorporamento. Puoi inizializzare l'attività anche utilizzando la funzione di fabbrica di create_from_model_path. La funzione create_from_model_path accetta un percorso relativo o assoluto al file del modello addestrato. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.

Il codice seguente mostra come creare e configurare questa attività.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

Opzioni di configurazione

Questa attività prevede le seguenti opzioni di configurazione per le applicazioni Python:

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'operatività TFLite L2_NORMALIZATION nativa. Nella maggior parte dei casi, è già così e la normalizzazione L2 viene quindi ottenuta tramite l'inferenza TFLite senza necessità di questa opzione. Boolean False
quantize Indica se l'incorporamento restituito deve essere quantizzato in byte tramite la quantizzazione scalare. Gli incorporamenti si presume implicitamente come unità-norm, pertanto è garantito che ogni dimensione abbia un valore in [-1.0, 1.0]. In caso contrario, utilizza l'opzione l2_normalize. Boolean False

Preparazione dei dati

L'incorporamento di testo funziona con i dati di testo (str). L'attività gestisce la pre-elaborazione dell'input dei dati, tra cui la tokenizzazione e la pre-elaborazione tensor.

L'intera pre-elaborazione viene gestita all'interno della funzione embed. Non è necessaria un'ulteriore pre-elaborazione del testo di input.

input_text = "The input text to be embedded."

Esegui l'attività

L'incorporamento di testo utilizza la funzione embed per attivare le inferenze. Per l'incorporamento del testo, 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à.

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

Gestire e visualizzare i risultati

L'incorporamento di testo restituisce un valore TextEmbedderResult che contiene un elenco di incorporamenti (in virgola mobile o quantizzati 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 la funzione TextEmbedder.cosine_similarity. Per un esempio, vedi il codice che segue.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])