Académique Documents
Professionnel Documents
Culture Documents
Scuola di Scienze
Dipartiento di Inforiatca, Sisteiistca e Coiunicazione
Corso di laurea in Inforiatca
Davide Riva
Matricola 807149
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.
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.
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].
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.
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).
Figura 3.2: Lista applicazioni più popolari nel Play Store aggiornata al 15/01/2018.
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.
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).
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.
• 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à;
• 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”;
Reddito di base
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.
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.
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.
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
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.
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.
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ù
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.
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.
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.
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;
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.
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.
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”.
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.
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.
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.
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.
[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.
[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.
[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.