L'attività Classificatore di testo MediaPipe consente di classificare il testo in un insieme di categorie definite, come sentiment positivo o negativo. Le categorie sono determinate dal modello utilizzato e dalle modalità di addestramento. Queste istruzioni mostrano come usare il classificatore di testo con Python.
Puoi vedere questa attività in azione visualizzando la demo web. 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 Text Classifier fornisce un'implementazione completa di questa attività in Python come riferimento. Questo codice ti consente di testare questa attività e iniziare a creare la tua app di classificazione del testo. Puoi visualizzare, eseguire e modificare il codice di esempio del classificatore di testo utilizzando il tuo browser web.
Se stai implementando il classificatore di testo per Raspber Pi, consulta l'app di esempio Raspber Pi.
Configurazione
In questa sezione vengono descritti i passaggi chiave per configurare l'ambiente di sviluppo e codificare i progetti in modo specifico per l'utilizzo di Text Classifier. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo di Attività MediaPipe, inclusi i requisiti di versione della piattaforma, consulta la Guida alla configurazione per Python.
Pacchetti
Il classificatore di testo utilizza il pacchetto pip mediapipe. Puoi installare queste dipendenze con quanto segue:
$ python -m pip install mediapipe
Importazioni
Importa le seguenti classi per accedere alle funzioni dell'attività Classificatore di testo:
from mediapipe.tasks import python
from mediapipe.tasks.python import text
Modello
L'attività Classificatore di testo MediaPipe richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per il classificatore di testo, consulta la sezione Modelli della panoramica dell'attività.
Seleziona e scarica un modello, quindi memorizzalo in una directory locale:
model_path = '/absolute/path/to/text_classifier.tflite'
Specifica il percorso del modello con il parametro model_asset_path
dell'oggetto BaseOptions
, come mostrato di seguito:
base_options = BaseOptions(model_asset_path=model_path)
Creare l'attività
L'attività Classificatore di testo MediaPipe utilizza la funzione create_from_options
per configurare l'attività. La funzione create_from_options
accetta valori per le opzioni
di configurazione al fine di impostare le opzioni di classificazione. Puoi anche inizializzare l'attività 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à.
base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)
with python.text.TextClassifier.create_from_options(options) as classifier:
classification_result = classifier.classify(text)
Opzioni di configurazione
Questa attività prevede le seguenti opzioni di configurazione per le app per Android:
Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
---|---|---|---|
display_names_locale |
Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei metadati del modello dell'attività, se disponibili. Il valore predefinito è en per
l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato utilizzando l'API Metadata Writer di TensorFlow Lite
| Codice impostazioni internazionali | it |
max_results |
Imposta il numero massimo facoltativo di risultati di classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili. | Eventuali numeri positivi | -1 |
score_threshold |
Imposta la soglia del punteggio di previsione che sostituisce quella fornita nei metadati del modello (se presenti). I risultati inferiori a questo valore vengono rifiutati. | Qualsiasi elemento in virgola mobile | Non impostata |
category_allowlist |
Consente di impostare l'elenco facoltativo di nomi di categorie consentite. Se il campo non è vuoto,
i risultati della classificazione il cui nome categoria non è presente in questo set verranno
filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati.
Questa opzione si esclude a vicenda con category_denylist e l'utilizzo di entrambe genera un errore. |
Qualsiasi stringa | Non impostata |
category_denylist |
Consente di impostare l'elenco facoltativo di nomi di categorie non consentiti. Se il campo non è vuoto, i risultati di classificazione il cui nome di categoria è presente in questo set verranno filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con category_allowlist e l'uso di entrambe genera un errore. |
Qualsiasi stringa | Non impostata |
Preparazione dei dati
Il classificatore 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 classify
. Non è necessaria
un'ulteriore pre-elaborazione del testo di input.
input_text = 'The input text to be classified.'
Esegui l'attività
Il classificatore di testo utilizza la funzione classify
per attivare le inferenze. Per la classificazione del testo, ciò significa restituire le possibili categorie per il testo di input.
Il seguente codice mostra come eseguire l'elaborazione con il modello di attività.
with python.text.TextClassifier.create_from_options(options) as classifier:
classification_result = classifier.classify(text)
Gestire e visualizzare i risultati
Il classificatore di testo restituisce un oggetto TextClassifierResult
contenente un elenco di possibili categorie per il testo di input. Le categorie sono definite dal modello utilizzato, quindi se vuoi categorie diverse, scegli un modello diverso o riaddestra uno esistente.
Di seguito è riportato un esempio dei dati di output di questa attività:
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
Questo risultato è stato ottenuto eseguendo il classificatore BERT sul testo di input:
"an imperfect but overall entertaining mystery"
.