Analisando sentimentos de Notícias da Guerra na Ucrânia — com Python e VADER
O avanço do conflito na Ucrânia nos fornece uma avalanche de notícias a todo momento. Muitas vezes, é difícil acompanhar essa grande quantidade de conteúdo disponível online. Para facilitar essa tarefa, a Análise de Sentimentos nos fornece um resumo (indicando a polaridade) do sentimento geral de uma notícia ou documento.
E é sobre isso que iremos tratar nesse post!
Recentemente, achei essa cobertura de notícias sobre o conflito da Ucrânia do Kaggle, abrangendo dados desde 2014, quando a Rússia invadiu a Criméia. Sendo uma quantidade gigantesca de dados para qualquer ser humano processar, podemos rapidamente escrever um código em Python para analisar automaticamente o sentimento geral dessas notícias para nós e, assim, acompanharmos mais facilmente a evolução do conflito.
Pouca gente sabe, mas a Análise de Sentimentos (resumidamente, determinar se um documento é positivo, negativo ou neutro) é muito utilizada na literatura científica. Particularmente, trabalho com a interação entre sentimentos e o mercado financeiro. Fiz também um post sobre os sentimentos atrelados ao governo Bolsonaro aqui.
Assim, nesse post iremos analisar os sentimentos das notícias do conflito Rússia-Ucrânia usando Python e o analisador VADER.
Todo o código está disponibilizado no meu Github.
Vamos começar.
Carregando e exibindo os dados
Primeiramente, os dados foram baixados do Kaggle no formato CSV. Em seguida, usamos o Pandas para lê-los.
Saída
Como é possível observar, são muitas colunas. Algumas delas, sequer iremos utilizar. Vamos diretamente à coluna que interessa e que contém o conteúdo das notícias: source_article.
Como é possível observar, há a necessidade de limparmos os dados.
Limpeza de Dados
O formato padrão apresentado é: “agência,data,notícia”. Vamos então, retirar os caracteres inúteis e também separar cada uma dessas informações em um DataFrame à parte.
Pronto! Como iremos realizar apenas Análise de Sentimentos, a coluna ‘headline’ será o nosso principal foco.
Análise de Sentimentos
A etapa de Análise de Sentimentos será realizada por meio do VADER (Valence Aware Dictionary for Sentiment Reasoning). Esse é um modelo baseado em dicionário (uma lista de palavras e polaridades), além de algumas regras gramaticais. Por exemplo, palavras como ‘amor’, ‘desfrutar’, ‘feliz’, ‘gosto’ transmitem um sentimento positivo.
O VADER também é inteligente o suficiente para entender o contexto básico dessas palavras, como “não amou”, como uma afirmação negativa.
No caso desse post, as notícias analisadas estão em inglês. Futuramente, posso tratar também de português.
Vamos então baixar o Vader e também testá-lo com algumas sentenças.
“This was a good movie”, ou “esse é um bom filme”, em inglês, retorna o seguinte.
Compound 0.44 é positivo, indicando que a sentença é positiva também. Ela possui ainda indicativos de neutro (0.508).
Vamos para mais um teste.
‘This was the best, most awesome movie EVER MADE!!!’ retornou positivo, superando até a sentença anterior, com valor de 0.8877.
Agora, vamos aplicar o Vader às nossas notícias, realizando uma iteração sobre todos os ‘headlines’.
Vamos melhorar isso, acrescentando uma coluna com o resultado do sentimento final. Se o ‘compound’ for maior que 0, a notícia é positiva. Se for menor, negativa.
Com isso, encerramos o nosso analisador de sentimentos para notícias da guerra. Ele pode ser utilizado futuramente para, por exemplo, calcular o sentimento dominante no dia. Será que a guerra teve um andamento positivo? Será que as coisas encaminham para a paz ou para um conflito maior? Tudo isso pode ser sumarizado, visualizado em um gráfico, e assim por diante.
Todos os códigos e dados utilizados nesse post estão disponíveis abaixo.
Seguimos aguardando pela paz.
Muito obrigado a todos que leram até aqui.
GitHub
Kaggle
Vader