Previsione del sentimento dai tweet COVID-19

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati.

introduzione

come riabilitare le persone attraverso l'uso di dati e informazioni pertinenti.

In questo progetto, prevediamo i sentimenti dei tweet COVID-19. I dati raccolti dal Tweeter e useremo l'ambiente Python per implementare questo progetto.

Dichiarazione problema

La sfida data è quella di costruire un modello di classificazione per prevedere il sentimento dei tweet Covid-19.. I tweet sono stati estratti da Twitter ed è stata eseguita la codifica manuale. Riceviamo informazioni come Posizione, Tuitear en, Tweet originale e Sentimiento.

Approccio per analizzare vari sentimenti

prima di continuare, è utile sapere cosa si intende per sentiment analysis. L'analisi del sentiment è il processo di identificazione e classificazione computazionale delle opinioni espresse in un testo, soprattutto per determinare se l'atteggiamento dello scrittore verso un particolare argomento è positivo, Negativo o Neutro. (dizionario di Oxford)

Di seguito è riportata la procedura operativa standard per l'approccio al tipo di progetto di analisi del sentimento. Seguiremo questa procedura per prevedere ciò che dovremmo prevedere!!

  1. Analisi esplorativa dei dati.

  2. Pretrattamento dei dati.

  3. Vettorializzazione.

  4. Modelli di classificazione.

  5. Valutazione.

  6. conclusione.

Indovina qualche tweet

Leggerò il tweet e puoi dirmi il sentimento di quel tweet se è positivo?, negativo o neutro? Quindi il primo tweet è “Mi stupisce ancora quanti dipendenti del supermercato di #Toronto lavorino senza una sorta di mascherina. Sappiamo tutti ormai che i dipendenti possono essere asintomatici durante la trasmissione del #coronavirus”. Qual è la tua ipotesi?? sì, hai ragione. Questo è un tweet negativo perché contiene parole negative come “Sorpreso”.

Se non riesci a indovinare il tweet qui sopra, Non preoccuparti, Ho un altro tweet per te. Indovina questo tweet-"A causa della situazione Covid-19, abbiamo aumentato la domanda di tutti i prodotti alimentari. Il tempo di consegna potrebbe essere più lungo per tutti gli ordini online, in particolare i pacchetti di condivisione del congelatore e della carne. Vi ringraziamo per la vostra pazienza in questo periodo".. Questa volta hai assolutamente ragione nel prevedere questo tweet come “Positivo”. Parole come “Grazie”, “Maggiore richiesta” sono ottimisti in natura, quindi queste parole hanno classificato il tweet come positivo.

Riepilogo dati

Il set di dati originale ha 6 colonne e 41157 righe. Per analizzare vari sentimenti, abbiamo solo bisogno di due colonne chiamate Original Tweet e Sentiment. Ci sono cinque tipi di sentimenti: Estremamente negativo, negativo, neutro, positivo ed estremamente positivo come puoi vedere nell'immagine seguente.

56118data20summary-1630560

Riepilogo set di dati

Analisi di base dei dati esplorativi

Colonne come “Nome utente” e “Nome della schermata"Non forniscono informazioni significative per la nostra analisi. Perciò, non usiamo queste funzioni per la costruzione del modello. Tutti i dati dei tweet raccolti per i mesi di marzo e aprile 2020. Il seguente grafico a barre ci mostra il numero di valori univoci in ogni colonna.

56103unique20values-4577149

Ci sono alcuni valori nulli nella colonna della posizione, ma non abbiamo bisogno di prenderci cura di loro, poiché useremo solo due colonne, vale a dire, “Sentimento” e “Tweet originale". La maggior parte dei tweet è arrivata dalla sede di Londra (11,7%), como se desprende de la siguiente figura.

67792rapporto 20 di 20 posizione-6014881

Ci sono alcune parole come "coronavirus", 'negozio di alimentari', che hanno la frequenza massima nel nostro set di dati. Possiamo vederlo nella seguente nuvola di parole. Ci sono diversi #hashtag nella colonna dei tweet. Ma sono quasi uguali in tutti i sentimenti, quindi non ci forniscono informazioni complete e significative.

85272world20cloud-8255543

World Cloud che mostra le parole che hanno una frequenza massima nella nostra colonna Tweet

87807hashtag-8988051

Quando proviamo ad esplorare la colonna "Feeling", abbiamo scoperto che la maggior parte delle persone ha sentimenti positivi su vari argomenti, cosa ci mostra il tuo ottimismo in tempi di pandemia. Pochissime persone hanno pensieri estremamente negativi sul Covid-19.

17245sentimento20count-5558933

Pretrattamento dei dati

La pre-elaborazione dei dati di testo è un passaggio essenziale, in quanto rende il testo in chiaro pronto per l'estrazione. L'obiettivo di questo passaggio è ripulire i rumori meno rilevanti per trovare il sentimento di tweet come punteggiatura(.,?, "Eccetera.), personaggi speciali(@,%, &, $, eccetera.), numeri(1,2,3, eccetera.), mango il tweeter, link(HTTPS: / HTTP:) e termini che non hanno molto peso nel contesto del testo.

83662tweet20single-4100190

Cosa c'è di più, dobbiamo rimuovere le parole vuote dai tweet. Le stopword sono quelle parole del linguaggio naturale che hanno pochissimo significato., Che cosa “è”, “un”, “il”, eccetera. Per rimuovere le stopword da una frase, puoi suddividere il testo in parole e quindi eliminare la parola se esiste nell'elenco di parole non significative fornito da NLTK.

Dopo, dobbiamo normalizzare i tweet usando Stemming o Lemmatization. “Stemming ”è un processo basato su regole per rimuovere i suffissi (" ns "," mento "," è ",“ed”," S ", eccetera.) di una parola. Ad esempio, “giocare a”, “giocatore”, “giocato”, “giocare a” e “giocare a” sono le diverse varianti della parola – “giocare a”.

41564derivando-5718178

La derivazione non convertirà le parole originali in parole significative. Come potete vedere, “considerato” è derivato in “condizione”, che non ha significato ed è anche un errore di ortografia. Il modo migliore è usare lo stemming invece del processo di derivazione.

La derivazione è un'operazione più potente e prende in considerazione l'analisi morfologica delle parole. Restituisce il motto, che è la forma base di tutte le sue forme flessive.

16582lemma-8257270

Qui, nel processo di lemmatizzazione, stiamo girando la parola “alzare” alla sua forma base “alzare”. También necesitamos convertir todos los tweets a minúsculas antes de realizar el proceso de standardizzazione.

Possiamo includere il processo di tokenizzazione. Nella tokenizzazione, convertiamo un gruppo di frasi in token. También se denomina segmentazione de texto o análisis léxico. Fondamentalmente, si tratta di dividere i dati in un piccolo numero di parole. La tokenizzazione in Python può essere eseguita da Python NLTK word_tokenize funzione () dalla biblioteca.

Vettorializzazione

Possiamo usare un vettore di conteggio o un vettore TF-IDF. Count Vectorizer creerà un array sparso di tutte le parole e il numero di volte in cui sono presenti in un documento.

TFIDF, Corto per termine inverso frequenza-frequenza del documento, è una statistica numerica che cerca di riflettere l'importanza di una parola per un documento in una raccolta o corpus. Il valore TF - IDF aumenta proporzionalmente al numero di volte che una parola compare nel documento ed è compensato dal numero di documenti nel corpus che contengono la parola, che aiuta ad adattarsi al fatto che alcune parole appaiono più frequentemente in generale. (wiki)

Modelli di classificazione degli edifici

Il problema dato è la classificazione ordinale multiclasse. Ci sono cinque tipi di sentimenti, quindi dobbiamo addestrare i nostri modelli in modo che possano darci l'etichetta corretta per il set di dati di test. Costruirò diversi modelli come Bayes ingenuo, Regressione logistica, foresta casuale, XGBoost, supporta macchine vettoriali, CatBoost y descenso de gradiente Stocastico.

He usado el problema dado de Clasificación multiclase que es una variabile dependiente que tiene los valores -Positivo, Estremamente positivo, Neutro, Negativo, Estremamente negativo. Converti anche questo problema in una classificazione binaria, vale a dire, Ho classificato tutti i tweet solo in due tipi Positivo e Negativo. Puoi anche optare per la classificazione a tre classi, vale a dire, Positivo, Negativo e Neutro per una maggiore precisione. In fase di valutazione, confronteremo i risultati di questi algoritmi.

62382confronto201-6919137
71246confronto202-9820346

Importanza della funzione

il importanza delle caratteristiche (importanza variabile) descrivere quale caratteristiche è rilevante. Può aiutare a capire meglio il problema risolto e, A volte, portare a miglioramenti del modello impiegando caratteristica selezione. Le prime tre parole evidenziate sono panico, crisi e truffa, come possiamo vedere nel grafico seguente.

23369feature20imp-4413934

conclusione

In questo modo, possiamo esplorare ulteriormente da vari tweet e dati testuali. I nostri modelli cercheranno di prevedere correttamente i diversi sentimenti. Ho usato vari modelli per addestrare il nostro set di dati, ma alcuni modelli mostrano una maggiore precisione mentre altri no. Per la classificazione multiclasse, il miglior modello per questo set di dati sarebbe CatBoost. Per la classificazione binaria, il modello migliore per questo set di dati sarebbe Stochastic Gradient Descent.

(Puoi accedere al codice Python di questo progetto da questo link-https://github.com/rajeshmore1/Capstone-Project-2 )

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.