Skip to content

Scikit-Learn & Keras LSTM | Projeto voluntário de análise de sentimentos dos tweets da quarentena | Python

Notifications You must be signed in to change notification settings

laisouzalves/twitter-covid19br

Repository files navigation

twitter-covid19br

Arquivos relacionados ao projeto de análise de sentimentos dos tweets da quarentena

O arquivo twitter-scrapper.py foi criado por mim e pelo Andrei (aluno no IFT-SP). Ele é o código do scrapper de dados do twitter, que utiliza como base a API do twitter. Infelizmente essa API possui algumas limitações, como um número limite de requisições num certo período de tempo, o que acaba por limitar a análise do numero real de tweets.

O arquivo tweets-cleaner.py eu escrevi com o intuito de automatizar o processo de limpeza dos tweets e obtenção de algumas informações chaves, como a distribuição dos tweets por estado e a contagem de palavras.

Os arquivos Jupyter Notebooks (com final .ipynb), possuem alguns dos workflows realizados para treino das redes neurais.

O dataset que fizemos para o treino dessa rede neural é o arquivo twitter_data.py. Nele selecionamos tweets dos dias entre 18 e 23 de Março e qualificamos em 1 (negativo), 2 (neutro) ou 3 (positivo), de acordo com a tabela:

1. Negativo 2. Neutro 3. Positivo
Sarcasmo ou ironias negativas Conselhos ou "dicas" Preocupações positivas (e.g., desejar o bem)
Reclamações Propagandas Otimismo
Ameaças Questionamentos Paz
Tristeza Reflexões Excitação
Indignação Curiosidades Esperança
Raiva Comentários pensativos Piadas de "bom humor"
Críticas negativas Rotina Felicidade
Tédio Sarcasmo ou Ironias positivas
Pessimismo Gratidão
Preocupações negativas Sonhos
Campanhas à favor da quarentena

Ao total foram 10.953 tweets classificados manualmente, para serem utilizados como dados de treino e testes.

Quanto à rede neural, ainda não consegui obter uma rede satisfatória, capaz de classificar ao menos 50% dos sentimentos negativos e positivos, apesar da acurácia total ser acima de 50% (note que os dados de tweets tendem a possuir um número muito maior de sentimentos neutros, em comparação aos outros sentimentos separadamente -- ver o arquivo Twitter-LSTM-sentiment-analysis.ipynb).

Esses arquivos não possuem a intenção de serem utilizados para deploy e o projeto ainda está em andamento. Os próximos passos seriam: analisar como a diminuição dos dados de treinamento afeta na acurácia, para então se ter uma ideia de quantos dados a mais de treinamento são necessários, e implementar um grid search nos parâmetros da rede.

Espero que os arquivos deste repositório possam ser úteis para você.

Laís Alves | Universidade de Brasília | Brasil