Arcabouço computacional para detecção de notícias falsas.
A base de dados corresponde aos arquivos:
- data/DATASET_MPMG-FakeNews_matched.txt
- data/DATASET_MPMG-TrueNews_selected.txt
Para a leitura da base de dados há um arquivo na pasta utils chamado leitura_dataset.py com uma função exemplo que lê toda a base e imprime as três primeiras notícias de cada parte. O código pode ser executado a partir do seguinte comando:
python3 utils/leitura_dataset.py
- Versão dos drivers do selenium: É de suma importância que os drivers que serão selecionados sejão compatíveis com a versão dos browsers instalados nas máquinas que realizarão as coletas. Os drivers se encontram na pasta /drivers e podem ser atualaizados nos seguintes links:
- Variáveis de ambiente Existem variáveis de ambiente que são utilizadas pelo sistema e estão localizadas no arquivo /env.py. Essas variáveis estão preenchidas para funcionar sem modificações iniciais, porém caso haja a necessidade de movimentar arquivos pelo código é importante se atentar a esses parâmetros. Um exemplo é a localização dos drivers que é definida nesse arquivo.
-
Mínimo para execução:
-
Dependências do sistema:
- Python 3.8.2
- PIP 3 (sudo apt install python3-pip)
-
Instalando dependências:
pip3 install -r requirements.txt
-
- Ambiente Geral: Repare que as únicas dependências desse projeto são as bibliotecas Selenium e PyTesseract, logo é possível executar este projeto dentro de outros ambientes que atendam a essas dependências. No entanto, é importante salientar que versões antigas do Selenium podem conflitar com certas versões de browsers, diante disso sugerimos que utilize as versões mais atualizadas tanto para o Selenium, quanto para os browsers.
- Ambiente virtual específico:
Caso queira é possível criar um ambiente virtual apenas para esse módulo, para isso deve ser seguido os seguintes passos utilizando o Venv (sudo apt install python3.8-venv):
- Vá para a raiz do projeto.
- Criando ambiente:
python3 -m venv ./venv
- Ativando ambiente:
source venv/bin/activate
- Instalando dependências:
pip install -r requirements.txt
- Desativando ambiente:
deactivate
Com o ambiente que contenha o Selenium, o PyTesseract e com todos os parâmetros configurados executamos o seguinte código na raiz do projeto:
python3 main.py <parâmetros>
Onde os parâmtros dividem qual o tipo de busca será feita com qual fonte. A divisão do tipo se dá entre busca por URLs ou coletores que buscam todos os dados de um site.
-
Parâmetros para busca de Urls:
-url <fonte>
Possíveis fontes:
- -all
- AOSFATOS
- BOATOS
- COMPROVA
- ESTADAOVERIFICA
- FATOOUFAKE
- LUPA
Repare que pode ser passado o parâmtro -all para a busca de URL, assim reallizando a busca simultânea de todas as fontes. Então, por exemplo, os comandos:
python3 main.py -url LUPA
ou
python3 main.py -url -all
-
Parâmetros para busca de coletores:
-coletor <fonte> <url>
A URL deve ser uma notícia ou checagem pertencente à fonte. As fontes dos coletores estão dispostas no final do arquivo. Tanto as notícias como as checagens se encaixam nessa categoria e não há diferenciação na chamada. Então, por exemplo, teremos as seguintes chamadas de execução:
python3 main.py -coletor ADVENTISTAS http://www.adventistas.com/2020/04/02/novo-coronavirus-tem-algo-errado-com-esse-virus-da-covid19/
ou
python3 main.py -coletor AOSFATOS https://www.aosfatos.org/noticias/nao-e-verdade-que-estados-recebem-r-19-mil-por-cada-morte-de-covid-19/
Fonte de coletores:
- Notícias:
- ADVENTISTAS
- ALIADOSBRASIL
- ATROMBETA
- BBC
- CARTAPIAUI
- CONEXAOAMAZONAS
- CRITICANACIONAL
- DIARIODOPODER
- ESTIBORDO
- ESTUDOSNACIONAIS
- FOLHADAPOLITICA
- FOLHADAREPUBLICA
- FOLHAMAX
- G1
- GAZETABRASIL
- JORNAL21BRASIL
- JORNALDACIDADE
- LUISCARDOSO
- OGRITOCENSURADO
- OLHOABERTOPR
- QUESTIONESE
- REVISTAAMAZONIA
- REVISTAOESTE
- RSAGORA
- TERCALIVRE
- TERRABRASIL
- TIERRAPURA
- TRIBUNANACIONAL
- UOL
- Checagens:
- AOSFATOS
- BOATOS
- COMPROVA
- ESTADAOVERIFICA
- FATOOUFAKE
- LUPA
- Notícias:
Os dados são divididos da mesma forma que o sistema, há um formato para a busca de URLs e um formato para os coletores de sites.
-
Busca de URLs: O arquivo contendo as URLs coletadas é salvo na pasta BUSCA_URLS/URLS. Os arquivos são organizados pelo nome da agência da seguinte maneira: urls_nome_da_agencia.txt. Internamente os arquivos são organizados em jsons contendo url, fonte da url, tipo (notícia ou checagem) e a data de obtenção. O módulo está disponível para a coleta de urls de todas as seis agências de checagens utilizadas.
-
Coletores de sites: A pasta de cada coletor, notícia ou checagem é disposta da seguinte forma:
../NOMEDOVEICULO |_HTML/ |_COLETA/ |_LOG/ |_código do coletor
Na pasta /HTML ficam salvos os códigos-fontes das páginas coletadas, na pasta /LOG ficam salvos possíveis erros de coleta e a pasta /COLETA guarda os arquivos contendo as coletas. Os arquivos em COLETA são organizados por mês e ano da publicação da notícia, sendo nomeados: nomeveiculo_ano_mes.txt. Internamente esses arquivos são organizados em um json por linha contendo as informações coletadas como título, data de publicação, autor, texto da notícia, etc.
-
Coletores: Na pasta /COLETORES é possível encontrar um README explicando e documentando todo o funcionamento do BaseScrapper, modulo criado para possibilitar o desenvolvolvimento da grande quantidade de coletores criados para essa parte do projeto.
Arquivo com explicação/documentação dos Coletores
Os coletores de checagens são independentes dos coletores de notícias, onde o COMPROVA e ESTADAOVERIFICA são scripts independentes, enquanto os outros coletores de checagens fazem uso dos aquivos base_crawler e custom_scraper.
-
Busca URLS: As buscas são realizadas por scripts independentes presentes dentro da pasta.