Guida alla classificazione del testo per Python

L'attività Classificatore di testo MediaPipe ti consente di classificare il testo in un insieme di categorie definite, come sentiment positivi o negativi. Le categorie sono determinate dal modello che usi e come è stato addestrato quel modello. Queste istruzioni mostrano come utilizzare il classificatore di testo con Python.

Puoi vedere questa attività in azione visualizzando la Demo web. Per ulteriori informazioni su funzionalità, modelli di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per il classificatore di testo fornisce un'implementazione completa un'attività in Python come riferimento. Questo codice ti consente di testare l'attività e ottenere a creare la tua app di classificazione del testo. Puoi visualizzare, eseguire modifica il Classificatore di testo esempio di codice usando solo il browser web.

Se implementi il classificatore di testo per Raspberry Pi, consulta le Esempio di Raspberry Pi Google Cloud.

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice che usano Classificatore di testo. Per informazioni generali su l'impostazione dell'ambiente di sviluppo per l'utilizzo di Attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta 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 dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per il classificatore di testo, consulta la panoramica delle attività nella sezione Modelli.

Seleziona e scarica un modello, quindi archivialo in una directory locale:

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

Specifica il percorso del modello con l'oggetto BaseOptions model_asset_path come mostrato di seguito:

base_options = BaseOptions(model_asset_path=model_path)

Crea l'attività

L'attività Classificatore di testo MediaPipe utilizza la funzione create_from_options per configurare dell'attività. La funzione create_from_options accetta valori per la configurazione per impostare le opzioni di classificazione. Puoi anche inizializzare l'attività utilizzando la funzione di fabbrica create_from_model_path. 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 illustra 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à include 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 nel metadati del modello dell'attività, se disponibili. Il valore predefinito è en per Inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato Utilizzando l'API TensorFlow Metadata Writer Codice impostazioni internazionali it
max_results Imposta il numero massimo facoltativo di risultati della classificazione con il punteggio più alto su per tornare indietro. Se < 0, verranno restituiti tutti i risultati disponibili. Qualsiasi numero positivo -1
score_threshold Imposta la soglia del punteggio di previsione che sostituisce quella fornita in gli eventuali metadati del modello. I risultati al di sotto di questo valore vengono rifiutati. Qualsiasi numero in virgola mobile Non impostato
category_allowlist Consente di impostare l'elenco facoltativo di nomi di categorie consentiti. Se il campo non è vuoto, i risultati della classificazione i cui nome non è incluso in questo set saranno esclusi. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con category_denylist e utilizza entrambi generano un errore. Qualsiasi stringa Non impostato
category_denylist Consente di impostare un elenco facoltativo di nomi di categorie non consentiti. Se non vuoti, i risultati di classificazione con nome della categoria incluso in questo set verranno filtrati fuori. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è reciproca è esclusivo con category_allowlist e l'utilizzo di entrambi genera un errore. Qualsiasi stringa Non impostato

Preparazione dei dati

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

Tutte le pre-elaborazioni vengono gestite all'interno della funzione classify. Non è necessario per un'ulteriore pre-elaborazione del testo di input in anticipo.

input_text = 'The input text to be classified.'

Esegui l'attività

Il classificatore di testo utilizza la funzione classify per attivare le inferenze. Per testo la classificazione, ciò significa restituire le possibili categorie per il testo di input.

Il codice seguente mostra come eseguire l'elaborazione con l'attività un modello di machine learning.

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 modello utilizzato, quindi se vuoi categorie diverse, scegli un modello diverso, o riaddestrare una rete 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".