• Non ci sono risultati.

C APITOLO 4 S VILUPPO DELL ’ APPLICAZIONE E TEST DI USABILITÀ

4.6 I MPLEMENTAZIONE DELL ’ APPLICAZIONE

4.6.1 I

MPLEMENTAZIONE DELLA FUNZIONALITÀ

S

MART

S

EARCH

Smart Search è il nome che abbiamo dato alla nostra funzionalità di ricerca. Alla base della funzionalità c’è un algoritmo, basato su specifiche strutture dati che corrispondono a delle bag of words. Si tratta di insiemi di parole, associati ai corsi di Laurea: ogni corso ha associata una “borsa” di parole, che comprende tutti i termini che possono caratterizzare quel corso, e tali termini sono gli stessi che l’utente può inserire come input nella funzione di ricerca. Ad ogni termine è poi associato un peso, che abbiamo stabilito convenzionalmente da 1 a 10, che descrive la forza con cui quel termine è in relazione con il corso. In figura 4.2 è possibile vedere un esempio.

Per chiarificare il concetto facciamo riferimento ad un esempio. Il termine “matematica” ha peso 10 all’interno della bag corrispondente al corso di Laurea triennale in matematica, mentre ha peso 5 nella bag del corso di architettura. È chiaro che, sebbene il piano di studi di architettura comprenda un numero di esami di matematica non

- 101 - indifferente, il peso di tale argomento all’interno dei 5 anni del corso non è paragonabile a quello che il termine ”matematica” assume all’interno del corso omonimo, di cui è

Figura 4.2: le bag of words incomplete dei corsi di Laurea in economia e commercio (a sinistra) e informatica per il management (a destra).

l’argomento principale. “Matematica” ha invece un peso generalmente pari a 4, 5 o 6 all’interno delle bags riferite ai corsi di ingegneria, mentre assume 1 all’interno di biotecnologie, corso di stampo scientifico che tuttavia si concentra per la maggior parte sugli ambiti di chimica, fisica e biologia (tabella 4.1).

Matematica Architettura Ing. gestionale Biotecnologie

“matematica” 10 5 4 1

Tabella 4.1: Peso assunto dalla parola chiave “matematica” nelle bag of words relative a diversi corsi.

Quando l’utente avvia una ricerca, l’applicazione controlla tutte le bags, e compila una lista dei corsi che contengono le parole selezionate, ordinati in base al peso totale. Vengono presi anche i corsi che non contengono tutte le parole chiave cercate, tuttavia

- 102 -

ne devono includere almeno una. I corsi che non contengono nessuna delle parole chiave cercate non vengono presi in considerazione. Il criterio per ordinare i corsi una volta finita la ricerca è il seguente:

- la priorità è data ai corsi che contengono tutte le parole chiave cercate;

- questi vengono ordinati a seconda del peso totale delle parole chiave al loro interno;

- successivamente vengono presi i corsi contengono tutte le parole chiave meno una (indipendentemente da quale sia la parola mancante), e ordinati allo stesso modo;

- così via fino a che non restano i corsi che contengono solo una parola chiave. Vediamo un esempio.

Vengono inserite nel campo di ricerca le parole chiave “matematica” e “informatica”. Nella lista dei risultati (tabella 4.2) vengono visualizzati:

- i corsi che contengono entrambe le parole, ordinati a seconda del parametro peso(“informatica”) + peso(“matematica”);

- i corsi che contengono solo “informatica” o solo “matematica” ordinati secondo il valore peso(“informatica”) oppure peso(“matematica”) a seconda di quale delle due sia la parola contenuta nella bag del corso considerato.

P(“matematica”) P(“informatica”) Peso totale

Matematica 10 4 14

Ing. e scienze informatiche 4 10 14

Informatica per il management 5 9 14

Ing. elettronica e telecomunicazioni 5 6 11

Ingegneria energetica 6 3 9

Ingegneria gestionale 4 4 8

Economia e commercio 5 2 7

Tabella 4.2: I primi 7 risultati della ricerca con parole chiave “matematica” e “informatica”, con il peso assunto da entrambe le parole all’interno delle bag relative ai vari corsi, e il peso totale usato per definire l’ordine di visualizzazione finale dei risultati.

- 103 - La scelta di dare la priorità al numero di parole contenute invece che al peso totale deriva dal fatto che se l’utente cerca più di una parola avrà interesse maggiore a vedere quali corsi sono coerenti con tutte le parole cercate, prima di quelli che ne contengono solo una. Si potrà obiettare che in questo modo un corso che contiene ad esempio tutte e due le parole cercate con peso pari ad 1 per entrambe avrà più visibilità rispetto ad un corso che ne contiene solo una ma con peso 10. Proprio per quanto descritto in precedenza riguardo alla percezione diversa che gli studenti delle superiori possono avere di certi termini, rispetto a come essi vengono considerati all’interno del mondo accademico, abbiamo reputato questa scelta più coerente con gli obiettivi del progetto.

4.6.2 T

ECNOLOGIE UTILIZZATE

Il prototipo dell’app è stato sviluppato nella forma di un’applicazione web, una scelta implementativa molto flessibile, e facilmente portabile su contesti specifici come Android e iOs. Il codice che realizza l’algoritmo è stato scritto in JavaScript e jQuery, mentre per la parte grafica ci siamo affidati alla combinazione HTML/CSS con il supporto della libreria jQuery Mobile (orientata specificamente allo sviluppo di applicazioni mobili).

I dati contenenti le informazioni sui corsi e le bag of words sono conservati in formato Json (alcuni di essi sono stati convertiti direttamente da file .csv messi a disposizione dall’Università).

4.6.3 R

EALIZZAZIONE DELLE BAG OF WORDS

La creazione di liste di parole chiave specifiche per ogni corso è un processo tutt’altro che banale. Solo con una profonda conoscenza dei corsi presi in esame si può generare una lista realistica. Per questo motivo il nostro lavoro si è concentrato solo su una piccola parte del totale dei corsi offerti da Unibo: i corsi che è possibile trovare con la funzionalità Smart Search sono in tutto 20, e non sono scelti a caso. Per una prima compilazione delle bags ci siamo affidati ad una analisi approfondita della descrizione dei corsi presentato sui relativi siti facenti parte del dominio Unibo, coadiuvata dall’esame di tutti gli insegnamenti presenti nel piano di studi di ciascuno. Per

- 104 -

correggere la lista delle parole chiave, e i valori di peso associati ad ognuna, ci siamo poi affidati alla gentile collaborazione di amici e conoscenti che hanno frequentato personalmente i corsi scelti, in modo da avere delle bag of words più vicine possibile alla realtà.

Le bag of words, rappresentate nella forma corso → parole chiave sono contenute all’interno di un file json. Per implementare l’algoritmo, tuttavia, abbiamo avuto bisogno della versione trasposta, ovvero delle bags rappresentate nella forma parola

chiave → corsi (che permette una ricerca molto meno dispendiosa dal punto di vista

computazionale). Per la trasposizione abbiamo scritto un semplice algoritmo ad hoc.