Análise de sentimento do Twitter usando Python

Análise de sentimento do Twitter usando Python

Análise de sentimento do Twitter é o processo de usar Python para compreender automaticamente as emoções ou opiniões expressas em tweets. Ao analisar o texto podemos classificar os tweets como positivos, negativos ou neutros. Isso ajuda empresas e pesquisadores a rastrear a reputação da marca ou as reações do público a eventos em tempo real. Bibliotecas Python como TextBlob Tweepy e NLTK facilitam a coleta de tweets, processam o texto e realizam análises de sentimento com eficiência. Análise de sentimento do Twitter usando Python

Como a análise de sentimento do Twitter é útil?

  • A análise de sentimento do Twitter é importante porque ajuda pessoas e empresas a entender o que o público pensa em tempo real.
  • Milhões de tweets são postados todos os dias compartilhando opiniões sobre eventos de produtos de marcas ou questões sociais. Ao analisar esse enorme fluxo de dados, as empresas podem medir a satisfação do cliente, detectar tendências antecipadamente, lidar com feedback negativo rapidamente e tomar decisões melhores com base em como as pessoas realmente se sentem.
  • Também é útil para investigadores e governos monitorizarem o humor do público durante crises eleitorais ou grandes eventos, pois transforma tweets brutos em informações valiosas.

Implementação passo a passo

Etapa 1: instale as bibliotecas necessárias

Este bloco instala e importa as bibliotecas necessárias. Ele usa pandas para carregar e manipular dados Vetorizador Tfidf para transformar texto em números e aprender para treinar modelo.

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   

Etapa 2: carregar conjunto de dados

  • Aqui carregamos o Conjunto de dados Sentiment140 de um arquivo CSV compactado, você pode baixá-lo do Kaggle.
  • Mantemos apenas a polaridade e as colunas de texto do tweet as renomeamos para maior clareza e imprimimos as primeiras linhas para verificar os dados.
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  ())   

Saída:

SaídaSaída

Etapa 3: mantenha apenas sentimentos positivos e negativos

  • Aqui removemos tweets neutros onde a polaridade é 2 mapeia os rótulos para que 0 permaneça negativo e 4 se torne 1 para positivo.
  • Em seguida, imprimimos quantos tweets positivos e negativos restam nos dados.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Saída:

Captura de tela-2025-07-09-092140Saída

Etapa 4: limpe os tweets

  • Aqui definimos uma função simples para converter todo o texto em letras minúsculas para obter consistência e aplicá-la a cada tweet no conjunto de dados.
  • Em seguida, mostra as versões originais e limpas dos primeiros tweets.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Saída:

SaídaSaída

Etapa 5: divisão de teste de trem

  • Este código divide as colunas clean_text e polarity em conjuntos de treinamento e teste usando uma divisão 80/20.
  • random_state=42 garante a reprodutibilidade.
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  ))   

Saída:

Tamanho do trem: 1280000
Tamanho do teste: 320.000

Etapa 6: realizar a vetorização

  • Este código cria um vetorizador TF IDF que converte texto em recursos numéricos usando unigramas e bigramas limitados a 5.000 recursos.
  • Ele ajusta e transforma os dados de treinamento e transforma os dados de teste e, em seguida, imprime as formas das matrizes TF IDF resultantes.
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  )   

Saída:

Formato TF-IDF (trem): (1280000 5000)
Formato TF-IDF (teste): (320000 5000)

Etapa 7: treinar o modelo Bernoulli Naive Bayes

  • Aqui treinamos um Bernoulli Naive Bayes classificador nos recursos TF IDF dos dados de treinamento.
  • Ele prevê os sentimentos dos dados de teste e, em seguida, imprime a precisão e um relatório de classificação detalhado.
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  ))   

Saída:

SaídaSaída

Etapa 9: modelo de máquina de vetor de suporte de trem (SVM)

  • Este código treina um Máquina de vetores de suporte (SVM) com um máximo de 1000 iterações nos recursos do TF IDF.
  • Ele prevê rótulos de teste e depois imprime a precisão e um relatório de classificação detalhado mostrando o desempenho do 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  ))   

Saída:

SaídaSaída

Etapa 10: treinar modelo de regressão logística

  • Este código treina um Regressão Logística modelo com até 100 iterações nos recursos do TF IDF.
  • Ele prevê rótulos de sentimento para os dados de teste e imprime a precisão e o relatório de classificação detalhado para avaliação do modelo.
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  ))   

Saída:

SaídaSaída

Etapa 11: faça previsões em exemplos de tweets

  • Este código pega três exemplos de tweets e os transforma em recursos TF IDF usando o mesmo vetorizador.
  • Em seguida, ele prevê seu sentimento usando os modelos treinados BernoulliNB SVM e regressão logística e imprime os resultados para cada classificador.
  • Onde 1 significa Positivo e 0 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  ))   

Saída:

SaídaSaída

Podemos ver que nossos modelos estão funcionando bem e fornecendo as mesmas previsões, mesmo com abordagens diferentes.

Você pode baixar o código-fonte aqui- Análise de sentimento do Twitter usando Python

Criar questionário