Published January 9, 2026 | Version v2

Desinformação: AosFatos

  • 1. ROR icon Universidade Federal de Alagoas
  • 2. ROR icon Universidade Federal de Santa Catarina
  • 1. ROR icon Universidade Federal de Alagoas

Description

1ª ETAPA - proteção e classificação automática

Descrição da arquitetura, tecnologias e passos adotados para a remoção das informações do serviço de fact-checking AosFatos em Python - por meio do processo de Web Scraping (extração de dados da web).

Aos Fatos – lista de verificações e páginas de detalhes de cada verificação. O objetivo foi coletado, para cada verificação/artigos selecionados, os campos: 

a)URL;
b) Título;
c) Dados; 
d) Assunto;
e) Classificação;
f) Tipo (sempre “Checagem”);
g) Autor.

Os dados foram salvos em dois formatos: CSV (UTF-8) e Excel (.xlsx).

2 - escada e guarnição

Camada     

Ferramenta / Biblioteca

Linguagem

Python 3.10+

Automação

Selenium WebDriver 4.x

Navegador sem cabeça

Google Chrome + ChromeDriver

Esperas

WebDriverWait + condições esperadas

Manipulação de CSV

módulo csv (embutido)

Planilha Excel

openpyxl

DataFrame

pandas (opcional)

Expressão regular

re (embutido)

Pausa

tempo.dormir

3 - Arquitetura da Solução 
                url_list_aosfatos.py
                           |
                           v

Script principal do scraping
Etapa 1 - Inicia o Selenium headless Chrome
Etapa 2 - Para a lista de URL (AosFatos):
          { driver.get(url)
          { espera e extrai campos via CSS
          { escreve linha em CSV/Excel
Etapa 3 - Fecha driver, salva arquivos.

4 - Fluxo de Coleta

1 - Listagem: Acesse a listagem de verificações e links de captura.
2 - Página de seleção: Para cada URL, extrai com seleções próprias.
(ex. título, autor, dados, assunto, classificação) e definição do tipo de “Checagem”.

5 - Escrita Incremental de Dados
Para persistência imediata:

a) CSV: abre em anexo e grava cada registro após raspagem.
b) Excel: usa openpyxl.Workbook(), ws.append(row) por item, e salva ao final.
Cabeçalho comum: url, título, dados, assunto, classificação, tipo, autor.

6 Exemplo de pseudocódigo
import csv, time
from selenium import webdriver
# ...
with open('dados.csv','w',encoding='utf-8') as f:
      writer = csv.writer(f)
      writer.writerow([...])
      for url in urls:
           driver.get(url)
           time.sleep(3)
           # extrai campos
           writer.writerow([url, titulo, data, assunto, classificacao, 'Checagem', autor]) driver.quit()

 

Essa etapa foi feita por Jean Carlo Gengnagel

https://orcid.org/0009-0009-9862-9256

 

2ª ETAPA – classificação manual

7 Boas Práticas
a) Usar robustas, posicionadas quando possível.
b) Definir timeouts e esperas para evitar travamentos.
c) Execução headless para automação sem UI.
d) Gravação incremental para evitar perda de dados.

A classificação da coluna C foi feita manualmente pela equipe:

Usando a orientação da legenda: 
Desinf. Educação: qualquer abordagem envolvida em educação.
Desinf. Científica: ciência falsa, negacionismo, teoria da conspiração - temas com enfoque na ciência. 
Desinf. Gênero: violência de gênero - desinformação entre mulheres.
Desinf. Saúde: qualquer subtemática de saúde, vacina, medicamentos, tratamentos, procedimentos.
Desinf. Ansiedade Informacional - envolve saúde mental e consumo de conteúdo na web.
Desinf. Ambiental - envolve meio ambiente.
Outros tipos de desinformação.

Essa etapa foi feita pela equipe:

Dilyanne Ferreira Tavares - UFAL
https://orcid.org/0009-0001-7935-4869

Camilla de Moura Gomes - UFAL
https://orcid.org/0009-0004-3614-0184

Erick Bruno Ferreira Santos - UFBA
https://orcid.org/0009-0000-5726-3838

Coordenada pela professora: Juliana Fachin - UFAL
https://orcid.org/0000-0003-0883-642X

 

3ª ETAPA - manual de reclassificação

Nesta etapa foi feita a reclassificação manual dos dados. Foi verificado todas as classificações e duas classificações foram modificadas

 

Desinf. Ambiental - envolve meio ambiente.

Desinf. Científica: ciência falsa, negacionismo, teoria da conspiração - temas com enfoque na ciência. 

Desinf. Criminosa ou fraudulenta: envolve temas sobre crime, fraudes e golpes.

Desinf. Educação: qualquer abordagem envolvida em educação.

Desinf. Gênero: violência de gênero - desinformação entre mulheres.

Desinf. Política: com conteúdo sobre política

Desinf. Saúde: qualquer subtemática de saúde, vacina, medicamentos, tratamentos, procedimentos.

 

Duas categorias originais foram exluídas e outras duas foram inseridas:

 

Incluídas

 • Desinf. Política: com conteúdo sobre política

 • Desinf. Criminosa ou fraudulenta: envolve temas sobre crime, fraudes e golpes.

Retiradas

 • Desinf. Ansiedade Informacional - envolve saúde mental e consumo de conteúdo na web.

 • Outros tipos de desinformação.

 

Essa etapa foi feita pela equipe:

Dilyanne Ferreira Tavares - UFAL
https://orcid.org/0009-0001-7935-4869

Camilla de Moura Gomes - UFAL
https://orcid.org/0009-0004-3614-0184

Erick Bruno Ferreira Santos - UFBA
https://orcid.org/0009-0000-5726-3838

Coordenada pela professora: Juliana Fachin - UFAL
https://orcid.org/0000-0003-0883-642X

 

4ª ETAPA - reclassificação automatizada

O objetivo desta etapa automática foi reclassificar as notícias verificadas, já que não possuem uma categoria especificamente definida. 

 • Carregar dados de notícias de um arquivo Excel;

• identificar as notícias marcadas como “Outros Tipos de desinformação”;

 • Treinar um modelo de classificação usando as notícias já categorizadas;

• Aplicar o modelo treinado para reclassificar as notícias;

 • Gerar um novo arquivo com as classificações atualizadas.

 

O projeto utiliza as seguintes bibliotecas Python, cada uma com funções específicas:

Biblioteca Diretor(a) Uso no Projeto
pandas Manipulação de dados Carregamento e processamento do arquivo Excel
Seleção de modelo sklearn. Divisão de dados Separação entre dados de treino e teste
sklearn.extração de recursos.texto Processamento texto Conversão de texto em vetores numéricos (TF-IDF)
modelo sklearn.linear Algoritmos de ML Implementação da Regressão Logística
sklearn.pipeline Automação de águia Criação de pipeline de processamento
sklearn.metrics Avaliação de modelos Geração de relatórios de classificação

 

8 Explicação anterior das Bibliotecas

8.1 Pandas

Biblioteca fundamental para manipulação e análise de dados. Utilizado para:

• Carregar o arquivo Excel com pd.read excel( )

• Filtrar dados válidos e remover valores nulos

• Renomear colunas para padronização 

• Salvar os resultados processados

 

8.2 Scikit-learn (sklearn)

Biblioteca de Machine Learning que fornece ferramentas para classificação, regressão, clustering e redução de dimensionalidade. No projeto, é usado para:

• TfidfVectorizer: converte texto em vetores numéricos usando TF-IDF (Term Frequency-Inverse Document Frequency)

• LogisticRegression: Algoritmo de classificação que estima probabilidades usando uma função logística

• Pipeline: Encadeia transformações e estimadores em uma sequência

• relatório de classificação: Gera relatório detalhado de notas de classificação

 

9 Fluxo de Execução do Código 

O código segue um fluxo estruturado de seis etapas principais:

9.1 Carregamento e Limpeza dos Dados

                                      Listagem 1: Carregamento dos dados              

1

# Carregar o arquivo

2

df = pd.read_excel ( "cleaned_file.xlsx" )

3

 

4

# Remover linhas totalmente vazias

5

df = df.dropna ( how= "all" )

6

 

7

# Se houver colunas com nomes semelhantes, ajuste

8

Se "assunto" estiver em df.columns e "assuntos" não estiver em df.columns:

9

df.rename (colunas={ "assunto": "assuntos"}, inplace=True)

O código carrega o arquivo “cleaned file.xlsx”, remove linhas completamente vazias e padroniza os nomes das colunas.

 

9.2 Separação dos Dados

                                      Listagem 2: Separação dos dados

1

# Filtrar os dados v lidos (sem NaN e sem "Outros Tipos")

2

mask_train = df ["assuntos"] . notna() & ( df ["assuntos"]. str. lower() != "outros tipos")

3

train_df = df [mask_train]

4

prever_df = df [df [ "assuntos"] .str. lower() == "outros tipos" ]

Separar os dados em dois grupos: artigos já classificados (para treino) e artigos marcados como “Outros Tipos” (para predição).

 

9.3 Vetorização do Texto

                                                 Listagem 3: Vetorização TF-IDF

1

# Vetorizar o texto (pode usar título + conteúdo, se existir)

2

vetorizador = TfidfVectorizer(max_features=5000)

3

X_train = vectorizer.fit_transform (train_df ["titulo"]. astype (str) )

4

y_train = train_df ["assuntos"]

Conversor de títulos de artigos em vetores numéricos usando TF-IDF, limitando a 5000 recursos mais importantes.

 

9.4 Treinamento do Modelo

                                  Listagem 4: Treinamento do modelo

1

# Treinar o modelo supervisionado

2

modelo = Regressão Logística (iter_máximo=200)

3

model.fit (X_train, y_train)

Treinar um modelo de Regressão Logística usando os artigos já classificados como dados de treino.

 

9.5 Predição e Reclassificação

                                         Listagem 5: Predição e reclassificação

1

# Reclassificar apenas os "Outros Tipos"

2

X_predict = vectorizer.transform (predict_df ["titulo"] .astype (str) )

3

y_pred = model.predict (X_predict)

4

 

5

# Atualizar o dataframe original

6

df.loc [predict_df.index, "assuntos"] = y_pred

Aplique o modelo treinado para prever novas categorias para os artigos “Outros Tipos”.

 

9.6 Salvamento dos Resultados

                                Listagem 6: Salvamento dos resultados

1

# Salvar o resultado

2

df.to_excel ( "news_data_reclassificado.xlsx", index=False)

3

 

4

Imprimir ( " Reclassificação concluída! Apenas 'Outros Tipos' foram atualizados." )

Atualizar o dataframe original com as novas classificações e salvar em “news data reclassificado.xlsx”.

 

10 Algoritmo TF-IDF

O TF-IDF (Term Frequency-Inverse Document Frequency) é uma técnica estatística que avalia a importância de uma palavra em um documento dentro de uma coleção de documentos. É como calcular:

                                    TF-IDF(t,d) = TF(t,d) ×IDF(t) (1)

 

Onde:

• TF (Frequência do Termo) : Frequência do termo no documento (1)

• IDF (Inverse Document Frequency) : Inverso da frequência do termo na coleção

• Resultado: Palavras comuns recebem peso baixo, palavras específicas recebem peso alto

 

11 Regressão Logística

A Regressão Logística é um algoritmo de classificação que usa uma função logística para modelar a probabilidade de uma instância pertencente a uma classe específica. Características:

• Algoritmo supervisionado para classificação

• Produz probabilidades entre 0 e 1

• Eficiente para problemas de classificação multiclasse

• Interpretável e rápido para treinamento

• Adequado para dados textuais vetorizados

 

A função logística é definida como:

                        P(Y =1|X)   =                             1

                                                ____________________________________ (2)

                                                      1 +e−(β0+β1X1+...+βnXn)

 

12 Resultados Esperados

Ao executar este código, espere-se que:

• Todos os artigos marcados como “Outros Tipos” serão reclassificados em categorias mais específicas;

• Que o modelo aprenda padrões nos títulos dos artigos para identificar assuntos;

• Um novo arquivo “news data reclassificado.xlsx” seja gerado com as classificações atualizadas;

• A qualidade das classificações depende da quantidade e qualidade dos dados de treino;

• Que o sistema seja capaz de generalizar para novas notícias  com títulos semelhantes.

 

13 Considerações Técnicas

• Limitação de Features: O código limita a 5000 features mais importantes para evitar overfitting; 

• Iterações Máximas: O modelo usa 200 iterações máximas para convergência;

• Processamento de Texto: Apenas os títulos são usados para classificação;

• Dados de Treino: A qualidade depende da representatividade dos dados já classificados;

• Desempenho: O algoritmo é eficiente para conjuntos de dados de tamanho médio.

 

14 Vantagens e Limitações

14.1 Vantagens

• Automação de processo manual de trabalhos;

• Escalabilidade para grandes volumes de dados;

• Uso de técnicas modernas de Machine Learning;

• Interpretabilidade do modelo;

• Eficiência computacional.

 

14.2 Limitações

• Dependência da qualidade dos dados de treino.

• Uso apenas do título (não considera conteúdo completo).

• Possível ver nossos dados de treino.

• Necessidade de retreinamento para novos domínios.

• Limitação a 5000 recursos pode perder informações importantes.

 

15 SOBRE A CLASSIFICAÇÃO

Este sistema de classificação automática representa uma solução eficiente para o problema de categorização de artigos de notícias. Utilizando técnicas modernas de Machine Learning e processamento de linguagem natural, o código automatiza um processo que seria manualmente trabalhoso e demorado. A combinação de TF-IDF para vetorização de texto e Regressão Logística para classificação oferece um equilíbrio entre performance e interpretabilidade. 

O sistema é adequado para aplicações onde há uma quantidade razoável de dados já classificados, no qual a precisão da classificação é importante para a organização e recuperação de informações. 

Para melhorar ainda mais o sistema, seria recomendável: 

• Incluir o conteúdo completo das notícias checadas,  além dos títulos; 

• Implementar validação cruzada para avaliar a performance; 

• Adicionar pré-processamento de texto mais sofisticado;

• Considerar outros algoritmos de classificação para comparação

• Implementar um sistema de feedback para a melhoria contínua do modelo.

 

Essa etapa foi feita por Jean Carlo Gengnagel

https://orcid.org/0009-0009-9862-9256

 

16 CONSIDERAÇÕES SOBRE AS ETAPAS DE CLASSIFICAÇÃO

A classificação deste conjunto de dados foi dada em quatro etapas. 

- A primeira classificação foi feita de forma automatizada, generalizando vários tipos de notícias em uma mesma categoria;

- Na segunda classificação foi feita a revisão manual (por uma equipe de quatro pessoas), item por item, ainda assim, muitos itens estavam na castegoria de outros;

- Na terceira etapa foi feita a revisão das categorias, bem como das notícias que já havíamos classificado, reorganizando os dados;

- A quarta etapa teve o instinto de melhorar ainda mais a classificação das notícias verificadas, uma vez que se tinha as modalidades de classificação definidas em sete categorias:  

 

Desinf. Ambiental; 

Desinf. Científica;

Desinf. Criminosa ou fraudulenta;

Desinf. Educação;

Desinf. Gênero;

Política de Design;

Desinf. Saúde;

Entendemos que essas ações colaboraram para uma classificação melhor direcionada, conforme as categorias definidas para a aplicação do estudo.

Files

Files (76.3 kB)

Name Size
md5:f81cd9c311c6fc578fac923ffd50fac0
76.3 kB Download

Additional details

Related works

Is supplement to
Output management plan: 10.48321/D1DEAB3026 (DOI)

Dates

Collected
2025-04-18
data da coleta