Il programma prende un generico articolo di giornale da una delle sorgenti disponibili e lo fa passare tramite
un Adapter
,
il cui compito è quello di convertire dal formato originale (JSON, CSV...) ad un oggetto Article
. La
classe Adapter
è astratta e ciò permette di aggiungere nuovi Adapter personalizzati relativi a nuove sorgenti. Una volta ottenuto,
l'array di Article
può essere passato al Serializer
per essere
serializzato in xml e successivamente all'Analyzer
per essere analizzato.
Nel progetto consegnato su moodle il jar NON è già compilato. Vanno seguite queste istruzioni per compilare.
Aprire un terminale e entrare nella directory in cui si vuole scaricare il progetto ed eseguire i seguenti comandi
git clone https://github.com/gekoxyz/eis-final
cd eis-final
Registrare una key per l'API di The Guardian all'indirizzo https://open-platform.theguardian.com/access/
Scrivere questo comando nel terminale sostituendo key con la chiave fornita da The Guardian (su Windows creare manualmente il file con i contenuti specificati nell'echo)
echo "THEGUARDIAN_API_KEY=key" > .env
Per compilare il progetto e generare il jar
mvn package
oppure per farlo senza eseguire i test (si risparmia del tempo)
mvn package -DskipTests
spostare nella directory principale il jar, di modo da avere il corretto accesso alla cartella assets e al file .env
mv ./target/eis-final-1.0-SNAPSHOT.jar ./
e infine per eseguire
java -jar eis-final-1.0-SNAPSHOT.jar
Come si può leggere dal pom.xml
sono state utilizzate le seguenti librerie:
Utilizzato per il parsing dei file CSV nell'adapter degli articoli del New York Times
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>
Utilizzato per il parsing dei file JSON nell'adapter degli articoli di The Guardian
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.7.1</version>
</dependency>
Per tokenizzare gli articoli (Guardando nel pom ci sono anche altre dipendenze necessarie legata a questa ma CoreNLP è la principale)
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>4.5.4</version>
</dependency>
Per testare il codice
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
Per caricare la key di The Guardian nelle variabili d'ambiente
<dependency>
<groupId>io.github.cdimascio</groupId>
<artifactId>dotenv-java</artifactId>
<version>2.3.2</version>
</dependency>