Veritas: Um detector de Fake News no combate ao Covid-19 no Brasil

Esse foi um processo desenvolvido pelos alunos Mel Iza, Dairenkon Majime, Lauro Namiki, Felipe Gabriel e Rodolpho Amadatsu do curso de Data Science e Machine Learning da Tera.

“Uma mentira pode dar a volta ao mundo no mesmo tempo que a verdade leva para calçar seus sapatos.” Mark Twain

O que são as famosas Fake News? Onde vivem? E mais importante, como se reproduzem? O compartilhamento de Informações se tornou um mecanismo útil para diversos domínios do convívio social, permitindo avanços acelerados em pesquisas, acesso à conhecimentos antes restritos e criação de novas formas de interações humanas, como mensagens instantâneas e vídeo-chamadas.

Contudo, possibilitou também o compartilhamento de mensagens e informações de fontes desconhecidas com conteúdos duvidosos e/ou propositalmente falsos/não verídicos; como define Jen Weedon, fake news são “artigos de notícias que parecem ser factuais, mas que contêm distorções intencionais de fatos com o propósito de provocar paixões, atrair audiência ou enganar”. (2017)

Como as notícias falsas podem se reproduzir tão rapidamente? Aliado à facilidade de compartilhamento junto com mensagens de procedência enganosa. Por se caracterizar por uma peculiaridade bem específica: são emocionalmente apelativas. Isso pode levar a um outro fenômeno, a desinformação. A desinformação é uma consequência de super espalhamento de notícias falsas. A desinformação é um problema por vários motivos, principalmente porque:

  • permite a distribuição de notícias falsas, o que é um problema por si mesmo;

Existe alguma maneira de combater desse ciclo? Do ponto de vista mais geral, é um problema bem complexo. Mas se dividirmos um problema em variadas pequenas partes, é melhor para analisar e poder atuar. E dentro do escopo do nosso projeto, essa pequena parte é a tomada de decisão.

Problema de Negócio

O problema central que norteia o desenvolvimento do nosso trabalho é a conjunção de duas ideias principais. A primeira ideia é que pessoas que não conseguem distinguir afirmações (sejam elas veiculadas a notícias ou mensagens) falsas de verdadeiras podem ter mais facilidade a acreditar em afirmações falsas por apelo emocional, e por consequência compartilhar e contribuir para a rede de desinformação.

O perfil da nossa persona é definido pelas pessoas que não conseguem distinguir notícias falsas de verdadeiras, principalmente levando em consideração que as fontes de informações sobre a pandemia que essas pessoas costumam confiar são as redes sociais

De acordo com um levantamento da Avaaz, as fontes mais consultadas pelos entrevistados são para informações sobre a pandemia são: mensagens instantâneas do Whatsapp (90%), O aplicativo de troca de mensagens é seguido pelo Facebook (83%), YouTube (71%), Instagram (64%) e Twitter (26%). Apenas 1% disse que não utiliza redes sociais. Abaixo para ilustrar melhor se encontram algumas notícias falsas apresentadas na pesquisa e as fontes mais citadas.

Estudo produzido pela Avaaz, 2020. Fonte: https://secure.avaaz.org/campaign/po/brasil_infodemia_coronavirus/

A segunda ideia que constitui nosso problema de negócio é que o compartilhamento de notícias falsas relacionadas à SARS-COV-2 (Covid-19) durante a pandemia é especialmente perigoso, pois pode apresentar consequências graves à saúde e incentivar comportamentos de risco.

Tomar decisões baseadas em falsidades no contexto da Covid-19 é prejudicial à saúde não somente individual, mas pública. Como por exemplo, tomar decisões com base na informação do tipo “covid é uma gripezinha”, “usar máscaras causam embolia pulmonar”, ou mesmo “lockdown não funciona e sim imunidade de rebanho” é extremante prejudicial quando baseada em informações falsas como essas mencionadas acima. Na maioria das vezes as falsidades veiculadas à Covid são contra medidas básicas protetivas contra a Covid-19 (comprovadas cientificamente), como funcionamento do modo de transmissão da doença e uso de distanciamento social. Nesse cenário, as tomadas de decisão podem levar as pessoas a se contaminarem com mais facilidade, espalhar a doença, serem hospitalizadas ou virem a óbito.

Impacto

Por que nosso projeto importa?

Nosso projeto é importante porque pretende a partir da análise dos dados de notícias falsas e verdadeiras coletadas, produzir um modelo que atuará como auxiliar no processo de tomada de decisão de compartilhar notícias. Por que isso é importante?

Porque é importante maximizar às pessoas que não conseguem distinguir o que é falso do que é verdadeiro, o acesso à informação de qualidade e ferramentas que possibilitem auxiliar o processo de tomada de decisão.

Nesse sentido, uma das funções de um detector de notícias falsas é ser uma ferramenta de verificação ao mesmo tempo que incentiva o desenvolvimento 1) do pensamento crítico e 2) da habilidade de confrontação e discussão de informações. Habilidades essas que, se desenvolvidas, ao longo prazo podem auxiliar o aperfeiçoamento de tomadas de decisão de modo crítico e evitar a desinformação.

Desenho da solução

A solução do nosso problema foi dividida em 6 etapas: a problematização e desenvolvimento de hipóteses, a mineração dos dados de notícias falsas e verdadeiras, a limpeza e processamento dos dados, aplicação do aprendizado de máquina (divisão do dataset em treino e teste e treinamento de modelos), avaliação dos modelos e comparação de resultados, e por fim o deploy do modelo.

O primeiro passo foi refletir melhor sobre a problematização do assunto para redigir de modo claro e conciso as hipóteses norteadoras do projeto. A nossas hipóteses são:

1. Hipótese nula (H0): Não é possível desenvolver um modelo de Machine Learning robusto e confiável para automatizar a detecção de fake News sobre Covid-19 e auxiliar no processo de tomada de decisão de pessoas que não sabem distinguir verdades de falsidades.

2. Hipótese alternativa (H1): É possível desenvolver um modelo de Machine Learning robusto e confiável para automatizar a detecção de fake News sobre Covid-19 e auxiliar no processo de tomada de decisão de pessoas que não sabem distinguir verdades de falsidades.

Dados

Apesar de muitas mensagens falsas circularem com mais frequência em redes sociais como Facebook e Twitter (BHATT, 2017), coletamos os dados — notícias falsas e notícias verdadeiras — em veículos jornalísticos de notícias e agências verificadoras. Os fundamentos utilizados para essa decisão se baseiam no fato de que dado o tempo hábil disponível para a entrega do projeto, não haveria possibilidade de verificar e analisar com profundidade a verdade de cada notícia se elas fossem coletadas diretamente em redes sociais.

A seleção das fontes foi realizada tendo em vista que existe uma equipe de jornalistas e profissionais que já realizam a checagem de antemão. Levando em consideração o viés da coleta de notícias, a estratégia utilizada para tentar amenizar isso durante o período de mineração foi usar como fonte para as notícias verdadeiras grandes portais de notícias e para as falsas, agências checadoras de fatos. Também fizemos uma conferência manual das notícias acerca da sua condição para entrar em nosso dataset.

Dado o vasto número de notícias que existem na internet, os critérios de inclusão e exclusão para seleção das notícias seguem abaixo de acordo com a tabela.

Usamos também o Data Tracking Sheet como método de base para estabelecer quais dados seriam coletados, como e onde. As principais questões abordadas para a coleta dos dados foram: “Como identificar uma notícia falsa?” e “Quais são suas principais características?”.

Fontes de dados

As fontes de onde as notícias foram retiradas são: Projeto Comprova, Uol, Estadão, G1: Fato ou Fake, Agência Lupa, E-farsas e Terça-livre. Para contribuir com a otimização do tempo e a fim de evitar dupla checagem dos dados coletados, foi adotado como método de busca o Web scrapping ou raspagem de dados juntamente com a conferência manual de cada integrante do grupo para conferir se os requisitos das notícias como título, texto, data e assunto estavam corretos; bem como uma verificação rápida da veracidade.

Foi necessário a criação de um raspador para cada site diferente — os códigos foram adaptados a cada um para captar as informações sobre o título da notícia, texto, data e salvar um arquivo em formato .csv. Essa foi a etapa de grande importância e decisiva para o projeto, pois todo o resto dependeria da qualidade do nosso dataset. Tivemos um pouco de dificuldade em precisar adaptar scrapers para sites diferentes, e as ferramentas foram variadas para cada tipo de necessidade. Como utilizar a linguagem Python e R, bem como bibliotecas diferentes, a exemplo do Selenium e Beautiful Soup.

Exemplo do Web Scrapper em Python utilizado para coleta de notícias do portal UOL.

A coleta foi dividida entre os membros do grupo durante o período de 01 de Abril a 06 de Maio e ao final do período estabelecido foram coletados o total de 5487 notícias, sendo 3263 verdadeiras e 2224 falsas. Esse é um exemplo de como foram coletados e organizados os dados para a próxima etapa — processamento e limpeza.

Resultado da coleta de dados do portal Boatos.org utilizando scrapper com linguagem R.

Dataset

Com a nossa base de dados consolidada tivemos um total de 5487 notícias distribuídas em 4 colunas. A coluna de URL do site, título da notícia, texto da notícia e classe que pode ser definida em verdadeira (representada pelo valor 1) ou falsa (representada pelo valor 0).

Dados coletados dos portais de notícias selecionados

Como nossa estratégia de coleta dos dados se baseou em portais de notícias e agências verificadoras, listamos aqui quais sites utilizamos os raspadores e a quantidade de notícias de cada um.

Informações sobre nossas variáveis

Coletamos também dois conjuntos de dados disponíveis que continham notícias dentro dos nossos critérios de inclusão da Câmara dos deputados no total de 2217 notícias e do LATAM Chequea (Agência verificadora de informações da América Latina) com o total de 1493 notícias.

As colunas ‘url’, ‘título’ e ‘notícia’ são do tipo string e a variável alvo ‘classe’ que é o label se a notícia é verdadeira ou falsa é categórica.

Limpeza dos dados e Modelos

Nesta etapa de limpeza e processamento dos dados, utilizamos técnicas de vetorização de textos com o objetivo de padronização das palavras, redução de ruídos dos textos, eliminação dos erros de interpretação e otimização do algoritmo.

As técnicas de vetorização fazem parte do amplo repertório de técnicas do processamento de linguagem natural (Natural Language Processing — NLP). Dentre elas, as que aplicamos foram a normalização, Tokenização, remoção de stop words e a lematização.

Antes de avançarmos para o estágio mais hypado de um projeto de ciência de dados, o treinamento do algoritmo, precisamos tratar nossos dados e depois transformá-los em uma linguagem que o computador entenda, isso mesmo, números. Esse processo é composto por duas etapas, Limpeza e processamento dos dados, que possuem diversas tarefas associadas que serão detalhadas a seguir.

Limpeza de dados

Este processo visa reduzir o ruído nos textos, otimizando o algoritmo, pois deixa apenas palavras padronizadas e relevantes ao contexto para serem analisadas. Ele também evita erros de interpretação, como por exemplo, que duas palavras iguais sejam consideradas diferentes apenas por apresentar a primeira letra maiúscula.

  • Normalização: Primeiro tratamento aplicado ao texto, nessa etapa o texto original da notícia já sofre uma grande transformação, é retirado as pontuações, os caracteres especiais (acentos, símbolos e números) são eliminados ou substituídos, todos os caracteres são padronizados para minúsculas.

Processamento

Após a limpeza dos dados precisamos criar a representação numérica desses textos para que eles se tornem interpretáveis pelo computador e os algoritmos possam ser treinados na classificação das notícias.

Nós utilizamos basicamente duas técnicas, Bag of Words e TF-IDF:

  • Bag of Words: Qualquer informação sobre gramática ou a ordem das palavras é desconsiderada, ele transforma o conjunto de palavras em um grupo de termos e suas respectivas frequências.
Bag of words (BoW) e TF-IDF Vectorizer

Depois de toda manipulação dos dados, você não está curioso em saber como os vetores ficaram?! Nós também ficamos e para possibilitar uma confrontação visual dos vetores das notícias verdadeiras x notícias falsas foi utilizado o t-SNE, que é um método estatístico para visualização de dados altamente dimensionais em um mapa, neste caso, 2D.

Treinamento do algoritmo e avaliação

Antes de iniciar o processo iterativo de treinamento de algoritmos, foi realizado a divisão de dados entre treino e teste, na proporção de 67% dos dados para treino e 33% para teste, nos dados de treino ainda foi realizado um cross validation (k folds = 3), a técnica de cross validation consiste em dividir os dados em subgrupos — k folds — onde um subgrupo é separado para teste e os demais são utilizados para treino do algoritmo, esse processo é repetido até que cada subgrupo tenha sido utilizado como teste uma vez.

Assim, testamos diferentes abordagens na busca pelo algoritmo com melhor desempenho, combinamos as técnicas de processamento Bag of Words e TF-IDF com algoritmos de classificação como Regressão Logística, Random Forest e XGBoost Classifier.

Existem diversas métricas para avaliação dos modelos de classificação como a matriz de confusão, e a Curva ROC, porém as métricas selecionadas para comparação de performance entre os modelos foram a acurácia, recall, precision e F1-score.

Após a avaliação das métricas dos primeiros modelos surgiu a hipótese de que o comprimento da notícia estava servindo de proxy para sua classificação, ou seja, em vez de aprender a diferenciar as notícias falsas das verdadeiras o modelo estava associando que as notícias com poucas palavras eram falsas e por consequência as que tinham mais palavras eram verdadeiras. Para contornar esse problema foi necessário balancear o comprimento entre as notícias. Também se revelou a necessidade de aplicar pesos diferentes para as notícias, já que o dataset final estava com um desbalanceamento moderado de 57.2% de notícias verdadeiras e 42.8% de notícias falsas.

Comparando os resultados após o truncamento (redução do comprimento das notícias por força bruta, equalizando o tamanho das notícias através da limitação de caracteres) foi observado que o modelo com melhor performance foi a combinação da Regressão Logística com TF-IDF contendo 800 notícias verdadeiras de no mínimo de 70 caracteres e máximo de 200 caracteres.

Este modelo foi escolhido pois obteve resultados melhores na generalização com novos dados, tendo um desempenho melhor na identificação das notícias.

Performance do modelo

Além de apenas detectar as notícias falsas, o que também motivou o desenvolvimento deste projeto foi a possibilidade de encontrar padrões, de buscar caracterizar como são as notícias falsas. Retiramos as palavras que mais impactaram para uma notícia ser classificada como falsa ou verdadeira e o resultado foi esse:

É possível também ter uma visualização de como o modelo faz a análise da notícia para classificá-la.

CONCLUSÃO

A regressão logística + TF-IDF contendo 800 notícias verdadeiras de no mínimo de 70 caracteres e máximo de 200 caracteres foi o modelo com as melhores generalizações para dados novos — ,podemos dizer que temos um detector de fake news sobre a Covid-19 confiável. É possível também que existam temas associados à procedência de uma notícia, através da análise dos maiores pesos aplicados as palavras pelo algoritmo nota-se que há referências a países (Colômbia, Espanha), cidades (Búzios, Madrid) e medidas preventivas (distanciamento, isolamento, máscara) que valem uma investigação mais profunda.

O processo de mineração de notícias foi de extrema importância pois se os dados estivem enviesados não seria possível a criação do detector.

O tamanho da notícia influenciava o aprendizado do algoritmo, foi necessário equalizar o comprimento entre as notícias falsas e verdadeiras;

O registro de todo o desenvolvimento foi muito importante para compreensão de todos do grupo do que está sendo feito e para correção e/ou aperfeiçoamento do trabalho.

Desenvolver um projeto de dados de ponta a ponta sobre um assunto tão complexo como as fake news, que também envolvem outros fenômenos, foi de extremo aprendizado. Tanto se tratando da parte técnica de mineração e processamento os dados, quanto da produção do modelo e realização de testes.

Gostaríamos de agradecer à Tera por essa incrível oportunidade, e aos professores, experts e facilitadores que nos acompanham durante essa jornada. Em especial — André, Bia, Bidu, Edu, Marcus, . Obrigada, sem o apoio e incentivo de vocês, esse projeto não seria possível. Também agradecemos aos colegas de grupo e de turma.

Colocando solução à prova

Nossa aplicação foi desenvolvida pela plataforma Streamlit e está disponível. Lá você tem uma interface que pode colocar o texto da notícia e verificar a probabilidade de ela ser verdadeira ou falsa.

Projeto Veritas — Detectando Fake News de Covid-19

Auxiliar no processo de decisão?

Se partirmos do princípio que nossa ferramenta é uma pequena parte no auxílio à conscientização sobre os perigos de compartilhar fake news de Covid, se houver mais ferramentas que complementem isso, melhor, certo?

Certo!

Baseado no desenvolvimento do projeto, identificamos alguns padrões que as notícias falsas podem apresentar e elaboramos uma cartilha! Existem alguns pontos para ficar de olho quando recebemos notícias ou mensagens. Algumas dicas:

  • Sempre desconfie: por mais que a notícia possa aparentar ser verdadeira, considere a possibilidade de ela ser falsa. Até que se prove o contrário -verificando os fatos — ela pode ser falsa.

Obrigada nos por acompanhar até aqui, foi uma longa jornada né? Aprendemos muito e gostamos muito de fazer parte desse projeto, do comecinho até agora. Pensando nisso e no impacto que isso possa ter, nossos próximos passos para o projeto seriam:

Visto que a proposta da nossa solução está diretamente ligada com o processo de tomada de decisão dos usuários, vale lembrar que o objetivo é propor uma solução que possa auxiliar nesse processo.

Uma outra ideia de melhoria seria justamente poder ter um feedback do usuário da plataforma, através de um questionário simples, com a utilização de escala likert, poder mensurar o impacto do detector no seu comportamento, se por exemplo, este usuário deixou de compartilhar uma possível notícia falsa após usar o detector e se na sua própria opinião notou uma melhora no desenvolvimento do pensamento crítico em relação ao recebimento de notícias de terceiros.

A nível técnico, existem outras técnicas de NLP que gostaríamos de ter experimentado no nosso projeto, como as Word Embeddings , essa técnica se utiliza de vetores (pré-treinados) densos de tamanho fixo que são capazes de armazenar informações sobre o contexto e significado, assim palavras que ocorrem em enredos similares vão estar próximas no espaço. E também implementar técnicas de otimização de hiperparâmetros (parâmetros arbitrários configurados antes do início do treinamento do modelo), GridSearch ou RandomizedSearch, sistematizando a busca pelos melhores parâmetros afim de melhorar ainda mais as métricas obtidas.

Por último, poderia ser interessante melhorar a qualidade dos dados coletados incluindo mais variáveis e buscar outras fontes de coleta, como diretamente de redes sociais por exemplo, para realizar um estudo sobre o alcance e propagação dessas notícias falsas.

Muito Obrigado!

Conheça nosso repositório no GitHub.

IT Student and Bachelor of Philosophy