Progetto SoftPython - Template

ATTENZIONE: QUESTO E’ SOLO UN TEMPLATE, LEGGI ANCHE TUTTA LA PAGINA COME FARE UN PROGETTO

METTERE:

TITOLO

NOME GRUPPO

NOMI / MATRICOLA PARTECIPANTI

DATA

Introduzione

Descrivere

  • gli obbiettivi che ci si è posti

  • risultati attesi (i.e. file CSV con dati integrati da mostrare su Umap)

  • Descrivere brevemente quali attività sono state svolte. Mettere solo una breve sintesi, più avanti nel report vi sarà chiesto di descriverle nel dettaglio. Esempi:

Analisi
Pulizia
Integrazione
Arricchimento
    georeferenziazione
    semantico
Ricerca
    Base
    Avanzata
    Calcolo similarità
    Ranking
Predizione
Presentazione
    slides
    demo
  • librerie Python utilizzate per il progetto

Sorgenti dati

Descrivere le sorgenti dati (almeno due), mettendo:

  • nome origine e possibilmente URL

  • le licenze

  • encoding

  • dimensione in Kb (i file dovrebbero essere max 50 megabyte, se più grandi cercate un modo per ridurli e se avete problemi chiedete come fare)

  • schemi dei dati

    • CSV: intestazione colonne, tipi delle colonne (stringa, numero, data …)

    • JSON: spiegare sommariamente le scheletro del JSON ( se volete strafare scrivete un JSON schema, ma non l’abbiamo visto a lezione)

    • XML: spiegare sommariamente le scheletro dell’XML (possibilmente guardate se l’XML già fornisce un XML schema, ma non l’abbiamo fatto a lezione, se avete dubbi chiedete)

    • SQL: mettere schema del DB (molti browser di database possono generare diagrammi per gli schemi)

    • per altri formati: descrivere a parole

  • qualche dato di esempio

  • Se i dati sono da ottenere tramite web API, chiedersi se è possibile ottenere gratuitamente tutti i dati desiderati entro i limiti d’uso dell’API

IMPORTANTE: ricordarsi di includere nella cartella del progetto una copia dei dati! Questa è fondamentale ai fini della riproducibilità del notebook, e vale in particolare per i dati ottenuti da Web API e pagine HTML, che possono variare nel tempo (i.e. dati meteo).

Analisi

ATTIVITA’ OBBLIGATORIA

Cercare di capire bene cosa c’è dentro il dataset. Cercare problemi - se si può in Python o altrimenti con LibreOffice / Excel. Per esempio, in una colonna ‘Categoria’, quanti valori distinti ci sono? Sono sempre scritti allo stesso modo? Se c’è una colonna con gli indirizzi, gli indirizzi sono sempre formattati nello stesso modo?

  • mostrare raggruppamenti, grafici frequenze. Esempi:

    • motivare con numeri perchè si sono scelte certe colonne piuttosto che altre

    • per le colonne usate, quante celle vuote c’erano in proporzione a quelle piene, con grafico percentuali a torta

    • qual’era la distribuzione dei valori in una data colonna?

    • quante righe sono state mantenute e quante eliminate?

  • correlazioni tra valori (potreste usare librerie come Pandas)

  • mostrare punti su mappa con UMap, notare raggruppamenti

  • ricavare qualche modello dai dati, con plot su grafico (es: relazione lineare pressione / temperatura)

  • mettere qualche widget per variare parametri del modello

Pulizia

Elencare eventuali problemi da correggere, e come li si è risolti. Esempi:

  • dati mal formattati

  • interpretazione dati mancanti, come li si è convertiti

    • i valori assenti sono da assumersi uguali a 0, stringa vuota, None, lista vuota ? …

  • Mappe con punti in posti assurdi

Integrazione

Quando si integrano due dataset con contenuti simili, ma che possono avere formati e campi diversi (es. file CSV agritur e file XML delle strutture alberghiere)

Per un esempio di integrazione, vedere tutorial integrazione

  • Si sono uniti dei dataset ? Come?

  • Su quali colonne è stata effettuata la join?

  • Che problemi sono stati sorti?

  • Come sono stati risolti?

Arricchimento

Si arricchiscono i dati quando si precisa meglio il loro significato. Per esempio, si specifica la posizione geografica aggiungendo le colonne latitudine e longitudine, ottenute passando l’indirizzo testuale a servizi di geocoding. Vedere tutorial integrazione. Altro esempio: si determina il significato preciso delle parole nel testo usando disambiguazione semantica come Dandelion.

  • Sono stati usati dei metodi, librerie Python o servizi via WEBAPI per precisare il significato dei dati?

  • Sono state trovate coordinate geografiche ? Come?

  • Sono state estratte entità / concetti dal testo ? Come ?

Ricerca

L’ information retrieval è l’attività che svolgono i sistemi informatici quando devono recuperare rapidamente delle informazioni rilevanti . Vedere tutorial information retrieval

Si è implementato un sistema di ricerca? Come? Che fattori sono stati considerati ?

Ricerca base

Possiamo categorizzare la ricerca come ‘base’ se permette

  • matching di parole esatto, es cerco “pavimentazione” e se c’è “pavimentazioni” con la “i” alla fine o “manto stradale” non la trova

  • ricerca di valori tra due limiti. Es cerco tutti i bandi pubblicati entro due date. I valori da cercare sono già facilmente disponibili in celle separate in formato machine readable e non serve estrarli con tecniche particolari

  • inserimento query di ricerca come parametro di funzioni python

  • visualizzazione risultati come semplici print testuali

Ricerca avanzata

Possiamo considerare una ricerca ‘avanzata’ se richiede una elaborazione preventiva dei dati per una maggiore precisione. Per es. si vuole ricercare per importo complessivo di un bando, ma il valore dell’importo è nella descrizione e va preventivamente estratto in una colonna a parte. Vedere regex su softpython

Miglioramento dell’interfaccia grafica (vedere tutorial applicazioni interattive):

  • inserimento della ricerca in una casella di ricerca widget jupyter

  • possibilità di impostare qualche parametro della ricerca con dei widget (es checkbox per includere / escludere agritur nella ricerca)

  • visualizzazione della ricerca in widget

Ricerca semantica

La ricerca ‘semantica’ prende in considerazione il significato delle parole, vedi teoria information retrieval

  • matching di parole non esatto, es cerco “pavimentazione” e se c’è “pavimentazioni” con la “i” alla fine o ‘‘manto stradale” trova una corrispondenza

  • ricerca per similarità: Sono stati adottati metodi per calcolare la similarità tra gli elementi da cercare? Quali sono le performance?

Ranking

  • I risultati della ricerca vengono presentati in un ordine casuale o preciso?

  • Sono ordinati per rilevanza ?

  • Quali fattori si usano per calcolarla?

  • Che formula si è usata per creare il ranking ?

Predizione

  • Si è implementato un sistema predittivo (es. date n - 1 colonne riesco a prevedere il valore dell’ennesima con una precisione del X %)?

  • Come è stata calcolata la formula per predire la colonna mancante?

Presentazione

Slides

Sono state create delle slides? Dove si trovano (se online si deve consegnare una copia pdf nello zip) ?

Demo

NOTA: questa parte è per la demo, che è distinta dalla sezione Analisi. Se prima hai usato dei widget per mostrare i parametri dei modelli, quei widget non vanno riportati qui

  • Se il tuo progetto prevede una parte di demo in Jupyter, includi nel foglio separato demo.ipynb i widget funzionanti

  • Se invece hai fatto il progetto come sistema esterno a Jupyter, spiega bene qui come eseguirlo, includendo degli screenshot del sistema.

Condividere codice: Se hai codice da condividere tra più fogli, invece del copia-e-incolla considera creare file di codice sorgente Python con estensione .py come esempio.py. In entrambi i fogli poi potresti fare

from esempio import *

Problematiche riscontrate

Descrivere i problemi maggiori riscontrati nel progetto

Conclusioni

Descrivere:

  • se si sono raggiunti gli obbiettivi posti

  • eventualmente cosa si potrebbe aggiungere di interessante

[ ]: