Skip to content

Portuguese web archive for justice, journalism and truth | Arquivo.pt para justiça, jornalismo e verdade

License

Notifications You must be signed in to change notification settings

msramalho/desarquivo

Repository files navigation



Um projeto que procura democratizar e complementar o jornalismo de investigação e a verificação de factos.
Arquivo.pt para justiça, jornalismo e verdade.

A project that seeks to democratize and complement investigative journalism and fact-checking.
Arquivo.pt for justice, journalism and truth.

Sobre o Projeto

O Desarquivo foi desenhado como um esforço reprodutível que tem por base um conjunto de configurações das quais se destacam

As notícias recolhidas foram analisadas e de lá foram extraídas entidades (pessoas, organizações, lugares, entre outras) e respetivas relações. Estas relações formam uma rede imensa que é agora explorável nesta interface gráfica ou diretamente nos dados que são de livre acesso.

O desarquivo assenta sobre duas bases de dados, nomeadamente MongoDB (NoSQL) e neo4j (Grafos).


Vídeo de apresentação

Cidadãos

Podem aceder ao desarquivo e explorar as suas diferentes funcionalidades e exemplos.

Investigadores e Programadores

Podem ainda aceder aos datasets disponibilizados e executar queries mais complexas sobre os grafos gerados.

Instruções completas para usar o comando neo4j-admin

# instalar docker, docker-compose, mongorestore -> pesquisar instruções mais recentes online
# clonar este repositório e entrar na pasta
git clone https://github.com/msramalho/desarquivo
cd desarquivo

# fazer uma cópia dos ficheiros deo configuração
cp .neo4j.env.example .neo4j.env
cp .mongo.env.example .mongo.env
cp ./api/.env.example .api/.env

# (editar os ficheiros com as passwords desejadas)
...

# criar as pastas correspondentes aos volumes necessários (se for o Docker a fazê-lo as permissões estaram erradas)
mkdir neo4j/import neo4j/data neo4j/conf neo4j/logs mongodb/data/db

# colocar os datasets no formato igual ao dataset03a.zip (i_entities.csv e i_relationships.csv) na pasta /import
unzip dataset03a.zip -d <SOME DIR>
cp <SOME DIR>/i_*.csv ./neo4j/import/

# correr o seguinte comando para que importar o dataset neo4j
# (verificar que a pasta atual é $HOME/desarquivo) senão atualizar
docker run --interactive --tty --rm \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=$HOME/desarquivo/neo4j/data:/data \
    --volume=$HOME/desarquivo/neo4j/import:/import \
    --user="$(id -u):$(id -g)" \
    neo4j:latest \
neo4j-admin import --id-type=STRING --nodes=/import/i_entities.csv --relationships=rel=/import/i_connections.csv

# iniciar o docker-compose
docker-compose up -d

# se aceder a IP:7474 verá o interface do neo4j, para o esconder do
# público editar as portas do serviço neo4j no docker-compose
...
# quando os 3 containers estiverem a correr
...
# importar os dados para o neo4j
# carregar o dataset02.zip para o servidor
unzip dataset02.zip -d dataset02
cd dataset02

# usar o mongorestore para importar para a isntância mongo
# -d é o nome da base de dados
# . é a pasta atual onde estarão os .bson e .json
mongorestore -u USER -p PASSWORD --authenticationDatabase admin --uri="mongodb://localhost:27017/" -d desarquivo . 

# feito.
# basta aceder a IP:80 para aceder à API que estará ligada a ambas as bases de dados, com os dados carregados

Criação do Desarquivo

O Desarquivo é uma junção de diferentes peças que se encontram descritas abaixo.

Recolha e Limpeza de Dados

Cujo código se encontra na pasta collection e que diz respeito à interação com as APIs do Arquivo.pt e com a respetiva organização na base de dados MongoDB. Há a realçar que o processo tira partido de parallelismo o que, na prática, resulta numa redução de mais de uma ordem de grandeza no tempo total de recolha. Os demais pormenores estão explicados no ficheiro de instruções na dita pasta.

API

A API foi desenvolvida em Flask e todo o respetivo código encontra-se na pasta api. Este diz respeito à interação com ambas as bases de dados (MongoDB e neo4j).

A Interface

A Interface, desenvolvida em Vue.js com Nuxt.js e Vuetify e com recurso à biblioteca cytoscape.js para a visualização do grafo. Todo o código respetivo encontra-se na pasta ui. A interface está preparada para ser automaticamente colocada em produção em gh-pages.

Docker

À exceção da interface e do processo de recolha de dados, as restantes partes do Desarquivo (API, MongoDB, neo4j) encontram-se em containers Docker o que significa que há uma maior flexibilidade e interoperabilidade quer no desenvolvimento quer em produção. Os comandos mais importantes para orquestrar estes serviços são

  • docker-compose up -d
  • docker-compose down

De realçar que se o projeto for executado em Windows, é necessário desativar o volume do serviço mongodb.

Futuro do Desarquivo

O Desarquivo continuará a ser melhorado e procurará tornar-se uma ferramenta mais completa que se afirma como defensora de transparência, liberdade de expressão, e investigação jornalística. As possibilidades são inúmeras e as ideias também. Se te revês neste projeto e acreditas que faz sentido, considera contribuir com tempo, conselhos, ou ideais.

Para entrar em contacto comigo, utiliza o LinkedIn.

Agradecemos sugestões de melhoria e identificação de erros. Nesses casos, usem os issues do Github.