Analisi del Sentimento in Python Utilizzando Flair

Analisi del Sentimento con Flair in Python.

Benvenuti al prossimo post nel blog della serie sull’analisi del sentiment! Oggi, esploreremo Flair, uno dei metodi utilizzati nella libreria Python per l’analisi del sentiment.

Foto di Brian Lundquist su Unsplash

L’analisi del sentiment è stata effettuata per il film “Extraction 2” utilizzando i dati raccolti da Twitter. Puoi trovare i dati su kaggle.com scaricali da questo link. Puoi trovare l’elenco completo della serie di analisi del sentiment a questo link, che include l’estrazione dei dati da Twitter, la preelaborazione e l’analisi del sentiment utilizzando TextBlob e l’analisi del sentiment utilizzando Vader.

Flair per l’analisi del sentiment: una potente libreria NLP

Flair è una libreria NLP sviluppata da Zalando Research [1], che si concentra sulle attività di analisi del sentiment. Utilizza l’etichettatura delle sequenze, un approccio di apprendimento profondo, per addestrare modelli a prevedere le etichette di sentiment per ogni parola o token in un testo [2]. Ciò consente al modello di catturare il sentiment espresso da singole parole o frasi all’interno di una frase o di un documento. Flair fornisce modelli preaddestrati in diverse lingue [3] che possono essere utilizzati senza richiedere una formazione iniziale considerevole. Inoltre, consente di addestrare ulteriormente i modelli preaddestrati utilizzando set di dati unici pertinenti per un’applicazione o un’area specifica.

Il principale vantaggio di Flair è la sua capacità di estrarre informazioni contestuali [2], tenendo conto delle parole circostanti e della struttura delle frasi, al fine di comprendere pienamente l’umore comunicato in testi complicati e confusi. I dati di testo devono essere preelaborati prima che il modello preaddestrato possa essere caricato e utilizzato per prevedere l’emozione degli input utilizzando Flair. L’API user-friendly e semplice rende più facile l’integrazione delle capacità di analisi del sentiment nelle applicazioni NLP. Flair è uno strumento efficace per accademici e sviluppatori per creare modelli precisi di analisi del sentiment per una varietà di applicazioni, tra cui il monitoraggio dei social media, l’analisi dei feedback dei clienti e il mining delle opinioni [2].

Nota: Per installare Flair possiamo utilizzare pip install flair

classifier = TextClassifier.load('en-sentiment')for index, row in df.iterrows():    text = row['tokens']      sentence = Sentence(text)    classifier.predict(sentence)    sentiment = sentence.labels[0].value    score = sentence.labels[0].score    df.loc[index, 'sentiment'] = sentiment    df.loc[index, 'score'] = scoreprint(df.head())

Di seguito è riportato il frammento di codice principale utilizzato per l’analisi del sentiment utilizzando Flair.

# Carica il modello preaddestrato per l'analisi del sentimentclassifier = TextClassifier.load('en-sentiment')# Itera su ogni riga nel DataFrame # :( è davvero lento :(for index, row in df.iterrows():    text = row['tokens']      sentence = Sentence(text)        # Prevedi il sentiment per la frase corrente    classifier.predict(sentence)        # Ottieni il sentiment e il punteggio previsti    sentiment = sentence.labels[0].value    score = sentence.labels[0].score        # Aggiorna il DataFrame con il sentiment e il punteggio    df.loc[index, 'sentiment'] = sentiment    df.loc[index, 'score'] = score# Stampa la colonna 'sentiment' del DataFrameprint(df['sentiment'])

Il campione di codice categorizza i sentimenti in un DataFrame utilizzando il pacchetto Flair. Ogni voce nel DataFrame viene elaborata utilizzando un modello di analisi del sentiment caricato. Il classificatore viene utilizzato per determinare il sentiment e le previsioni di punteggio per ogni testo. Il sentiment e il punteggio previsti vengono quindi aggiunti al DataFrame.

Il codice sopra ha aggiunto due nuove colonne, che sono

Fonte dell'immagine: dall'autore.

Visualizzazione

Successivamente, la libreria matplotlib viene importata come plt. Il codice conta le occorrenze di ogni categoria di sentiment nella colonna ‘sentiment’ del DataFrame e memorizza i conteggi nella variabile sentiment_counts. Quindi, viene creato un grafico a barre.

import matplotlib.pyplot as plt# Conta le occorrenze di ogni etichetta di sentimentosentiment_counts = df['sentiment'].value_counts()# Crea un grafico a tortaplt.pie(sentiment_counts.values, labels=sentiment_counts.index, autopct='%1.1f%%')plt.title('Risultati dell'analisi del sentiment')plt.show()# Stampa il numero di conteggi per ogni sentimentfor sentiment, count in sentiment_counts.items():    print(f"{sentiment}: {count}")
Fonte dell'immagine: Dall'autore.

Conclusioni

Basandoci sui risultati dell’analisi del sentiment ottenuti utilizzando Flair per i dati del film Extraction 2 raccolti da Twitter, abbiamo i seguenti conteggi di sentiment

NEGATIVO: 6073

POSITIVO: 3926

Come si può vedere, contiene solo sentimenti negativi e positivi. Interessante è che trascura i sentimenti neutrali. Una ragione ovvia per questo è che le etichette di sentiment utilizzate nei modelli di analisi del sentiment pre-addestrati di Flair di solito includono sentimenti positivi e negativi, ma non neutrali.

Possiamo estendere le capacità di analisi del sentiment di Flair addestrando un modello personalizzato che includa un’etichetta di sentimento neutra. Tuttavia, si prega di notare che questo richiederebbe la raccolta o l’annotazione di un dataset adeguato e l’addestramento del modello specificamente per il tuo compito di classificazione del sentimento desiderato.

Basandoci sui conteggi di sentiment sopra riportati, sembra che il film abbia ricevuto un feedback negativo, che è dovuto alla mancanza di sentimenti neutrali nel modello pre-addestrato. Quindi potrebbe non riflettere l’analisi chiara che stiamo cercando. Sarebbe saggio costruire un modello personalizzato sui nostri dati e fare ulteriori analisi.

Riferimenti

[1] Zalando Research. (s.d.). Flair — una potente libreria NLP. Recuperato da https://github.com/zalandoresearch/flair

[2] Akbik, A., Blythe, D., & Vollgraf, R. (2018). Contesti di incorporamenti di stringhe per l’etichettatura di sequenze. Recuperato da https://www.aclweb.org/anthology/C18-1139/

[3] Akbik, A., Bergmann, T., Blythe, D., Rasul, K., Schweter, S., Vollgraf, R., & Zalando SE. (2019). FLAIR: Un framework facile da usare per NLP all’avanguardia. Recuperato da https://www.aclweb.org/anthology/N19-4010/

SEGUIMI per far parte del mio percorso di Data Analyst su VoAGI.

Restiamo in contatto su Twitter o puoi scrivermi una email all’indirizzo [email protected] per collaborazioni, condivisione di conoscenze o assistenza per progetti.