Analisando sentimentos de Notícias da Guerra na Ucrânia — com Python e VADER

Arthur Oliveira
4 min readMar 16, 2022

--

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

--

--

Arthur Oliveira

Professor da área de computação. Doutor pela UNICAMP. Graduado em Ciências da Computação e mestre pela USP.