Analisi del sentiment di Twitter utilizzando Python

Analisi del sentiment di Twitter utilizzando Python

L'analisi del sentiment di Twitter è il processo che utilizza Python per comprendere automaticamente le emozioni o le opinioni espresse nei tweet. Analizzando il testo possiamo classificare i tweet come positivi negativi o neutri. Ciò aiuta le aziende e i ricercatori a monitorare la reputazione del marchio sull’umore del pubblico o le reazioni agli eventi in tempo reale. Le librerie Python come TextBlob Tweepy e NLTK semplificano la raccolta dei tweet, l'elaborazione del testo e l'esecuzione efficiente dell'analisi del sentiment. Analisi del sentiment di Twitter utilizzando Python

In che modo è utile l'analisi del sentiment di Twitter?

  • L’analisi del sentiment di Twitter è importante perché aiuta le persone e le aziende a capire cosa pensa il pubblico in tempo reale.
  • Ogni giorno vengono pubblicati milioni di tweet che condividono opinioni su marchi, prodotti, eventi o questioni sociali. Analizzando questo enorme flusso di dati, le aziende possono misurare tempestivamente le tendenze della soddisfazione dei clienti, gestire rapidamente i feedback negativi e prendere decisioni migliori in base a come si sentono effettivamente le persone.
  • È utile anche per ricercatori e governi monitorare l’umore del pubblico durante le crisi elettorali o i grandi eventi poiché trasforma i tweet grezzi in informazioni preziose.

Implementazione passo dopo passo

Passaggio 1: installare le librerie necessarie

Questo blocco installa e importa le librerie richieste. Utilizza panda per caricare e gestire i dati TfidfVectorizer per trasformare il testo in numeri e scikit impara per addestrare il modello.

Python
   pip   install   pandas   scikit  -  learn   import   pandas   as   pd   from   sklearn.feature_extraction.text   import   TfidfVectorizer   from   sklearn.model_selection   import   train_test_split   from   sklearn.naive_bayes   import   BernoulliNB   from   sklearn.linear_model   import   LogisticRegression   from   sklearn.svm   import   LinearSVC   from   sklearn.metrics   import   accuracy_score     classification_report   

Passaggio 2: caricare il set di dati

  • Qui carichiamo il file Set di dati Sentiment140 da un file CSV compresso puoi scaricarlo da Kaggle.
  • Manteniamo solo la polarità e le colonne di testo del tweet le rinominiamo per chiarezza e stampiamo le prime righe per controllare i dati.
Python
   df   =   pd  .  read_csv  (  'training.1600000.processed.noemoticon.csv.zip'     encoding  =  'latin-1'     header  =  None  )   df   =   df  [[  0     5  ]]   df  .  columns   =   [  'polarity'     'text'  ]   print  (  df  .  head  ())   

Produzione:

ProduzioneProduzione

Passaggio 3: mantieni solo sentimenti positivi e negativi

  • Qui rimuoviamo i tweet neutri in cui la polarità è 2 mappamo le etichette in modo che 0 rimanga negativo e 4 diventi 1 per positivo.
  • Quindi stampiamo quanti tweet positivi e negativi sono rimasti nei dati.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Produzione:

Schermata-2025-07-09-092140Produzione

Passaggio 4: pulisci i tweet

  • Qui definiamo una semplice funzione per convertire tutto il testo in minuscolo per coerenza applicandola a ogni tweet nel set di dati.
  • Quindi mostra le versioni originali e pulite dei primi tweet.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Produzione:

ProduzioneProduzione

Passaggio 5: suddivisione del test del treno

  • Questo codice divide le colonne clean_text e polarity in set di training e test utilizzando una suddivisione 80/20.
  • random_state=42 garantisce la riproducibilità.
Python
   X_train     X_test     y_train     y_test   =   train_test_split  (   df  [  'clean_text'  ]   df  [  'polarity'  ]   test_size  =  0.2     random_state  =  42   )   print  (  'Train size:'     len  (  X_train  ))   print  (  'Test size:'     len  (  X_test  ))   

Produzione:

Dimensione del treno: 1280000
Dimensione del test: 320000

Passaggio 6: eseguire la vettorizzazione

  • Questo codice crea un vettorizzatore TF IDF che converte il testo in caratteristiche numeriche utilizzando unigrammi e bigrammi limitati a 5000 caratteristiche.
  • Adatta e trasforma i dati di addestramento e trasforma i dati di test, quindi stampa le forme delle matrici TF IDF risultanti.
Python
   vectorizer   =   TfidfVectorizer  (  max_features  =  5000     ngram_range  =  (  1    2  ))   X_train_tfidf   =   vectorizer  .  fit_transform  (  X_train  )   X_test_tfidf   =   vectorizer  .  transform  (  X_test  )   print  (  'TF-IDF shape (train):'     X_train_tfidf  .  shape  )   print  (  'TF-IDF shape (test):'     X_test_tfidf  .  shape  )   

Produzione:

Forma TF-IDF (treno): (1280000 5000)
Forma TF-IDF (test): (320000 5000)

Passo 7: Addestra il modello Bernoulli Naive Bayes

  • Qui alleniamo a Bernoulli Naive Bayes classificatore sulle funzionalità TF IDF dai dati di addestramento.
  • Prevede le opinioni sui dati del test e quindi stampa l'accuratezza e un rapporto di classificazione dettagliato.
Python
   bnb   =   BernoulliNB  ()   bnb  .  fit  (  X_train_tfidf     y_train  )   bnb_pred   =   bnb  .  predict  (  X_test_tfidf  )   print  (  'Bernoulli Naive Bayes Accuracy:'     accuracy_score  (  y_test     bnb_pred  ))   print  (  '  n  BernoulliNB Classification Report:  n  '     classification_report  (  y_test     bnb_pred  ))   

Produzione:

ProduzioneProduzione

Passaggio 9: modello Train Support Vector Machine (SVM).

  • Questo codice addestra a Supporto macchina vettoriale (SVM) con un massimo di 1000 iterazioni sulle funzionalità TF IDF.
  • Prevede le etichette di prova, quindi stampa la precisione e un rapporto di classificazione dettagliato che mostra le prestazioni dell'SVM.
Python
   svm   =   LinearSVC  (  max_iter  =  1000  )   svm  .  fit  (  X_train_tfidf     y_train  )   svm_pred   =   svm  .  predict  (  X_test_tfidf  )   print  (  'SVM Accuracy:'     accuracy_score  (  y_test     svm_pred  ))   print  (  '  n  SVM Classification Report:  n  '     classification_report  (  y_test     svm_pred  ))   

Produzione:

ProduzioneProduzione

Passaggio 10: modello di regressione logistica del treno

  • Questo codice addestra a Regressione logistica modello con un massimo di 100 iterazioni sulle funzionalità TF IDF.
  • Prevede le etichette di sentiment per i dati di test e stampa l'accuratezza e il rapporto di classificazione dettagliato per la valutazione del modello.
Python
   logreg   =   LogisticRegression  (  max_iter  =  100  )   logreg  .  fit  (  X_train_tfidf     y_train  )   logreg_pred   =   logreg  .  predict  (  X_test_tfidf  )   print  (  'Logistic Regression Accuracy:'     accuracy_score  (  y_test     logreg_pred  ))   print  (  '  n  Logistic Regression Classification Report:  n  '     classification_report  (  y_test     logreg_pred  ))   

Produzione:

ProduzioneProduzione

Passaggio 11: fai previsioni sui tweet di esempio

  • Questo codice prende tre tweet di esempio e li trasforma in funzionalità TF IDF utilizzando lo stesso vettorizzatore.
  • Quindi prevede il loro sentiment utilizzando i modelli BernoulliNB SVM e Regressione Logistica addestrati e stampa i risultati per ciascun classificatore.
  • Dove 1 sta per Positivo e 0 per Negativo.
C++
   sample_tweets     =     [  'I love this!'       'I hate that!'       'It was okay not great.'  ]   sample_vec     =     vectorizer  .  transform  (  sample_tweets  )   print  (  '  n  Sample Predictions:'  )   print  (  'BernoulliNB:'       bnb  .  predict  (  sample_vec  ))   print  (  'SVM:'       svm  .  predict  (  sample_vec  ))   print  (  'Logistic Regression:'       logreg  .  predict  (  sample_vec  ))   

Produzione:

ProduzioneProduzione

Possiamo vedere che i nostri modelli funzionano bene e forniscono le stesse previsioni anche con approcci diversi.

Puoi scaricare il codice sorgente da qui- Analisi del sentiment di Twitter utilizzando Python

Crea quiz