Sei sulla pagina 1di 27

Università degli Studi di Milano Bicocca

Scuola di Scienze
Dipartiento di Inforiatca, Sisteiistca e Coiunicazione
Corso di laurea in Inforiatca

Chatbot: un tutor virtuale per la


didattica in blended-learning

Relatore: Prof. Fabio STELLA

Co-relatore: Dott.ssa Paola CHIESA

Relazione della prova finale di:

Davide Riva

Matricola 807149

Anno Accademico 2017-2018


Indice
1 Introduzione....................................................................................................................4
2 Popolarità dei chatbot.....................................................................................................6
3 Interfacce utente: uno sguardo al futuro.........................................................................7
3.1 La fine delle GUIs..................................................................................................7
3.2 La fine delle applicazioni........................................................................................8
4 Migliorare l’esperienza utente........................................................................................9
4.1 Dire all’interlocutore con chi si sta parlando.........................................................9
4.2 Non fornire troppe informazioni contemporaneamente.........................................9
4.3 Dare una personalità al chatbot..............................................................................9
4.4 Non far attendere l’utente....................................................................................10
4.5 Emotion Detection...............................................................................................10
5 Tipologie di chatbot......................................................................................................11
6 Elementi costitutivi di un chatbot.................................................................................12
7 Sviluppi futuri della tecnologia....................................................................................13
7.1 I rischi legati al progredire dell’IA......................................................................13
7.2 Possibili soluzioni................................................................................................14
8 Panoramica dei principali servizi in cloud...................................................................16
8.1 Dialogflow...........................................................................................................16
8.2 Wit.ai....................................................................................................................16
8.3 Servizi forniti da Microsoft..................................................................................17
8.4 Amazon Lex.........................................................................................................17
8.5 IBM Watson.........................................................................................................17
9 ProS-Bot: un tutor virtuale per la didattica in blended-learning..................................19
9.1 Progettazione dell’applicazione...........................................................................19
9.2 Testing..................................................................................................................21
9.3 Sviluppi futuri......................................................................................................21
10 Bibliografia................................................................................................................25

Laurea Triennale in Informatica


Pagina 2
Al mio relatore e correlatore,
per avermi dato la possibilità di approfondire un tema così attuale.
Ad Alessandro Bregoli e Luca Toma,
i quali mi hanno aiutato nel mettere in produzione il chatbot.

Alla mia famiglia,


che mi ha supportato economicamente nei miei studi.

Alla mia ragazza e a mia sorella,


per essermi state vicine quando ne avevo bisogno.

A tutti quelli che mi hanno accompagnato durante questi tre anni,


troppo numerosi per essere citati singolarmente ma altrettanto importanti.

Laurea Triennale in Informatica


Pagina 3
1 Introduzione
I chatbot sono degli strumenti che permettono all’utente di interagire con essi,
simulando una conversazione. Presenti sin dagli albori dell’informatica (la loro prima
apparizione pubblica si fa risalire al 1966 con ELIZA [11], un software in grado di
effettuare un’analisi rudimentale del testo in input per poi rispondere in maniera
altrettanto limitata), sono recentemente tornati in auge grazie alle moderne tecniche di
NLU (Natural Language Understanding) le quali permettono di comprendere l’effettivo
significato di una frase inserita dall’utente [12]. Tutto questo è stato possibile grazie al
lavoro di ricerca di numerosi centri dislocati in tutto il mondo e a personalità di spicco
nel campo accademico come Christopher Manning, fondatore dello Stanford NLP group
e autore di numerosi libri e pubblicazioni a riguardo [13]. Degno di nota è il suo corso
fornito sulla piattaforma Coursera, le cui slides sono liberamente disponibili
all’indirizzo https://web.stanford.edu/~jurafsky/NLPCourseraSlides.html.

Da un lato queste nuove tecnologie hanno permesso di creare assistenti personali come
Cortana, Siri e Alexa; dall’altro i bot sono impiegati per fornire supporto per prodotti e/
o servizi specifici, come per esempio Domino’s Pizza.

Figura 1.1: Esempio di utilizzo del bot di Domino's Pizza.


Grazie ad esso è possibile, ad esempio, ordinare una pizza senza bisogno
dell’intervento umano.

In seguito all’aumento della popolarità dei chatbot sempre più aziende forniscono PaaS
(Platform as a Service) per la loro creazione anche a chi non è in grado di programmare
o comunque non ha un background tecnico adeguato.

Laurea Triennale in Informatica


Pagina 4
Tuttavia la creazione dei bot non presenta soltanto ostacoli di tipo tecnico: è necessario
infatti un ripensamento riguardo l’interazione con l’utente, che prima era confinata alle
GUIs.

Un campo che ha grosse potenzialità per quanto riguarda l’utilizzo dei bot è quello dei
corsi in blended learning. Molto spesso infatti viene assegnato ad un tutor il compito di
rispondere sul forum o via mail a questioni specifiche del corso, impegnando tempo e
fondi per fare il lavoro che potrebbe eseguire almeno in parte un software. Un ulteriore
problema rimasto irrisolto è quello di integrare questi strumenti ai MOOC (Massive
Open Online Courses), estendendo il supporto in tempo reale ad un numero vastissimo
di studenti. Esperimenti di questo genere sono già stati effettuati nel recente passato con
esito decisamente positivo; un caso tra i più famosi è quello di Jill Watson, il tutor di un
corso fornito al Georgia Institute of Technology che si è poi rivelato essere un bot[14].

Queste e molte altre tematiche verranno successivamente approfondite all’interno


dell’elaborato, fornendo poi al lettore un’analisi sulle tecnologie attualmente utilizzate
per la realizzazione di questi servizi.

Laurea Triennale in Informatica


Pagina 5
2 Popolarità dei chatbot
I bot, per come li conosciamo ora, sono una tecnologia relativamente nuova e in
continuo sviluppo: basti pensare che il sondaggio “Chatbot Survey 2017” di
MindBowser[21] ha evidenziato come il 54% degli sviluppatori coinvolti non avesse mai
sperimentato nulla in questo campo prima del 2016 e come la maggior parte delle
aziende avessero sentito parlare di questo argomento per la prima volta tra il 2015 e il
2016.

Un discorso simile può essere fatto con le tecnologie che hanno reso possibile tutto
questo: analizzando i dati forniti da Google Trend (www.google.com/trends) per quanto
riguarda il termine “Chatbot”, scopriamo che l’indice che rappresenta l’interesse per
questo termine è quasi quintuplicato dal 2014 al 2017.

Implementare un bot significa anche avere un enorme bacino di utenza senza bisogno
che l’utente debba installare nulla: nel 2016 secondo Oracle infatti 4200 milioni di
persone hanno utilizzato applicazioni di messaggistica[22].

Nel frattempo anche le grandi multinazionali stanno spostando i loro interessi verso i
bot: la stessa Google è passata da “mobile first” a “AI first” come dichiarato dal CEO
Sundar Pichai[23]. Altre aziende come IBM con Watson, Microsoft con Microsoft Bot
Framework e Facebook con l’acquisizione di Wit.ai[24] stanno cercando di mantenere in
tutti i modi la loro leadership nel settore dell’informatica.

L’importanza di queste nuove tecnologie all’interno di quest’ultima azienda è


ulteriormente confermata dal ruolo centrale che esse hanno avuto durante la conferenza
F8 2017[25].

Laurea Triennale in Informatica


Pagina 6
3 Interfacce utente: uno sguardo al futuro

3.1 La fine delle GUIs


Agli albori dell’informatica era possibile interagire con gli elaboratori soltanto
attraverso la CLI (Command Line Interface): l’utente inseriva un input tramite comandi
testuali e riceveva un output anch’esso testuale. Questo modo di interagire con i
computer venne poi abbandonato in favore della GUI (Graphical User Interface) nel
1981, grazie ai laboratori della Xerox[31] e relegato a campi di nicchia come l’ambito
server: attraverso un’interfaccia grafica e all’invenzione del mouse diventò possibile
interagire in maniera più produttiva con la macchina. Inoltre divenne possibile
visualizzare ed editare contenuti multimediali come foto e video. L’avvento della
tecnologia denominata “touch screen” nei primi anni 2000 non ha fatto altro che
consolidare definitivamente questo trend anche su mobile[32].

In tutti questi anni, grazie alla diffusione delle interfacce grafiche, è nato e si è poi
perfezionato un campo denominato HCI (Human-Computer Interaction) che si occupa
di rendere il più possibile accessibili, usabili e affidabili le applicazioni[33].

Tuttavia con l’avvento dei bot l’input ritorna ad essere testuale o al massimo vocale,
costringendo gli sviluppatori ad un ripensamento di quelle regole di design utilizzate
sino a quel momento[34]. Dialogare con la macchina è infatti una nuova possibilità che
apre numerosi scenari, basti pensare al rendere chiare le risposte a chi soffre di DSA
(Disturbi Specifici dell’Apprendimento).

Laurea Triennale in Informatica


Pagina 7
3.2 La fine delle applicazioni
Con l’avvento dei bot non sarà neppure più necessario avere un’applicazione per ogni
servizio di cui si vorrà fruire:

• I chatbot si possono infatti integrare con piattaforme di messaggistica già


presenti sul cellulare, interagendo con esso attraverso queste ultime. Come si
può vedere dalla figura 3.2, queste app sono infatti tra le più installate ed
utilizzate dai possessori di smartphone, consentendo quindi di avere un enorme
bacino di utenza;

• L’unico modo di fornire i propri servizi su dispositivi come Amazon Echo o


Google Home è attraverso l’input e output tramite comandi vocali;

Figura 3.2: Lista applicazioni più popolari nel Play Store aggiornata al 15/01/2018.

Laurea Triennale in Informatica


Pagina 8
4 Migliorare l’esperienza utente
Come già detto in precedenza è necessario seguire delle linee guida per ottimizzare i bot
che si realizzano. Qui sotto vengono indicati alcuni consigli forniti da Jinny Seo [41] da
considerarsi come punto di partenza.

4.1 Dire all’interlocutore con chi si sta parlando


I primi secondi di utilizzo di un chatbot sono fondamentali. E’ necessario quindi chiarire
all’utente che sta dialogando con un software e non con una persona reale, indicando
anche le modalità con cui è possibile interagire. Nel caso in cui il bot non sia in grado di
rispondere ad una domanda in modo corretto esso deve lasciare la possibilità di
comunicare con un umano.

4.2 Non fornire troppe informazioni contemporaneamente


Verificare che ad ogni richiesta da parte dell’utente il bot non risponda fornendo troppe
informazioni. Fornire una risposta parziale è sconsigliato, com’è sconsigliato entrare
troppo nel dettaglio.

Un test utile può essere quello di verificare che ogni risposta non costringa il fruitore del
servizio a scrollare il testo per poter leggere tutto il suo contenuto [42]. Il rischio è infatti
quello che l’utente finale non guardi o legga solo parzialmente la risposta.

4.3 Dare una personalità al chatbot


L’applicazione dovrà interagire con gli utenti in base al contesto per cui è stata
sviluppata: un chatbot che si occupa di gestire i conti correnti degli affiliati ad una
banca dovrà presumibilmente comunicare in modo più formale rispetto a se avesse il
compito di gestire gli ordini relativi ad una pizzeria.

Laurea Triennale in Informatica


Pagina 9
4.4 Non far attendere l’utente
Il tempo che intercorre tra l’invio della domanda e la ricezione di una risposta deve
essere minimo: lunghi ritardi tendono ad essere confusi con il non corretto
funzionamento del servizio.

Nel caso in cui il chatbot non possa rispondere istantaneamente, una buona pratica è
quella di fornire all’utente un feedback visivo (per esempio l’indicatore “sta
scrivendo...” su Telegram).

4.5 Emotion Detection


Eseguire quella che è chiamata Sentiment Analysis sugli input dell’utente può
permettere, ad esempio, di capire quando chi fruisce del servizio non è soddisfatto dalle
risposte del chatbot e di conseguenza è necessario un intervento umano.

Laurea Triennale in Informatica


Pagina 10
5 Tipologie di chatbot
Come riportato da William Vorhies [51], i bot possono essere suddivisi in due grandi
categorie: quelli basati su regole preimpostate dal programmatore e quelli basati su
tecniche di AI (Artificial Intelligence).

Nel primo caso rientrano tutti quei software che interagiscono in maniera predefinita a
determinate richieste da parte dell’utente. Un chiaro esempio di bot di questo tipo è
TrackBot sulla piattaforma di messaggistica Telegram (cercare il nickname @TrackBot
per poterlo utilizzare), il quale permette di tener traccia degli ordini che si sono
effettuati e che sono stati presi in carico dal corriere.

Nel secondo caso invece il chatbot è in grado di apprendere tramite un training iniziale
ed imparare ulteriormente a mano a mano che acquisisce nuovi dati attraverso le
interazioni con gli utenti. Il training consiste nel fornire alla macchina dati che possono
provenire ad esempio da dialoghi reali, per poi addestrarla e produrre un modello che è
in grado di dare previsioni sufficientemente accurate nel momento in cui gli vengono
forniti nuovi casi[52].

Decidere che tipologia utilizzare è un problema legato al contesto del prodotto finale: se
per realizzare un bot che accenda o spenga le luci di casa a piacimento utilizzare il
primo approccio è sufficiente, per realizzare qualcosa che sia in grado di rispondere a
domande variegate in un dominio aperto è invece necessario orientarsi verso la seconda
tipologia.

Delle ulteriori suddivisioni sulla tipologia di queste applicazioni possono essere


applicate a seconda del tipo di input o output (testuale o vocale), il tipo di dominio (più
vasto è, più il bot deve rispondere a domande general purpose), et cetera.

Laurea Triennale in Informatica


Pagina 11
6 Elementi costitutivi di un chatbot
La maggior parte dei servizi che offrono NLU si compongono di tasselli fondamentali
che presentano tra loro caratteristiche comuni[12]:

• Agent: definisce tutto quello che il bot è in grado di fare. Potendo creare più bot
è quindi possibile anche avere più Agents, ognuno dei quali con determinate
funzionalità;

• Intent: è un collegamento fra la richiesta dell’utente e l’azione da svolgere.


Siccome un bot può rispondere a più azioni, può quindi avere più Intents. Si può
immaginare, ad esempio, un Intent che mappi tutte le domande relative al meteo
con delle risposte che indichino le previsioni della città inserita nei giorni
specificati dall’utente (esempio: alla domanda “che tempo farà domani a casa
mia?” verrà associato l’Intent “weather”). Non è inoltre necessario inserire tutte
le combinazioni di input in quanto gli esempi inseriti verranno usati in fase di
training per estrarre il contesto delle richieste;

• Action: è la risposta che deve avere il chatbot rispetto ad un determinato Intent.


Riprendendo l’esempio precedente all’Intent “weather” verrà assegnata una
risposta “Il giorno X nella città Y le condizioni climatiche saranno Z”;

• Context: tenere traccia del contesto permette di memorizzare informazioni che


sono già state indicate in richieste precedenti. Si immagini di chiedere “Che
tempo farà domani a Milano?” e poi “E dopodomani?”; il bot deve
necessariamente memorizzare il contesto delle richiesta precedente per ricordarsi
qual è la città scelta per la query;

• Entity: è un oggetto del mondo reale che viene categorizzato per poi poter
essere analizzato attraverso il NLU. Possiamo infatti categorizzare parole come
“oggi”, “domani”, “venerdì” e via dicendo in un’unica entity “DATE”;

Laurea Triennale in Informatica


Pagina 12
7 Sviluppi futuri della tecnologia

7.1 I rischi legati al progredire dell’IA


Man mano che la tecnologia sulla quale si basano gli assistenti digitali progredisce,
sorgono numerose questioni: si arriverà al punto in cui non sarà più possibile
distinguere tra un essere umano ed una macchina? Un’applicazione sarà in grado di
sostituire l’uomo, per esempio, fornendo supporto tecnico al suo posto?

Queste e altre domande avranno sempre più importanza a causa dell’automazione, la


quale rimpiazzerà in molte attività il lavoro umano. Un fattore da tenere in
considerazione è sicuramente il tasso di occupazione: il fatto che una buona parte della
popolazione sia disoccupata e che la quasi totalità della ricchezza e delle tecnologie
siano in mano a grandi multinazionali porterà a gravi problemi (es: potere gestito da una
piccola cerchia di persone).

Figura 7.1: Device touchscreen installato all'interno di un ristorante McDonald's che


permette al cliente di ordinare senza nessun intervento umano.

Per osservare se un lavoro è potenzialmente sostituibile e, data una mansione, qual è la


percentuale per la quale essa è a rischio automazione sono presenti su Internet numerosi
siti, tra i quali https://willrobotstakemyjob.com.

Laurea Triennale in Informatica


Pagina 13
7.2 Possibili soluzioni

Reddito di base

Per risolvere queste problematiche è stato teorizzato il concetto di reddito minimo


universale: l’idea è quella di erogare, attraverso lo stato, una determinata somma di
denaro a cadenza regolare verso ogni cittadino [71]. In questo modo è possibile aumentare
il potere di acquisto, soprattutto delle fasce più povere della popolazione.

Open source e open data

Rilasciare un software sotto licenza open source significa che gli sviluppatori hanno
reso il suo codice sorgente pubblico, rendendone possibile la lettura, la modifica e
l’utilizzo dello stesso. Similarmente gli open data sono un insieme di dati che vengono
rilasciati al pubblico attraverso delle licenze che ne permettono l’analisi e il riutilizzo da
parte di chiunque.

Rilasciare le proprie creazioni sotto delle licenze permissive, oltre a costituire un fattore
ideologico, permette a tutta la comunità di beneficiare di un prodotto anche quando esso
non sarà più supportato dal creatore, di verificarne l’effettiva attendibilità e sicurezza e
di poter applicare modifiche migliorative.

Figura 7.2: Logo della Open Source Initiative, un’organizzazione no profit nata con lo
scopo di promuovere il software open source.

Rilasciare tutti i sorgenti che hanno reso possibile questo progetto sotto una licenza
open source (MIT License) e pubblicare questo documento tramite Creative Commons
permetterà ad esempio a qualsiasi professore di applicare e modificare liberamente
questi prodotti. L’obbiettivo finale è infatti quello di creare un caso studio per poi
migliorare l’applicazione (vedi capitolo 9.3) ed estenderla a più corsi possibili.

Laurea Triennale in Informatica


Pagina 14
Nello specifico vengo analizzate le licenze utilizzate, fornendo un breve riassunto del
loro contenuto:

• MIT License[72]: permette la distribuzione, la modifica, l’uso commerciale e


l’uso privato del prodotto;

• Creative Commons Attribuzione - Condividi allo stesso modo 4.0


Internazionale[73]: permette la modifica e condivisione dell’opera, rispettando
però le condizioni di attribuzione all’autore originario e obbligando a
ridistribuire i contenuti modificati con la licenza originaria;

Laurea Triennale in Informatica


Pagina 15
8 Panoramica dei principali servizi in cloud
Per implementare un chatbot non è necessario dover re-inventare la ruota: esistono
infatti aziende che offrono questo tipo di servizi online. In questo capitolo vengono
analizzate le principali piattaforme, fornendo pro e contro per ognuna di esse. Premetto
che quest’analisi è stata eseguita il 3 marzo 2018, essendo le features variabili nel
tempo.

8.1 Dialogflow
Recentemente acquistata da Google, i suoi punti di forza sono la gratuità del servizio
senza limiti di utilizzo per quanto riguarda i messaggi testuali, il fatto che abbia delle
Integrations con i maggiori servizi di messaging (Telegram, Slack, …) e la possibilità di
estendere il bot a nuovi protocolli tramite le API fornite.

Il supporto ai rich messages (immagini, audio, video, et cetera) è inoltre un’opzione


possibile, da considerare nel caso il prodotto da realizzare necessiti di essere il più
multimediale possibile.

Non sono ancora presenti strumenti per il Sentiment Analysis.

8.2 Wit.ai
Inglobata da Facebook nel 2015, fornisce anch’essa gratuitamente i propri strumenti, i
quali di default non hanno però nessuna integrazione con applicazioni di messaggistica
ed è quindi necessario programmare un bridge.

Prevede strumenti per il Sentiment Analysis.

Laurea Triennale in Informatica


Pagina 16
8.3 Servizi forniti da Microsoft

LUIS

Può essere utilizzato per effettuare del NLP (Natural Language Processing) senza alcun
tipo di collegamento con nessun servizio di messaggistica. Prevede un free tier per le
applicazioni che hanno poche richieste mensili.

Bot framework

Utilizzando LUIS, Bot framework si avvicina alle funzionalità fornite da Dialogflow,


aggiungendo però servizi quali Bing Spell Check per controllare gli errori grammaticali
all’interno di una frase, etc…

Si integra perfettamente con Azure, ed è per questo da preferirsi nel caso in cui tutta la
parte di back-end della propria applicazione si trovi in cloud su questa piattaforma.

8.4 Amazon Lex


Sebbene non preveda nemmeno un free tier, si integra perfettamente con l’ecosistema
AWS (Amazon Web Services): ad esempio grazie a Lambda non è necessaria la fase di
provisioning.

Si sottolinea come, al momento della stesura di questo documento, non sia possibile
utilizzare nessuna lingua al di fuori dell’inglese per quanto riguarda il NLU.

8.5 IBM Watson


IBM nella sua soluzione cloud prevede sia una liberia di NLP, sia Conversation che
premette lo sviluppo di chatbot.

Infine è disponibile un servizio denominato WVA, costruito sopra Conversation, che


permette di utilizzare quest’ultimo anche senza conoscenze specifiche ne di machine
learning ne di programmazione.

Laurea Triennale in Informatica


Pagina 17
Dati i costi mediamente proibitivi, queste soluzioni non andrebbero utilizzate nel caso in
cui il bot che si sta realizzando non generi dei guadagni né direttamente né
indirettamente.

Laurea Triennale in Informatica


Pagina 18
9 ProS-Bot: un tutor virtuale per la didattica in
blended-learning
Data l’enorme utilità di questi strumenti si è pensato di creare un bot che risponda alle
domande relative al corso di Probabilità e Statistica dell’Università degli Studi di
Milano-Bicocca nell’anno 2018.

Figura 9.1: Esempio di interazione con @probagent_bot.

9.1 Progettazione dell’applicazione


Il primo passo verso lo sviluppo di ProS-Bot è stato quello di raccogliere più materiale
possibile confrontando tutte le soluzioni presenti sul mercato che potessero soddisfare le
nostre esigenze. Una volta portata a termine la ricerca è stato presentato un resoconto
finale tramite un seminario interno svolto nel laboratorio MAD-Lab dell’Università di
Milano-Bicocca. Sebbene l’intervento non sia disponibile online, il capitolo 8 di
quest’elaborato riassume il confronto fra i prodotti esaminati.

La scelta della PaaS su cui basare questo servizio è ricaduta su Dialogflow: essa infatti
permette di configurare e rendere operativo un bot sui servizi di messaggistica più

Laurea Triennale in Informatica


Pagina 19
utilizzati dagli studenti con il minimo sforzo e senza richiedere particolari capacità di
programmazione. Inoltre non ha un limite di queries giornaliere e non richiede il
pagamento di nessuna somma per usufruire delle sue APIs.

Come piattaforme target si sono scelte Telegram e un’interfaccia web che potrà poi
essere integrata nell’e-learning del corso (il quale si basa su Moodle e permette
l’inserimento di iframe all’interno delle pagine).

Nel primo caso è stato poi necessario riscrivere il componente che si occupa di fare da
bridge fra Telegram e Dialogflow, in quanto l’Integration di default non supportava le
inline queries. Esso è stato poi rilasciato sotto una licenza open source ed è liberamente
disponibile all’indirizzo https://github.com/Davide95/telegram-integration-dialogflow.
Per questo progetto è stato utilizzato il linguaggio Python in quanto è ampiamente
diffuso (secondo il TIOBE Index è il quarto linguaggio per popolarità a gennaio 2018),
permette una facile prototipazione del prodotto da sviluppare ed è relativamente
semplice da imparare ed utilizzare. In questo modo si è cercato di attirare un bacino di
sviluppatori il più ampio possibile. Per uniformare e rendere più agevole future pull
request è stato inoltre inserito il vincolo di produrre del codice che segua PEP 8.

Infine è stato installato su una macchina collegata in rete all’interno dell’università,


nella quale è stato precedentemente installato Ubuntu 16.04 LTS, schedulati gli
aggiornamenti automatici giornalieri con annesso riavvio della macchina nel caso in cui
sia necessario e abilitato l’accesso tramite SSH. Il software che è stato realizzato è stato
poi configurato per essere avviato all’accensione della macchina, creando un’unità
systemd. A seguito di tentativi di intrusione passando per SSH, si è inoltre installato
Fail2ban.

Per la presentazione del bot agli studenti è stato prodotto un video introduttivo sul suo
utilizzo disponibile su YouTube all’indirizzo https://www.youtube.com/watch?
v=4rSv6zgRSgM.

Al momento della stesura dell’elaborato esso è composto da 28 Intents ed è stato


addestrato con 490 domande.

Laurea Triennale in Informatica


Pagina 20
9.2 Testing
Realizzata una prima versione del prodotto è stata poi necessaria una seconda fase nella
quale il bot è stato testato da vecchi studenti del corso, invitandoli a partecipare al
progetto e a fornire dei feedback. In particolare veniva chiesto, al termine del testing, di
valutare quanto il bot fosse preciso, quante e quali erano le domande a cui non era stato
in grado di rispondere o a cui aveva risposto in maniera errata. Le informazioni richieste
dall’utente e le relative risposte sono state poi analizzate tramite Dialogflow per
risolvere eventuali errori e aggiungere nuovi Intents. In questo modo è stato possibile
correggere eventuali anomalie prima che il prodotto venisse utilizzato concretamente in
produzione.

Per gli interessati a provare con mano il risultato finale, è possibile cercare fra gli utenti
di Telegram il nickname @probagent_bot ed avviare una conversazione.

9.3 Sviluppi futuri


Al termine dell’erogazione del corso per il quale questo servizio è stato implementato
sarà necessario valutare la sua effettiva efficacia.

Dei parametri per i quali è possibile fare una prima analisi sono:

• L’aumento o la diminuzione delle domande da parte degli studenti sul forum del
corso e via mail rispetto agli anni precedenti;

• Il numero di domande sottoposte al bot a partire dall’inizio del corso;

• Il numero di domande a cui il bot non è stato in grado di rispondere;

In base al risultato ottenuto verrà considerata l’implementazione di miglioramenti al


prodotto finale, alcuni dei quali sono qui riportati.

Aggiunta nuove domande e rimozione di informazioni datate

Con il passare del tempo il corso di Probabilità e Statistica cambierà ipoteticamente


modalità di esame, regole e orari. È quindi necessario aggiornare costantemente le
informazioni all’interno di Dialogflow ogni volta che ne sorga la necessità.

Laurea Triennale in Informatica


Pagina 21
Questa fase sarà resa possibile raccogliendo più feedback possibili tramite mail e
durante le lezioni. Grazie agli strumenti previsti dalla piattaforma verranno inoltre
analizzate le domande degli studenti e le relative risposte in modo da migliorarlo
sempre più e, al termine del corso, verificare la sua efficacia e utilità per gli anni a
venire.

Progressive Web App

Nel caso in cui si osservi che gli studenti abbiano utilizzato principalmente
l’applicazione web tramite e-learning, si potrebbe prendere in considerazione lo
sviluppo di una PWA che funzioni anche offline grazie ai Service Workers, con
un’interfaccia responsive e mobile-first, esposta tramite HTTPS ed eventualmente
installabile grazie alle nuove feature emergenti all’interno dei sistemi operativi pensati
per il mobile.

Interazione tramite comandi vocali

Permettere all’utente di interagire con il bot ponendo domande e ricevendo le risposte


tramite messaggi vocali permetterà di fruire al servizio in maniera migliore anche a chi
soffre di disturbi o malattie legate alla difficoltà nel leggere o nello scrivere. Pensiamo,
ad esempio, ai non vedenti.

Un passo verso questa direzione è stato già fatto dal team di Dialogflow con il rilascio
delle API V2[91] (ancora in fase beta in data 3/03/2018), che però non sono ancora
utilizzate dalle Integrations presenti.

Un’alternativa potrebbe essere quella di espandere il progetto “telegram-integration-


dialogflow” presentato nel capitolo 9.1 supportando anche questa feature. Anticipando
la sezione “Abbandonare Dialogflow” nel quale si sottolinea l’importanza di adottare
soluzioni open source, un’idea potrebbe essere quella di integrare DeepSpeech di
Mozilla (https://github.com/mozilla/DeepSpeech), il quale aggiungerebbe la
funzionalità di Speech-To-Text.

Laurea Triennale in Informatica


Pagina 22
Automatizzare la configurazione e l’installazione del software

Pros-bot è stato pensato come un progetto pilota. Nel caso dovesse rivelarsi un successo
esso potrebbe essere utilizzato come base di partenza per lo sviluppo di altri chatbot
relativi ad altri corsi.

Il problema che però sorgerebbe è quello di rendere la procedura scalabile: ad ora, per
esempio, non esiste nessun modo di automatizzare la configurazione della macchina su
cui verrà installato “telegram-integration-dialogflow”.

Una possibile soluzione è quella di appoggiarsi a software open-source come Ansible, il


quale si occupa di risolvere il problema sopra citato. Appoggiarsi ad una soluzione
simile permette inoltre di poter cambiare macchina nella quale è stato precedentemente
installato senza dover effettuare delle sessioni di testing per eliminare l’errore umano
che eventualmente può presentarsi.

Containerizzazione

I container sono una tecnologia relativamente nuova che ha rivoluzionato il mondo della
virtualizzazione: essi permettono di avere un contesto di esecuzione isolato dal resto del
sistema.

Containerizzare “telegram-integration-dialogflow” avrebbe numerosi vantaggi, tra i


quali:

• Riprendendo l’esigenza illustrata nella proposta precedente, è possibile


semplificare il deployment pacchettizzando l’applicazione in un singolo
componente;

• Viene meno la necessità di gestire conflitti fra versioni diverse di librerie


utilizzate da più applicazioni scritte in Python sulla stessa macchina;

• Aumento della portabilità in quanto il risultato finale girerà sulla propria


macchina locale esattamente come sulla macchina di testing o in produzione;

Analizzando le esigenze di questo prodotto si può arrivare alla conclusione che la scelta
migliore potrebbe rivelarsi quella di appoggiarsi alla piattaforma Docker. Altre soluzioni
meno efficaci potrebbero essere l’utilizzo di Virtualenv, Snapcraft o Flatpak.

Laurea Triennale in Informatica


Pagina 23
Abbandonare Dialogflow

Adottare soluzioni open source, slegandosi da Dialogflow che offre una soluzione
proprietaria, può sul lungo periodo rivelarsi una scelta efficace. Avere il pieno controllo
del software è necessario se non si vogliono dei vendor lock-in.

Estenderlo a nuove piattaforme di messaggistica

La scelta iniziale è ricaduta su Telegram poiché gli utenti fruitori del corso utilizzavano
già quest’applicazione per comunicare fra di loro: ad esempio erano nati
spontaneamente nel corso degli anni gruppi per gli studenti iscritti a quest’università.

Se vi fosse necessità ed interesse di estendere questo servizio ad altri corsi e/o università
bisognerà considerare di utilizzare nuove applicazioni di messaggistica valutando caso
per caso la soluzione migliore in base al target di utenza.

Laurea Triennale in Informatica


Pagina 24
10 Bibliografia
[11] Wikipedia. ELIZA.
https://it.wikipedia.org/wiki/ELIZA, 2018.

[12] William Vorhies. Under the Hood With Chatbots.


https://www.datasciencecentral.com/profiles/blogs/under-the-hood-with-
chatbots, 2017.

[13] Christopher Manning. Bio.


https://nlp.stanford.edu/manning/, 2018.

[14] Hillary Lipko. Meet Jill Watson: Georgia Tech's first AI teaching assistant.
https://pe.gatech.edu/blog/meet-jill-watson-georgia-techs-first-ai-teaching-
assistant, 2016.

[21] MindBowsers. .Global Chatbot Trends Report – 2017.


http://mindbowser.com/chatbot-market-survey-2017/, 2017.

[22] Oracle. Chatbots 101.


http://www.oracle.com/us/technologies/mobile/chatbot-infographic-
3672253.pdf, 2017.

[23] Blaise Zerega. AI Weekly: Google shifts from mobile-first to AI-first world.
https://venturebeat.com/2017/05/18/ai-weekly-google-shifts-from-mobile-first-
to-ai-first-world/, 2017.
[24] BBC. Facebook buys speech recognition firm Wit.ai.
http://www.bbc.co.uk/news/technology-30697254, 2015.

[25] Facebook. F8 2017 Keynote.


https://developers.facebook.com/videos/f8-2017/f8-2017-keynote/, 2017.

[31] Wikipedia. Interfaccia grafica.


https://it.wikipedia.org/wiki/Interfaccia_grafica, 2018.

[32] Wikipedia. Touch screen.


https://it.wikipedia.org/wiki/Touch_screen, 2018.

Laurea Triennale in Informatica


Pagina 25
[33] Wikipedia. Interazione uomo-computer.
https://it.wikipedia.org/wiki/Interazione_uomo-computer, 2018.

[34] Tomaž Štolfa. The Future of Conversational UI Belongs to Hybrid Interfaces.


https://medium.com/the-layer/the-future-of-conversational-ui-belongs-to-hybrid-
interfaces-8a228de0bdb5, 2016.

[41] Jinny Seo. 19 Best UX Practices for Building Chatbots.


https://chatbotsmagazine.com/19-best-practices-for-building-chatbots-
3c46274501b2, 2017.

[42] Ish Jindal. Building chatbots: why message lenght matters.


https://www.invisionapp.com/blog/chatbots-message-length/, 2018.

[51] William Vorhies. Beginners Guide to Chatbots.


https://www.datasciencecentral.com/profiles/blogs/beginners-guide-to-chatbots,
2017.

[52] Wikipedia. Apprendimento automatico.


https://it.wikipedia.org/wiki/Apprendimento_automatico, 2018.

[71] Wikipedia. Reddito di base.


https://it.wikipedia.org/wiki/Reddito_di_base, 2018.

[72] Open Source Inititiative.


MIT license. https://opensource.org/licenses/MIT, 2018.

[73] Creative commons. Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).


https://creativecommons.org/licenses/by-sa/4.0/, 2018.

[91] Dialogflow. Introducing two beta releases: Dialogflow API V2 and new
Enterprise Edition.
https://blog.dialogflow.com/post/dialogflow-api-v2-and-enterprise-edition/,
2017.

Laurea Triennale in Informatica


Pagina 26
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo
stesso modo 4.0 Internazionale.

Laurea Triennale in Informatica


Pagina 27

Valuta