4.3 Accessibilità
5.2.6 Rete dei vicini
Bisogno
Una volta individuato un elemento di interesse l’utente potrebbe voler mettere in evidenza ed esplorare tutte le sue relazioni. Ad esempio, selezionando il nome di un funzionario sospettato di corruzione, potrebbe dover essere possibile mostrare, con un solo click, tutti i soggetti che sono in qualche maniera entrati in contatto con lui, anche indirettamente, comparendo nello stesso documento.
Proposta
Attraverso il tasto "Cerchia" l’utente potrà visualizzare la ego-network di ciascun nodo selezionato (figura 5.12), che mostri gli elementi ad esso collegato indipendentemente dalla loro tipologia (aziende, persone e organizzazioni). La
Algorithm 3 Ego Network
1: procedure Node and link selection 2: n ← clicked node
3: for e(u, v) ∈ E(U, V ) do
4: if n is u OR n is v then
5: Add e in links
6: end if
7: end for
8: for e(u, v) ∈ links do 9: if u /∈ nodes then 10: Add u in nodes 11: end if 12: if v /∈ nodes then 13: Add u in nodes 14: end if 15: end for
16: return nodes, links
17: end procedure
funzione jQuery richiamata al premere del tasto, converte il click sui nodi, e lo fa corrispondere ad una nuova azione.
L’evento click gestito dal relativo metodo jQuery, sarà così collegato a una funzione callback che per ciascun nodo porterà a visualizzare i suoi vicini e a nascondere gli altri elementi della rete (si veda Algorithm 3).
Cliccare sui nodi dovrà però avere questo effetto solo dopo aver premuto il tasto "Cerchia" e fino al premere di un tasto che mostri diverse proprietà del grafo. Per questo, la gestione del click è limitata da una condizione: una variabile flag attiva il click solo se questa assume valore −1, valore che diviene positivo non appena l’utente preme un tasto diverso.
Ancora: se l’utente volesse tornare alla rete originaria per selezionare un nuovo nodo dopo aver attivato la visualizzazione di una ego-network, basterà cliccare, anche in questo caso, all’interno del contenitore "svg", in un punto qualsiasi che non sia occupato da un vertice del grafo.
5.2.7
Graphlet
Bisogno
Le ego-network non sono gli unici sottografi in grado di veicolare importanti informazioni. Si potrebbe fornire ad un esperto del dominio le indicazioni
su quali siano le relazioni più frequenti e tra quali entità, e la possibilità di istituire dei paragoni. Ad esempio, può essere interessante confrontare quali schemi si presentano più spesso esplorando i documenti di un comune che toccano argomenti diversi, confrontare due comuni su quello stesso argomento, o in un diverso arco temporale, la nuova amministrazione di un comune e la precedente. Si potrebbe infine investigare come cambia il modo di amministrare prima di un grande evento, o dopo il verificarsi di eventi naturali o atmosferici particolarmente violenti, un modo diverso per monitorare la ricostruzione. Ma nel registrare i pattern può essere utile anche porre l’attenzione ai meno frequenti, a quelle formazioni che si verificano meno spesso. In questo modo è possibile segnalare uno schema insolito, frutto di un particolare procedimento o, in casi estremi, di anomalie da verificare.
Proposta
I graphlet possono indicare alcuni "schemi fissi" tra le entità dei documenti, specie se ciascun elemento si distingue dall’altro in base alla propria tipologia di persona, azienda o organizzazione. Il tasto "Schemi" consente all’utente di visualizzare i pattern ricorrenti tra le entità estratte dai documenti restituiti, e in quale percentuale compaiono nel grafo. Da qui è inoltre possibile accedere a una sezione apposita, che consente di paragonare i documenti di diversi argomenti e diversi comuni.
Pattern e percentuali Per raggiungere questi obiettivi, abbiamo definito un approccio ad hoc, costruito appositamente per soddisfare le necessità del servizio di analisi. L’algoritmo di Approximate Graphlet Extraction (AGE) consente di estrarre i graphlet mantenendo l’informazione relativa al tipo di entità in esame, ovvero azienda, persona o organizzazione, con la relativa frequenza di apparizione (si veda Algorithm 4).
Anche questo algoritmo è scritto in Python e prevede, oltre all’utilizzo dei pacchetti Numpy, Pandas, Networkx, Json, Sys, Network.readwrite, Os anche l’importazione di due librerie che non sono state ancora introdotte, Itertools e Tqdm.
Algorithm 4 Approximate Graphlet Extraction function Backbone(G(V, E), δ)
return Gi ⊂ G
end function
function Local component size percentile(Gi, p)
return s end function
function Approximation graphlet identification(Gi, s, min, max)
return Gj ⊂ Gi
end function function Main
Gi ⊂ G = Backbone(G(V, E), δ)
s = Local component size percentile(Gi, p)
Gj ⊂ Gi = Approximation graphlet identification(Gi, s, min,
max)
end function
I graphlet saranno calcolati sulla backbone: in input dovrà quindi essere fornita la relativa edgelist, la lista degli archi con il peso associato, e la lista dei nodi con il relativo attributo ad indicarne la tipologia.
Dove s individua la dimensione del componente più grande che dovrà essere esaminato per l’estrazione dei graphlet in base al percentile p fornito dall’utente. Gli attributi min e max invece indicano rispettivamente la dimensione minima e la dimensione massima che dovranno avere i graphlet estratti, corrispondente al numero di nodi che li compongono.
In sintesi, i parametri impostati sono 2.32 per la backbone threshold, 70 il percentile, mentre il numero dei nodi all’interno dei partner dovrà andare da 3 a 4. Il grafo in input è costituito dalle entità contenute in tutti i documenti restituiti dalla query dell’utente, senza nessun filtro.
L’output è costituito da diversi file:
• Tanti file json quanti sono i pattern registrati. Ciascun json è un grafo che mostra il pattern in questione;
• Un file di statistiche, in cui è mostrato il numero di istanze presenti nel grafo per ciascun pattern, con l’indicazione del numero di archi e nodi che lo compongono;
• Un file di matching tra l’id dei pattern e gli id dei nodi che li formano, elencati in tuple da tre o da quattro nodi.
Figura 5.13: Dopo aver selezionato il tasto schemi in alto a destra, compaiono
i graphlet più frequenti composti da tre e quattro nodi, e i grafi insoliti. Il tasto "Sezione schemi" permette invece di accedere alla sezione dedicata ai graphlet.
Uno script in Python ci consente di ordinare i pattern per numero di istanze, grazie ai Pandas Dataframe. Si selezionano così i tre pattern più frequenti da tre e quattro nodi, e i due che occorrono di meno.
Viene calcolato anche con quale percentuale ciascuno di questi pattern è presente all’interno del grafo rispetto a tutti gli altri pattern che hanno lo stesso numero di nodi. Questo dato sarà prima trasformato in un dizionario e poi esportato in json: servirà per popolare delle bar chart singole21 poste accanto a
ciascuna tipologia di pattern.
Gli id dei nodi sono sostituiti con i nomi dei rispettivi elementi, poi, come prima, si convertono in un unico dizionario ed esportati in json, perché siano facilmente gestibili in Javascript.
L’obiettivo è che al click dell’utente, si popoli un div che abbasserà il grafo e mostrerà i 9 pattern totali suddivisi in tre colonne: una colonna per i pattern più frequenti composti da tre nodi, una per i pattern più frequenti composti da quattro e un’altra colonna per i pattern di quattro nodi meno frequenti (figura 5.13).
I graphlet sono rappresentati stavolta in uno spazio molto più ristretto in cui i nodi non variano la loro posizione, né possono essere spostati.
In basso, un bottone permette infine di accedere ad una nuova sezione, in cui l’utente potrà scegliere, attraverso quattro menù a tendina, due tra i comuni di cui SemplicePA mette a disposizione i documenti e un relativo argomento
Figura 5.14: La sezione dedicata ai graphlet in cui è possibile confrontare i
pattern di due diversi comuni. Accanto a ciascun grafo tre esempi di pattern estratti dalla rete indicati con i nomi delle entità che li compongono.
(figura 5.14). I due comuni potranno essere così confrontati sulla base dei diversi pattern. Accanto a ciascun grafo una tabella mostrerà alcuni esempi dei pattern, riportando i nomi delle entità che rientrano in quella tipologia.
Per concludere, si precisa che non essendo presente un collegamento diretto con l’interfaccia di SempliePA, e quindi con SolR, il prototipo della sezione "Schemi" mostra soltanto i pattern relativi a due comuni, quello di Arezzo e quello di Umbertide, esplorando quattro degli argomenti a disposizione. Come per la sezione "Inferenza" si è preferito infatti mostrare le funzionalità della pagina da subito attraverso una ricerca con parametri di default, allo scopo di aiutare il più possibile l’utente ad orientarsi in questo nuovo ambiente. Visto il particolare costo computazionale dei graphlet questi non potranno essere estratti online, ma in un momento precedente alla loro visualizzazione. Nella sezione "Inferenza" proposta, per le query che non prevedano tra i parametri il nome di un comune o un argomento, si potrà ad esempio decidere di mostrare i pattern in relazione ai diversi comuni, o più precisamente all’argomento relativo ai documenti di un certo comune.
Capitolo 6
Test di usabilità
Questo capitolo descrive le modalità e gli esiti dei test di usabilità condotti sul prototipo proposto. I test di usabilità consistono nell’osservare le persone mentre provano ad usare ciò che si sta creando/progettando, per capire se ci sono alcune componenti da semplificare, o per confermare la loro facilità di utilizzo (Krug, 2010). Da questa prima fase di test, infatti, sono sorte alcune criticità relative all’usabilità della piattaforma. L’analisi di queste criticità ha portato a formulare alcune proposte di miglioramento dell’attuale interfaccia. È così possibile affermare che i test condotti abbiano avuto alla fine un esito positivo, proprio per la possibilità che hanno concesso di individuare le problematiche relative alla funzionalità della piattaforma. L’utilità di un test di usabilità passa anzitutto dalla definizione di una metodologia adeguata. Di seguito gli elementi che hanno portato ad individuarla.
6.1
Metodologia
Le metodologie esistenti per la conduzione di test di usabilità variano in base a diversi fattori. Jacob Nielsen ne riassunse 9 nel suo primo manuale (1993), indicandone le principali caratteristiche (figura 6.1). Ad esempio esistono test di usabilità per ogni fase del life-cicle del prodotto, dalla prima progettazione al prototipo, fino alla post-commercializzazione. I test scelti possono avere vantaggi e svantaggi diversi, oltre a dipendere da fattori esterni su cui non si ha un controllo diretto, come ad esempio i fondi a disposizione o il numero delle
Figura 6.1: La tabella riassuntiva dei test di usabilità. Fonte immagine: Nielsen
(1993),
persone disponibili a partecipare.