Esperienza di classificazione del testo senza supervisione con Scikit-LLM

Esperienza di classificazione del testo non supervisionata con Scikit-LLM

La classificazione del testo è una delle applicazioni più comuni del processing del linguaggio naturale (NLP). È il compito di assegnare un insieme di classi predefinite a porzioni di testo in un documento. La classificazione del testo può essere utile in molte applicazioni, come l’analisi dei sentimenti, il rilevamento dello spam, la modellazione dei temi, la sintesi dei documenti e altro ancora.

L’approccio standard alla classificazione del testo consiste nell’addestrare un modello in modo supervisionato. Tuttavia, seguendo questa metodologia, i risultati dipendono dalla disponibilità di dati di addestramento etichettati a mano. Ad esempio, nelle applicazioni del mondo reale, la disponibilità dei dati può essere un problema e la classificazione del testo a zero-shot è un nuovo approccio che sta diventando sempre più popolare.

Cos’è la classificazione del testo a zero-shot?

Prima di introdurre la classificazione del testo a zero-shot, è necessario parlare dell’apprendimento a zero-shot che mira a eseguire la modellazione utilizzando una quantità minore di dati etichettati. Sì, esattamente, può essere pensato come un’istanza di trasferimento di apprendimento, che è un metodo di apprendimento automatico in cui un modello sviluppato per un compito viene riutilizzato come punto di partenza per un modello su un secondo compito. Sfrutta il concetto del processo di apprendimento per esperienza. Questo metodo è utile quando c’è una quantità limitata di dati etichettati disponibili. La classificazione del testo è un compito di processing del linguaggio naturale in cui il modello predice le classi di porzioni di testo in un documento. L’approccio tradizionale richiede una grande quantità di dati etichettati per addestrare il modello e fallisce quando non c’è abbastanza dati etichettati nel processo di addestramento. Risolvendo il compito di classificazione del testo con l’apprendimento a zero-shot, otteniamo la classificazione del testo a zero-shot, che ha il compito di classificare i documenti di testo senza aver visto alcuna classe di testo etichettata prima durante il processo di addestramento, e un modo per farlo è utilizzare l’implicazione del linguaggio naturale (NLI) proposta da Yin et al (2019). Puoi trovare implementazioni della classificazione a zero-shot nei modelli del trasformatore e nel repository hugging face, dove questi modelli sono disponibili.

Cos’è Scikit-LLM?

Scikit-learn è una delle librerie Python open-source più conosciute e ampiamente utilizzate nel campo dell’apprendimento automatico da parte dei data scientist grazie alla vasta gamma di modelli e alla facilità d’uso. È possibile risolvere qualsiasi compito, dalla regressione alla classificazione, dal clustering alla riduzione della dimensionalità, utilizzando una sola libreria. Scikit-LLM è una libreria Python che incorpora ampi modelli di linguaggio nel framework scikit-learn. È uno strumento per eseguire compiti di processing del linguaggio naturale (NLP) all’interno del flusso di lavoro scikit-learn. Scikit-LLM sta crescendo, ha iniziato ad integrare modelli OpenAI (come ChatGPT) e ora PaLM 2. Ad esempio, è un wrapper dell’API di OpenAI.

Riferendosi sempre all’interfaccia con OpenAI, di seguito le funzionalità fornite da Scikit-LLM:

-Classificazione del testo a zero-shot

-Classificazione del testo a few-shot

-Classificazione del testo a few-shot dinamica

-Classificazione del testo a multi-etichetta a zero-shot

-Vettorizzazione del testo

-Traduzione del testo

-Sommario del testo

Obiettivo dell’analisi

Lo scopo del lavoro è esplorare le performance dei modelli GPT:

-GPT-3.5 turbo con capacità di 4.097 token

-GPT-3.5 turbo-16k con capacità di 16.385 token

-GPT-4 con capacità di 8.192 token

tramite l’approccio della classificazione del testo a zero-shot utilizzando due set di dati.

Il primo riguarda l’analisi dei sentimenti su un set di dati finanziari con 3 polarità: positiva, neutra e negativa.

Il secondo riguarda la classificazione del testo su un set di dati degli articoli CNN con 6 etichette: business, intrattenimento, salute, notizie, politica e sport.

In entrambe le situazioni, sono stati utilizzati campioni recuperati con campionamento stratificato e una dimensione del campione del 10% dell’intero set di dati per risparmiare sforzo computazionale.

Dato che entrambi i set di dati sono etichettati, ciò ha permesso una valutazione dei risultati, inizialmente con la matrice di confusione e successivamente con il punteggio F1 adattato per il multiclasse: punteggio F1 micro-mediato.

L’esperienza può essere seguita in questo notebook.

Analisi

La prima attività utilizza un set di dati per l’analisi dei sentimenti finanziari basato su frasi finanziarie con etichette di sentiment e 5842 righe.

Ci sono 3 etichette di sentiment con la predominanza della classe “neutrale”, e l’esperimento è stato condotto su 584 righe.

Osservando la matrice di confusione di GPT-4, possiamo vedere una buona allocazione diagonale sinistra dei dati previsti.

Dal punteggio F1, tutti i modelli raggiungono più del 70% di punteggio. GPT-4, come previsto, è il modello migliore nella prima esperienza.

La seconda attività utilizza un set di dati per la classificazione del testo multiclasse basata sulle notizie CNN raccolte dal 2013 al 2022 con 11 variabili e 9307 righe.

La colonna “part_of” rappresenta la categoria delle notizie, e sono state utilizzate etichette per la variabile target, nel frattempo, la colonna “Descrizione” è stata utilizzata per eseguire la classificazione del testo senza etichetta.

Ci sono 6 classi, con la predominanza delle classi “notizie” e “sport”, e l’esperimento è stato condotto su 931 righe.

Osservando la matrice di confusione di GPT-4, possiamo vedere un’allocazione migliorata sulla diagonale sinistra dei dati previsti rispetto alla prima attività.

Dal punteggio F1, i modelli di GPT-3.5 raggiungono un po’ meno di prestazioni rispetto alla prima attività, ma più del 70% di punteggio. GPT-4 se la cava meglio con un salto rispetto agli altri modelli, raggiungendo più dell’80% del punteggio.

Considerazioni finali

GPT-3.5 turbo 16k ha prestazioni leggermente inferiori rispetto a GPT-3.5 turbo, ma è più veloce. GPT-4, d’altra parte, supera l’analisi dei sentimenti e la classificazione del testo multiclasse ed è molto migliore nell’ultimo caso, ma è più lento e più costoso degli altri.

Eseguendo il notebook su l’intero set di dati, questi risultati potrebbero essere leggermente diversi perché ho preso un campione stratificato pari al 10% della dimensione dei set di dati, che è lo stesso quando si divide il set di dati in dieci fold con una cross-validazione stratificata e si sceglie solo un fold. Inoltre, in Scikit-LLM, non c’è ancora l’opportunità di regolare la funzionalità di temperatura per avere risultati più deterministici.

Comunque, penso che sia utile avere un’idea delle capacità che questi modelli possono raggiungere con un approccio di classificazione del testo zero-shot. Pertanto, la classificazione del testo zero-shot potrebbe essere una soluzione quando i dati di addestramento sono meno disponibili o quando non esistono affatto. La loro applicabilità universale li rende molto interessanti, anche se i modelli preaddestrati di grandi dimensioni sicuramente continuano a essere migliori. Sicuramente, l’apprendimento zero-shot potrebbe diventare sempre più rilevante nei prossimi anni perché i grandi modelli di linguaggio stanno diventando un elemento rivoluzionario nel modo in cui utilizziamo i modelli per risolvere i compiti.

L’ultima cosa da dire su Scikit-LLM è che è uno strumento potente per l’elaborazione del linguaggio naturale, che combina la versatilità della libreria Scikit-Learn con il potenziale derivante dai modelli di linguaggio di grandi dimensioni. Sicuramente, non è paragonabile a LangChain, ma sta crescendo ed è sicuramente utile.

Riferimenti

Notebook

Dati finanziari

Articoli di notizie CNN

-Classificazione del testo zero-shot di Statworx

-Benchmarking della classificazione del testo zero-shot: dataset, valutazione e approccio di implicazione

-Modelli OpenAI

Scikit-LLM