Giter Site home page Giter Site logo

luizsci42 / analise-de-sentimentos-pandemia-covid19 Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 9.86 MB

Repositório utilizado para o plano de PIBIC 2020-2021 com o prof. Dr. Hendrik Macedo. Tem como finalidade criar um dataset para treinamento de modelos de aprendizado de máquina sobre as 5 emoções de Ekman e analisar os sentimentos predominantes durante os primeiros 12 meses da pandemia de COVID-19.

Python 10.53% Jupyter Notebook 89.47%
sentiment-analysis natural-language-processing text-mining machine-learning linear-models scikit-learn spacy-nlp data-science text-visualization

analise-de-sentimentos-pandemia-covid19's Introduction

Análise de Sentimentos sobre a pandemia de COVID-19 a partir do Twitter

Este repositório tem como finalidade:

  • Criar um dataset para treinamento de modelos de aprendizado de máquina sobre as 5 emoções de Ekman.
  • Analisar os sentimentos predominantes durante os primeiros 12 meses da pandemia de COVID-19.

Sobre o dataset de treinamento

O dataset é composto por tweets que contenham hashtags relacionadas às 5 emoções de Ekman, capturados em todo o ano de 2018 e, particularmente para as emoções de raiva e nojo, forma feitas capturas exclusivamente sobre essas hashtags durante todo o ano de 2016 e, ainda devido à insuficiência de amostras, mais tweets com a hashtag #raiva foram coletados durante todo o ano de 2017.

Os tweets rotulados como neutros foram copiados do Tweets_Mg dataset do blog minerando dados.

O dataset tweets_ekman.csv, usado para treinamento, possui o segunte formato:

Proporção de cada emoção no dataset de treiamento

Sobre o dataset alvo

O dataset tweets_pandemia é composto por tweets capturados entre abril de 2020 e março de 2021. Os tweets foram selecionados de acordo com a presença das palavras-chave "isolamento", "quarentena", "covid", "corona", "coronavirus", "corona virus", "covid-19", "covid19" e/ou "covid 19".

Sobre o teste do modelo

O modelo de classificação foi feito a partir da implementação do classificador linear LinearSVC, disponível através do scikit-learn. Esse modelo foi treinado a partir do dataset tweets_ekman e seu desempenho foi medido através de uma matriz de erro (ou matriz de confusão), a partir da qual obtivemos os seguintes valores:

Matriz de confusão do modelo

As demais medidas de precisão, recall e f-score:

Relatório de Classificação

Resultado

A partir o modelo treinado, classificamos os tweets do dataset alvo nas 5 emoções de Ekamn + o sentimento Neutro. A neutralidade foi considerada para filtrar tweets que poderiam ser informativos, como postagens de jornais. Como esperado, podemos notar uma grande predominância de sentimentos negativos, principalmente raiva, medo e tristeza.

Emoções de Ekman Previstas

É possível ver ainda a variação de emoções ao longo dos primeiros 12 meses de pandemia. Pode-se notar uma predominância de sentimentos negativos como medo, tristeza e raiva. Variação de emoções ao longo do primeiro ano de pandemia

Referências

Karami, Amir, et al. "Twitter and research: a systematic literature review through text mining." IEEE Access 8 (2020): 67698-67717.

P. Ekman, “An argument for basic emotions,” Cognition Emotion, vol. 6, no. 3, pp. 169–200, 1992.

Colnerič, Niko, and Janez Demšar. "Emotion recognition on twitter: Comparative study and training a unison model." IEEE transactions on affective computing 11.3 (2018): 433-446.

Towards Data Science. How to Deal with Imbalanced Data. URL: https://towardsdatascience.com/how-to-deal-with-imbalanced-data-34ab7db9b100. (Acessado em abril de 2021).

KDNuggets. 7 Techniques to Handle Imbalanced Data. URL: https://www.kdnuggets.com/2017/06/7-techniques-handle-imbalanced-data.html. (Acessado em abril de 2021).

ML+. How to Train Text Classification in SpaCy. URL: https://www.machinelearningplus.com/nlp/custom-text-classification-spacy/. (Acessado em abril de 2021).

Advanced NLP with SpaCy. Chapter 4: Training a neural network model. URL: https://course.spacy.io/en/chapter4. (Acessado em abril de 2021)

analise-de-sentimentos-pandemia-covid19's People

Contributors

luizsci42 avatar

Watchers

 avatar

analise-de-sentimentos-pandemia-covid19's Issues

Revisar dataset de treinamento

Por ter sido montado a partir de um crawler, baseando-se em hashtgs, muitos tweets presentes no dataset podem conter ruído. É necessário verificar as labels e remover o que não for útil.

Treinar um novo modelo com maior desempenho

Algumas medidas podem ser tomadas para obter um melhor modelo, dentre as quais otimização de parâretros (fine tuning) e/ou testar outro modelo.

Em testes iniciais, consegui obter um weighted f1-score de 58% obtido utilizando cross-validation com 10 folds, a partir de um modelo de logistic regression com parâmetros padrão, sem a necessidade de balancear o conjunto de treinamento. Estou prosseguindo tentando otimizar os parâmetros tanto do LinearSVC, quanto do Logistic Regression.

Outras possíveis medidas também envolvem o pré-processamento do texto, como stemming e lemmatization.

Futuramente, também posso fazer uso do BERT. O seguinte tutorial me parece uma boa introdução: https://www.analyticsvidhya.com/blog/2023/06/step-by-step-bert-implementation-guide/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.