Università degli Studi di Padova - SIAGAS
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Università degli Studi di Padova Dipartimento di Matematica "Tullio Levi-Civita" Corso di Laurea in Informatica Un chatbot a supporto di un sistema di e-commerce Relazione finale di stage Relatore Prof. Tullio Vardanega Laureando Enrico Canova Anno Accademico 2017-2018
Enrico Canova: Un chatbot a supporto di un sistema di e-commerce, Relazione finale di stage, c Febbraio 2018.
Sommario Premessa Il presente documento descrive il lavoro svolto durante il periodo di stage dal laureando Enrico Canova, presso l’azienda Nextep srl. Lo stage è stato svolto dal 10 Ottobre 2017 al 5 Dicembre 2017 presso la sede dell’a- zienda a Cittadella (PD). L’obiettivo dello stage è stato lo sviluppo di un chatbot per l’assistenza e la semplifica- zione dalla vendita di un sistema e-commerce. iii
Indice 1 L’azienda 1 1.1 Profilo aziendale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Prodotti e servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Metodologia e strumenti di lavoro . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 Strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Rapporto con l’innovazione . . . . . . . . . . . . . . . . . . . . . . . . 7 2 Il progetto 9 2.1 Interesse aziendale negli stage . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Interesse aziendale nello stage . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.1 Introduzione al problema . . . . . . . . . . . . . . . . . . . . . 11 2.3 Obiettivi e vincoli di progetto . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.1 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.2 Vincoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Interesse personale nello stage . . . . . . . . . . . . . . . . . . . . . . . 17 3 Lo stage 19 3.1 Pianificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Studio dei componenti e delle tecnologie . . . . . . . . . . . . . . . . . 20 3.2.1 Chatbot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.2 Watson Conversation . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.3 Problema dei titoli . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.4 Messenger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.5 Botkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.6 Node.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.7 Ambiente di lavoro . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Analisi dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3.1 Casi d’uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.4.1 Architettura componenti . . . . . . . . . . . . . . . . . . . . . . 29 3.4.2 Flusso logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5 Verifica e validazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.1 Analisi statica . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.2 Analisi dinamica . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6 Risultato finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6.1 Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.6.2 Risultato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 v
vi INDICE 4 Valutazione retrospettiva 35 4.1 Conseguimento degli obiettivi prefissati . . . . . . . . . . . . . . . . . 35 4.2 Conoscenze preliminari . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3 Bilancio formativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Capitolo 1 L’azienda In questo capitolo presento l’azienda ospitante, descrivendo quali prodotti e servizi offre, come è organizzata, come lavora e che rapporto ha con l’innovazione. 1.1 Profilo aziendale Figura 1.1: Logo di Nextep: immagine tratta dal sito dell’azienda Nextep è una società fondata nel 2000 da Marco De Toni e Mirco Soffia, con sede attuale a Cittadella (PD). Opera nel settore informatico e si occupa di servizi web, web marketing e di infra- strutture per gestire le informazioni delle aziende, e più in generale ha come obiettivo quello di migliorare l’efficacia delle strategie di comunicazione web, delle aziende, dedicando particolare attenzione alla reputazione e all’identità digitale. Nextep fa parte del gruppo Allos, insieme ad Allos Italia, Allos Sud Africa, Allos USA e Zero12. Allos si occupa di progetti e tecnologie per lo sviluppo del capitale umano, mentre Zero12 si occupa dello sviluppo di soluzioni mobile e cloud based. Il gruppo Allos è stato recentemente acquisito da EOH Holdings Ltd, una grande società sudafricana. Nextep ha un organico di circa venti persone, tra dipendenti e collaboratori, con varie competenze: grafici, sviluppatori, esperti di web marketing e tecnici. Sono presenti tre gruppi principali di lavoro: quello di sviluppo, quello creativo e quello del supporto 1
2 CAPITOLO 1. L’AZIENDA tecnico. In Nextep c’è un ambiente di lavoro giovane, dinamico ma allo stesso tempo pro- fessionale, ed è incentivata la collaborazione e la condivisione di conoscenze e idee tra le persone. Tutto questo favorisce sia la crescita individuale, dal punto di vista professionale, che la crescita e l’amalgamazione dei vari gruppi di lavoro. 1.2 Prodotti e servizi Nextep lavora per clienti di diversa tipologia e conformazione, dalla piccola impresa privata alla multinazionale che si sta espandendo ulteriormente, e con questo offre svariati prodotti e servizi in base alle esigenze e alle opportunità del mercato e proprie. Prodotti La maggior parte dei progetti riguarda la realizzazione di portali e siti web, ma vengono sviluppati anche diversi altri prodotti, tra cui soluzioni e-commerce e applicazioni mobile, sviluppo di progetti di virtualizzazione, e storage networking. Tutti i prodotti hanno alcune caratteristiche comuni, cioè di essere personalizzati, innovativi, accessibili e improntati nel, e nelle esigenze del, cliente; spesso vengono introdotte nuove soluzioni di vario genere. Figura 1.2: Esempio di portale web realizzato dall’azienda: immagine di Nextep Servizi I servizi offerti riguardano principalmente la gestione delle informazioni digitali, della sicurezza e della disponibilità dei dati e delle applicazioni: ∗ Consulenza e formazione di web marketing, social marketing e web analytics; ∗ Gestione delle infrastrutture informatiche aziendali;
1.2. PRODOTTI E SERVIZI 3 ∗ Fornitura, rivendita, installazione, configurazione e assistenza di servizi esterni (server virtuali, servizi di monitoring, servizi cloud, etc); ∗ Servizio clienti e attività di supporto tecnico di infrastrutture ICT e di siti web. Figura 1.3: Esempio di infrastruttura informatica gestita dall’azienda: immagine di Nextep
4 CAPITOLO 1. L’AZIENDA 1.3 Metodologia e strumenti di lavoro Pur avendo lavorato al progetto autonomamente, e quindi non direttamente insieme al personale, ho potuto constatare alcuni metodi e strumenti di lavoro utilizzati dall’azienda. 1.3.1 Metodologia Il team segue una metodologia di sviluppo agile: il framework Scrum. Scrum è un framework che ha lo scopo di affrontare complessi problemi adattivi e collaborativi, per realizzare prodotti di alto valore in modo sia produttivo che creativo. Questo approccio permette di essere flessibili di fronte a imprevisti e a cambiamenti nei requisiti, molto frequenti all’interno di progetti innovativi e personalizzati che l’azienda offre. Scrum Scrum è:1 ∗ Leggero ∗ Semplice da capire ∗ Difficile da padroneggiare Figura 1.4: Framework Scrum: immagine tratta da scrum.org Le caratteristiche principali del framework sono: ∗ Il team è formato da: 1 The Scrum Guide; Ken Schwaber e Jeff Sutherland; http://www.scrumguides.org /docs/scrumguide/v2017 2017.
1.3. METODOLOGIA E STRUMENTI DI LAVORO 5 – Product owner: responsabile della gestione dei product backlog e della volontà degli stakeholder; – Scrum master: responsabile del team, si assicura che le regole di Scrum vengano applicate e che il team sia il più produttivo possibile; – Development team: team con competenze tecniche, che lavora insieme per completare l’incremento di uno sprint. ∗ Artefatti dello Scrum: – Product Backlog: lista ordinata, in base alle priorità, di tutti i requisiti che il prodotto deve soddisfare; – Sprint Backlog: lista dei compiti, presi dal Product Backlog, che il team di sviluppo deve completare nello sprint corrente; – Increment: somma di tutti i requisiti del Product Backlog che sono stati completati. ∗ Organizzazione del lavoro: il lavoro viene suddiviso in sprint, l’unità di tempo dello scrum, con durata e obiettivi prefissati. In uno sprint, che deve avere una durata inferiore al mese, si deve realizzare un incremento del prodotto utilizzabile e potenzialmente rilasciabile; ∗ Riunioni: ce ne sono di quattro tipi (sprint planning meeting, daily scrum, sprint review meeting, sprint retrospective), con diversa durata, e hanno l’obiettivo di organizzare il lavoro, allineare il team e di retrospezione, per cercare di migliorare il processo di sviluppo ad ogni sprint. Applicazione In azienda, ogni giorno è previsto uno stand-up meeting all’interno dei vari team di lavoro, per allineare ogni componente sulla situazione corrente e su come procedere. Inoltre, a metà giornata avviene un meeting tra tutto l’organico in cui i diversi team espongono le proprie questioni e si confrontano su quelle che hanno in comune. Durante il mio tirocinio ho potuto assistere anche a qualche confronto costruittivo tra il team di sviluppo e lo scrum master, segno di buona sintonia. 1.3.2 Strumenti Per lo sviluppo e la gestione dei progetti, l’azienda si avvale di alcuni strumenti usati comunemente dai vari team, mentre in altri casi, a meno di vincoli contrattuali esterni, lascia libertà di scelta ai singoli componenti (linguaggi di programmazione, software e framework di sviluppo, sistemi operativi). Sistemi operativi Come già detto, non ci sono restrizioni sulla scelta del sistema operativo che preferisce, di fatto la maggior parte dei dipendenti utilizza macOS, per via dell’usabilità e della praticità nello sviluppo grafico.
6 CAPITOLO 1. L’AZIENDA Sviluppo web Per lo sviluppo web il team di sviluppo si avvale principalmente di due CMS (Content management system) con il quale può semplificarne la creazione e gestione: ∗ Drupal, una piattaforma software, flessibile e scalabile, per la creazione e pub- blicazione di siti web, e per la condivisione di contenuti in più linguaggi su dispositivi diversi; ∗ WordPress, anch’esso una piattaforma software, che consente la creazione e distribuzione di siti web facilmente gestibili ed aggiornabili in maniera dinamica. Per lo sviluppo condiviso sono inoltre utilizzati: ∗ Versionamento Viene impiegato Git, un software di controllo di versione distribuito, free e open source, per gestire piccoli e grandi progetti con velocità ed efficienza. Figura 1.5: Git: immagine tratta da git-scm.com ∗ Ticketing Viene adoperato Jira, un software proprietario per l’issue tracking, bug tracking e con funzioni di gestione del progetto. Figura 1.6: Jira: tratta da atlassian.com
1.4. RAPPORTO CON L’INNOVAZIONE 7 Supporto Per il supporto tecnico con i clienti, l’azienda utilizza il software di ticketing Zendesk, grazie al quale riesce a centralizzare i canali di comunicazione principali e gestire in modo più efficace e semplice l’assistenza diretta sui prodotti e servizi che offre. Figura 1.7: Zendesk: immagine tratta da zendesk.it 1.4 Rapporto con l’innovazione Filosofia Già dal nome, next-step, si capisce qual è il rapporto che ha l’azienda con l’innovazione, e cioè costitutivo. Essendo un’azienda informatica e prettamente legata al mondo web, è costantemente a contatto con diverse altre realtà, tecnologie e idee. Ma le idee vengono coltivate prima di tutto dall’interno, cercando di tenere un clima lavorativo di condivisione, di libertà: tra i dipendenti e i responsabili c’è un rapporto fatto di dialogo e confronto, non verticale; e c’è un ambiente aperto e pulito: nel 2001 ha vinto il premio Best Office Award, che evidenzia l’impegno e l’attenzione verso i lavoratori e le idee. Rete aziendale L’innovazione avviene anche grazie all’ampia rete di contatti di aziende con cui lavora, e dalla loro diversità: dalle piccole alle grandi realtà locali e non. Lavorando quindi per, e insieme a, svariate realtà, viene spesso a contatto con nuove esigenze e idee. Nextep deve essere sempre al passo con le tecnologie e le tendenze del momento, ma cerca inoltre di coltivare nuovi progetti che le permettano di provare e sperimentare. Ciò avviene anche grazie al rapporto diretto che ha con le altre aziende del gruppo Allos.
8 CAPITOLO 1. L’AZIENDA Progetti interni Durante il mio tirocinio ho potuto notare la presenza di più progetti innovativi che l’azienda porta avanti, in diversi ambiti, parallelamente ai progetti e lavori quotidiani; e di molte altre idee che ha in cantire, in aggiunta del progetto stesso del mio stage.
Capitolo 2 Il progetto In questo capitolo presento il progetto di stage. Inizio descrivendo il rapporto che l’azienda ha con gli stage; dell’interesse e delle aspettative riposte in questo stage e dei possibili sviluppi. Illustrando successivamente il tema del progetto. Faccio una panoramica di quali obiettivi e vincoli aveva il proget- to. Espongo infine quali sono stati i motivi per cui io ho scelto questa proposta di stage. 2.1 Interesse aziendale negli stage L’azienda, come detto nel primo capitolo, ripone molta attenzione verso l’innovazione, e in quest’ottica sfrutta gli stage per lavorare a nuove idee parallelamente ai propri progetti. Questo perchè un progetto, come quello di questo stage, per essere affrontato richiede un impegno considerevole, e in un ottica di un’azienda come la Nextep, rischierebbe di rallentare o fermare qualche altro progetto di primaria importanza. 2.2 Interesse aziendale nello stage L’intento primario è quello di realizzare un chatbot, per sperimentarlo in un caso d’uso concreto e vederne la fattibilità, le difficoltà e i punti di forza. Il caso d’uso in questione prevedeva che i dati da utilizzare (i dati relativi agli spettacoli cinematografici) fossero di un cliente della Nextep, e quindi lo stage rappresentava anche l’opportunità di concretizzarsi in un progetto vero e proprio per un cliente finale. Questo progetto può diventare interessante anche considerando i chatbot da un punto di vista dell’andamento nel mercato: molte previsioni dicono che il mercato dei chatbot crescerà sensibilmente nei prossimi anni, così com’era accaduto nei primi anni duemila ai siti web. 9
10 CAPITOLO 2. IL PROGETTO Figura 2.1: Previsione della crescita dei chatbot a confronto con quella avuta dai siti web: immagine tratta da chatbotsmagazine.com Figura 2.2: Confronto della crescita tra chatbot messenger e app nell’Apple Store nel 2016: immagine tratta da techcrunch.com Questo stage rappresentava però anche l’opportunità di studiare diverse tecnolo- gie innovative dietro a questo progetto, e cioè l’intelligenza artificiale. L’utilizzo di intelligenza artificiale viene adoperata, in questo progetto, tramite framework esterni che ne semplificano e l’utilizzo. Queste tecnologie, da sperimentare, possono risultare applicabili in molti altri contesti e progetti, e per questo l’andamento di questo stage può aiutare a fare chiarezza.
2.2. INTERESSE AZIENDALE NELLO STAGE 11 2.2.1 Introduzione al problema Chatbot Figura 2.3: Esempi di conversazioni con un chatbot Messenger Chatbot deriva dall’unione di due termini: chat e bot. Chat sta per conversazione, mentre bot è la riduzione di robot e sta a indicare l’auto- mazione di un compito. Chatbot è quindi un servizio software in grado di intrattenere in modo automatico una conversazione, testuale o vocale, con un utente. I chatbot, quelli più complessi, utilizzano l’intelligenza artificiale per comprendere l’intento dell’utente e rispondere, nel modo più opportuno, alle richieste in un dato contesto. Essi si sono evoluti nel tempo e oggi vanno oltre la pura conversazione, permettendo all’utente di eseguire diversi compiti, dai più semplici ai più complessi (per esempio i sistemi vocali nelle automobili o in altri dispositivi dell’Internet of Things), sempre attraverso conversazione testuale o vocale (opzionalmente con l’ausilio di pulsanti).
12 CAPITOLO 2. IL PROGETTO Figura 2.4: Struttura base: immagine tratta da upwork.com Un chatbot è essenzialmente composto da : 1. un’interfaccia, spesso grafica, dove si inserisce in input una richiesta e si riceve in risposta l’output corrispondente; 2. un sistema di riconoscimento del linguaggio naturale (NLP), che sfrutta l’in- telligenza artificiale per capire al meglio l’intento e il contenuto dell’input dell’utente; 3. un sistema che elabora quanto compreso dal NLP e genera una risposta da ritornare all’utente o che svolge un compito richiesto dall’utente. Figura 2.5: Esempi di chatbot: immagine tratta da chatbotsmagazine.com Alcuni esempi di chatbot: ∗ Wheater bot, per ottenere le previsioni meteo di una città; ∗ Flights bot, per cercare voli; ∗ News bot, per cercare e ricevere le ultime notizie; ∗ E-commerce bot, per fare acquisti; ∗ Finance bot, per ricevere le novità finanziarie; ∗ Support chatbots, per ricevere supporto in uno specifico dominio.
2.2. INTERESSE AZIENDALE NELLO STAGE 13 Qui elenco alcuni dei vantaggi e degli svantaggi di questa tecnologia, che è ritenuta da molti il prossimo mezzo di interazione tra clienti e aziende, e che andrà a sostituire le app mobile, che hanno a loro volta sostituito i siti web(non rimpiazzato). Vantaggi 1. Semplicità, si ottiene solo quello che si chiede; 2. Velocità, in pochi passaggi (messaggi vocali o testuali o pulsanti) è possibile ottenere l’informazione cercata o eseguire un’operazione (fare un acquisto, preno- tare un tavolo, cercare gli spettacoli di un film, cambiare la luminosità di una lampadina, etc); 3. Immediatezza, non c’è bisogno di imparare una nuova interfaccia per ogni app/sito che si utilizza; 4. Personalizzazione, il bot può rispondere in modo personalizzato in base a chi scrive (in base alle informazioni che conosce dell’utente) e in base a come l’utente scrive (in base per esempio allo stato emotivo); 5. Portabilità, un chatbot può essere integrato in svariati dispositivi e ambiti, non solo app e siti web (automobili, IoT,..); 6. Le app di messaggistica istantanea sono le più utilizzate, e i chatbot possono sfruttare queste come interfaccia; 7. Non richiedono molta banda di rete per essere utilizzati (essendo principalmente testo); 8. Possibilità di ricevere notifiche. Svantaggi 1. Ancora poco diffusi, l’utente medio spesso non sa come utilizzarli (efficacemente); 2. Complessità di sviluppo di chatbot ben fatti; 3. Non possono comprire tutti gli scenari possibili di interazione; 4. Necessitano di interrogazioni il più preciso possibile, e difficilmente più alla volta; 5. Se non interpretano correttamente l’input rispondono erratamente; 6. Non è facile gestire il contesto della conversazione; 7. Situazioni di stallo, può capitare che l’utente non riesca ad eseguire quanto desiderato e permesso dal bot. Lo svantaggio principale è che si tratta ancora di una nuova tecnologia, nel senso di poco diffusa, e questo è un limite sia per chi sviluppa sia per gli utenti. L’utente medio (meno esperto), che è nuovo con questa tecnologia, potrebbe rimanere spiazzato se il chatbot non è ben progettato e non evidenzia dei paletti; l’utente infatti d’inpulso, se non guidato dallo sviluppatore, potrebbe cercare di intera- gire con il bot nello stesso modo che farebbe con una persona, e non sarebbe quindi
14 CAPITOLO 2. IL PROGETTO difficile arrivare ad una situazione di stallo. Quindi l’utente, dopo aver ricevuto in risposta diversi messaggi non corrispondenti alle aspettative si scoraggia e lascia il bot. Bisognerebbe allora che ogni bot evidenziasse i paletti, i propri limiti, e cioè che espli- citasse il fatto di essere un bot e non una persona (non sempre scontato), esplicitasse il dominio del contesto(sport, news, meteo, etc) e che desse un’idea delle funzionalità conosciute e avere un atteggiamento proattivo verso l’utente (consigliando). Sta quindi, spesso, facendo fatica a diffondersi da una parte, dal fatto che l’utente medio non conosce e non sa utilizzare questa tecnologia, e da un’altra parte dal fatto che se il bot non è ben implementato rischia che l’utente tenti inutilmente di instaurare una conversazione normale(persona-persona) o che comunque prima o poi finisca in una situazione di stallo, e che quindi, dopo il fallimento, decida di abbandonare la tecnologia e di ritenerla non valida. Figura 2.6: Le app di messaggistica sono più utilizzate dei social network tradizionali: immagine tratta da chatbotsmagazine.com
2.3. OBIETTIVI E VINCOLI DI PROGETTO 15 Figura 2.7: Confronto tra sito web e chatbot: immagine a sinistra tratta da ryanair.com, l’immagine a destra è uno screenshot del bot messenger di Skyscanner 2.3 Obiettivi e vincoli di progetto 2.3.1 Obiettivi Il progetto in questione aveva l’obiettivo di realizzare un chatbot che permettesse, tramite conversazione in linguaggio naturale (e opzionalmente l’ausilio di pulsanti), di ricercare e prenotare spettacoli cinematografici. La ricerca doveva portare a trovare la tripla di uno spettacolo in programmazione in un cinema e indirizzare quindi alla relativa pagina di prenotazione nel sito web del cliente. Tutto ciò utilizzando come interfaccia quella di un servizio messaggistica istantanea (es. messenger, telegram, etc), utilizzando il framework Watson di IBM per la parte di NLP e sempre i servizi di IBM per ospitare il bot. La pianificazione prevista dal Piano di Lavoro prevedeva una prima parte di studio e analisi dei servizi e degli strumenti per lo sviluppo del bot, una seconda parte realiz- zativa e un’ultima parte in cui studiare e analizzare ulteriori servizi e possibilità per estendere il bot. Gli obiettivi dello stage sono stati suddivisi in tre tipologie, per grado di rilevanza. 1. Obbligatori, obiettivi irrinunciabili e non negoziabili: (a) Realizzazione di un bot integrato con i servizi Watson di IBM e con i Web Service del cliente; (b) Analisi e prototipazione di un sistema di conversazione automatico in linguaggio naturale. 2. Desiderabili, obiettivi che possono essere omessi ma che rappresentano un valore aggiunto consistente:
16 CAPITOLO 2. IL PROGETTO (a) Realizzazione di una conversazione dinamica, che permetta al bot rispondere all’utente contestualmente, e fornendogli le informazioni contenute nei Web Service, in base alla richiesta effettuata. 3. Opzionali, obiettivi che possono essere contrattati in seguito: (a) Si richiedeva di sperimentare con alcune tecnologie di intelligenza artificiale di Watson. 2.3.2 Vincoli Vincoli temporali Lo stage prevedeva una durata massima di 320 ore di lavoro, suddivise in circa 8 settimane. Vincoli tecnologici Questo progetto richiedeva di rispettare alcuni vincoli tecnologici minimi: 1. L’utilizzo del framework Watson di IBM, per la parte di intelligenza artificiale; 2. Caricare il server del bot nell’account IBM aziendale; 3. L’utilizzo del linguaggio di programmazione Javascript.
2.4. INTERESSE PERSONALE NELLO STAGE 17 2.4 Interesse personale nello stage Avendo partecipato all’evento StageIT, organizzato dal corso di laurea in collaborazione con confindustria Padova, ho potuto incontrare molte aziende, e ho quindi avuto a disposizione molte proposte di stage da valutare. Ho cercato allora di sfruttare quest’occasione al meglio, ricercando tra le proposte quella che mi sembrasse sia più interessante, sia che mi desse la possibilità di fare esperienza ed imparare, e che ci fosse la possibilità di assunzione. All’evento ho potuto, tra le altre, fare la conoscenza della Nextep, che mi ha fatto una buona impressione da subito. Figura 2.8: Locandina di StageIT: immagine tratta da informatica.math.unipd.it Dopo un’attenta ricerca, ho deciso di scegliere questo stage ritenendolo il più interessante e vicino alle mie aspettative; qui sotto vado a elencare nello specifico i motivi della scelta. 1. Ambito di stage, l’ho trovato molto interessante, si richiedeva di lavorare con l’intelligenza artificiale; avevo avuto modo di capire, dai racconti e dai colloqui, che l’azienda era giovane e dinamica, e questo era qualcosa che mi intrigava; c’erano possibilità di assunzione nel caso di buon esito dell’esperienza. 2. Ambiente (avevo presente anche zero12) giovane e dinamico, dal primo colloquio, non ho avuto dubbi sulla scelta 3. La natura innovativa del progetto, non è una tecnologia nuova, ma è molto poco diffusa in italia e nel nostro territorio e richiede impegno su piu fronti, non "basta" sviluppare un applicazione con qualche feature, necessita di un’analisi prima di tutto sulla possibile interazione con l’utente e studiare un buon flusso di conversazione, perchè l’interazione avviene tramite conversazione e l’utente quando scrive non ha presente tutto le possibilità e funzioni presenti; 4. Tecnologie utilizzate: una su tutte Watson di Ibm, e quindi poter lavorare e sperimentare un po’ con l’intelligenza artificiale e l’apprendimento automatico; 5. Opportunità di assunzione, sin da StageIT mi era stato detto che erano in cerca di sviluppatori, e che nel caso di buon esito del tirocinio erano disposti ad assumere.
Capitolo 3 Lo stage In questo capitolo presento il lavoro svolto, analizzando il prodotto sviluppato, e illustrando come ho gestito il progetto nelle varie attività svolte. 3.1 Pianificazione Per raggiungere gli obiettivi del progetto indicati nel Piano di Lavoro, nei limiti previsti, ho deciso in accordo con il tutor aziendale di suddividere il lavoro nel seguente modo: Figura 3.1: Pianificazione del lavoro La prima parte del tirocinio è stata dedicata tutta allo studio: del caso d’uso in esame, dei bot, dei componenti e delle tecnologie da utilizzare. La fase successiva verteva all’analisi del flusso di conversazione (lo schema logico della conversazione del bot), di come funziona, come strutturarla e come realizzarla. Dopo le fasi di studio e analisi si iniziava con la realizzazione della parte cosiddetta statica, e in un secondo momento di quella dinamica. Con conversazione statica intendo quella che si limita a fornire una risposta testuale fissa, non utilizzando i dati forniti dei Web Service dinamicamente. L’ultima parte riguardava gli obiettivi opzionali, che si sono poi evoluti, nel senso che sono subentrati altri obiettivi: è stata effettuata una demo con il cliente; è stata fatta la migrazione del bot interamente all’interno del framework di IBM. Mi sono approciato alla pianificazione prudentemente, perchè l’argomento in questio- ne, i chatbot, mi era sconosciuto e non avevo idea delle problematiche che avrei potuto incontrare; questo approccio si è rivelato d’aiuto, consentendomi di avere poi sufficiente tempo per risolvere i successivi problemi che ho incontrato durante lo sviluppo. 19
20 CAPITOLO 3. LO STAGE 3.2 Studio dei componenti e delle tecnologie 3.2.1 Chatbot Come prima cosa, per poter realizzare un chatbot, ho dovuto studiare cos’è un bot, come funziona e come è composto. Qui elenco alcune buone prassi che andrebbero seguite quando si sviluppa un bot, per renderlo più usabile da parte di un utente meno esperto: ∗ Bisogna iniziare la conversazione con una presentazione, in cui si esplicita al- l’utente che si sta interagendo con un software, il dominio di applicazione e le funzionalità principali, cosicchè l’utente può rendersi conto dei limiti del bot e quindi di cosa può o meno chiedere; ∗ L’utente va guidato: quando non si capisce cosa l’utente vuole dire, bisogna rilanciare la conversazione e non limitarsi al "scusa, non ho capito", cercando di fare delle domande all’utente per capirne meglio l’intento; approccio proattivo. 3.2.2 Watson Conversation Figura 3.2: Logo di Conversation: immagine tratta da ibm.com Per cercare di comprendere l’intento e le entità di una frase di un utente vengono utilizzati software di intelligenza artificiale chiamati Natural Language Processing, cioè di elaborazione del linguaggio naturale. Per il mio progetto è stato deciso di utilizzare il servizio Conversation del framework Watson di IBM. Il tutor aziendale ha preferito il servizio Conversation ad altri (di Google, Facebook, Microsoft, Amazon, etc) perchè lo ha ritenuto sia più semplice da utilizzare, e quindi da sfruttare, ma allo stesso tempo uno dei migliori nel mercato, più completo e facilmente integrabile con molti altri servizi. Flusso di conversazione Conversation cerca di comprendere l’input dell’utente attraverso l’individuazione di due elementi all’interno di una frase: l’intento e le entità. L’intento di una frase è lo scopo, l’obiettivo finale: per esempio ordinare qualcosa, voler accendere o spegnere qualcosa, cercare degli spettacoli o più semplicemente salutare. Le entità sono i soggetti rilevanti di una frase: se per esempio un oggetto, un colore, una data; se l’intento è voler accendere/spegnere qualcosa, l’utente potrebbe indicare anche cosa, come una lampadina o la radio.
3.2. STUDIO DEI COMPONENTI E DELLE TECNOLOGIE 21 Figura 3.3: Esempio di flusso di conversazione: immagine tratta da bluemix.net Per far riconoscere intenti ed entità al servizio, bisogna spiegargli il significato di questi, e questo lo si fa tramite esempi di input che corrispondono ad un intento o entità. Una volta immessi nel sistema intenti ed entità si crea il flusso logico della con- verszione, perchè quello che distingue una conversazione da un semplice Frequently Asked Questions è il contesto. Grazie al contesto è possibile collegare l’input corrente dell’utente con quello precedentemente detto. Se per esempio un utente scrive "rosso", potrei riconoscere che "rosso" corrisponde ad un’entità di tipo colore, ma presa da sola non vuol dire niente. Se allora riesco a contestualizzare quell’input, e quindi so che l’utente vuole specificare il colore di un paio di scarpe, allora "rosso" assume tutt’altro significato. Così, in conversation è possibile creare dei flussi di conversazione con il quale guidare e dare un contesto alle conversazioni. Per una gestione più avanzata del contesto è possibile gestirli tramite JSON. Figura 3.4: Pagina degli intenti del servizio Conversation
22 CAPITOLO 3. LO STAGE Figura 3.5: Pagina delle entità del servizio Conversation Figura 3.6: Pagina in cui gestire i flussi di conversazione del servizio Conversation Limiti I principali limiti del servizio sono relativi al fatto che è un servizio nuovo, è stato presentato nel 2016 anche se sostituisce un altro servizio (Watson Dialog Service), ed è in costante aggiornamento, non è raro che da un giorno all’altro vengano apportate delle modifiche al sistema. La documentazione è poca e spesso incompleta. 3.2.3 Problema dei titoli Nella ricerca di un film tramite un bot, è ragionevole che un utente non conosca, o non si ricordi, il titolo completo del film, ed è quindi ragionevole che riesca a trovare quello che cerca tramite parole chiave. La premessa a questo problema è che l’interazione principale, tra utente e bot, avvenga mediante linguaggio naturale, e non tramite, più o meno lunghi, elenchi di opzioni da selezionare. Un’altra premessa da fare è che tutti i dati relativi alle schede dei film, ai cinema, agli spettacoli erano disponibili tramite Web Service con dati formattati in JSON, con accesso è chiaramente solo in lettura.
3.2. STUDIO DEI COMPONENTI E DELLE TECNOLOGIE 23 Riporto qualche titolo trovato per mostrarne la formattazione: ∗ (3D) THOR RAGNAROK ∗ (NO 3D) THOR RAGNAROK ∗ (NO 3D) STAR WARS - GLI ULTIMI JEDI ∗ V.O. STAR WARS - GLI ULTIMI JEDI ∗ (NO 3D) BLADE RUNNER ∗ LOVING VINCENT ∗ MY LITTLE PONY: IL FILM ∗ LO SCHIACCIANOCI - ROYAL BALLET ∗ IT ∗ AMORI CHE NON SANNO STARE AL MONDO Ragionevolmente, un utente per cercare uno di questi film utilizzerà queste parole chiave: ∗ il film con titolo "(NO 3D) THOR RAGNAROK" è sensato che un utente lo cerchi semplicemente con "thor"; ∗ il film con titolo "(NO 3D) STAR WARS - GLI ULTIMI JEDI" è sensato che un utente lo cerchi semplicemente con "star wars" o "gli ultimi jedi" o "ultimi jedi"; ∗ il film con titolo "MY LITTLE PONY: IL FILM" è sensato che un utente lo cerchi semplicemente con "little pony" o "pony" e assolutamento non con "il film"; ∗ il film con titolo "LOVING VINCENT" è sensato che un utente lo cerchi con "van gogh", che è il soggetto del film. Il servizio conversation riconosce solo precise entità (con al massimo un carattere di differenza) e quindi non può aiutare molto nella risoluzione del problema. Intanto, per aiutarsi nel riconoscesre, è possibile utilizzare alcune operazioni statiche nei titoli, per la pulizia delle stringhe andando quindi a togliere (NO 3D) e (3D) e V.O., e aggiungendo come sinonimi dei titoli: il titolo(senza sottotitolo) o solo il sottotitolo per esempio: ∗ come sinonimi di V.O. STAR WARS - GLI ULTIMI JEDI è possibile mettere: ∗ STAR WARS - GLI ULTIMI JEDI, (senza V.O.) ∗ STAR WARS(solo prima parte) ∗ GLI ULTIMI JEDI
24 CAPITOLO 3. LO STAGE E così si possono fare anche altre operazioni statiche per aiutare il servizio nel ricono- scimento delle entità. Ma prendendo due titoli simbolici come THOR RAGNAROK e LOVING VINCENT, più di utilizzare alcune operazioni statiche non si riesca ad arrivare al risultato sperato. Fatte tutte le premesse al problema, affronto la soluzione adottata. Un altro approccio poteva essere quello di cercare le entità, qualunque, nell’input e confrontarle con i dati dei Web Service, ma come già detto, è un problema ancora irrisolto di intelligenza artificiale quello del riconoscimento delle entità (se per esempio un utente scrive "mostrami i dettagli dell’ultimo film su van gogh a silea" quale entità dovrei confrontare con i Web Service?). L’approccio inverso, e cioè quello di Conversa- tion è quello di cercare le entità che già conosco nell’input, ma come detto i titoli del film non aiutano affatto. Così, dopo una impegnativa ricerca, insieme anche al tutor aziendale, ho deciso di utilizzare un altro servizio di machine learning. Questo servizio (di cui non farò il nome) viene sfruttato nel seguente modo: vengono caricate, e aggiornate periodicamente, le schede dei film (titolo, attori, registi, trama film) associate ognuna ad un film, ho poi istruito il servizio con diversi esempi sul come andare a trattare i dati nelle ricerche, e ho attribuito ad ognuno dei dati delle schede un importanza (per esempio il titolo è più rilevante di un informazione trovata nella trama). Quando un utente cerca un film, il servizio Conversation cerca, come prima, di trovare le entità statiche conosciute (nome completo titoli film, registi, attori), e se non vengono trovate entità, allora utilizzo l’altro servizio che, analizzando l’input, cerca di capire se corrisponde ad un film (mi dice quale o quali e con che rilevanza). In base alla rilevanza trovata decido se il risultato è pertinente o meno. Questo servizio viene quindi chiamato solo d’ausilio a Conversation, quando non trova corrispondeze, e cerca di trovare corrispondenza tra i film conosciuti e l’input da analizzare. 3.2.4 Messenger Figura 3.7: Logo di Messenger: immagine tratta da messenger.com Come interfaccia e sistema di messaggistica del bot, dopo averne esaminato diversi, ho deciso di utilizzare Messenger, principalmente per questi motivi: ∗ Diffusione, Messenger è uno dei software di messaggistica più diffusi al mondo, con oltre 900 milioni di utenti;
3.2. STUDIO DEI COMPONENTI E DELLE TECNOLOGIE 25 ∗ Bot orientati alle aziende, Facebook, l’azienda che possiede Messenger, dal 2016 ha deciso di introdurre e investire molto sui bot e nella propria piattaforma; ∗ Supporto e documentazione. Per utilizzare Messenger ho dovuto creare una pagina Facebook, creare un app Facebook e associare il suo webhook al server del bot. 3.2.5 Botkit Durante lo sviluppo, ho deciso di integrare il bot con il middleware di IBM Conversation che a sua volta estende il botkit. Il botkit è un middleware, sviluppato da Howdy, che permette di semplificare l’implementazione di un bot, di rendere più agevole la gestione e l’estensione delle interfacce, di rendere il bot sia multi-utente che multi-thread. Con questa integrazione ho reso il codice anche più manutenibile e di facile lettura. Figura 3.8: Flusso logico di un chatbot e integrazioni del botkit: immagine tratta da Google immagini 3.2.6 Node.js Come linguaggio di programmazione ho scelto di utilizzare NodeJS, per la semplicità con cui è possibile implementare un server e perchè è uno dei tre linguaggi ufficialmente disponibili per integrare il framework Watson di IBM (insieme a Python e Java). Node.js è una piattaforma di run-time JavaScript per eseguire JavaScript lato server, è basato sul motore JavaScript V8 di Chrome. Node.js usa un modello I/O non bloccante e orientato agli eventi, che lo rende un framework leggero ed efficiente. L’ecosistema dei pacchetti di Node.js è npm, il più grande ecosistema di librerie open source al mondo. Ho utilizzato la versione 8, di Node.js, per il supporto di alcune funzionalità aggiuntive di sincronizzazione dell’esecuzione.
26 CAPITOLO 3. LO STAGE Figura 3.9: Esempio di server minimale in node.js: immagine tratta da Google immagini Express.js Express è un framework per Node.js: è flessibile, leggero, e fornisce una serie di funzioni avanzate per le applicazioni web e per dispositivi mobili. Grazie a Express.js è possibile implementare un server web in pochissime righe. 3.2.7 Ambiente di lavoro Figura 3.10: Logo di Heroku: immagine tratta da Google immagini Durante la fase di studio delle tecnologie ho iniziato a configurare l’ambiente di lavoro, così da imparare e provare i vari componenti ed essere pronto per quando avrei iniziato lo sviluppo. Come ambiente di hosting ho inizialmente scelto Heroku, perchè lo conoscevo già un po’ e l’account base è gratuito. A fine tirocinio mi è stato chiesto di migrare il bot nei server IBM, nell’account aziendale. Strumenti Per la codifica ho utilizzato il software Atom. Atom è un editor di testo e IDE open source sviluppato da GitHub. L’ho utilizzato insieme ad alcuni plugin tra cui vim-mode-plus per poter utilizzare i comandi di vim, e JSHint per l’analisi statica di Javascript.
3.2. STUDIO DEI COMPONENTI E DELLE TECNOLOGIE 27 Figura 3.11: Editor Atom: immagine tratta da atom.io Livello di autonomia Ho svolto il progetto in completa autonomia. Ho avuto la possibilità di confrontarmi quotidianamente, in caso di necessità, con il tutor aziendale per eventuali problemi e scelte incontrate.
28 CAPITOLO 3. LO STAGE 3.3 Analisi dei requisiti Durante la fase preparatoria e durante la prima fase di studio dello stage, ho cercato di capire quali potessero essere i requisiti riguardanti le funzionalità principali. Il requisito principale era quello di arrivare alla tripla e relativa pagina di prenotazione. Dopo aver preso dimestichezza con il servizio Conversation e aver visto come strutturare un flusso di conversazione, visto il tempo stringente, ho deciso con il tutor aziendale di concentrarmi su poche ma funzionali e funzionanti funzionalità. Queste funzionalità avevano quindi lo scopo di rendere il bot sufficientemente completo, cioè da riuscire a raggiungere la pagina di prenotazione di uno spettacolo attraverso il bot, ed esemplificativo di quanto ottenibile. 3.3.1 Casi d’uso Sono state individuate le seguenti funzionalità: ∗ Ricerca film; ∗ Ricerca trailer; ∗ Ricerca Spettacoli. Figura 3.12: Diagramma del caso d’uso principale
3.4. PROGETTAZIONE 29 3.4 Progettazione 3.4.1 Architettura componenti Figura 3.13: Architettura generale del bot Come già anticipato, i componenti che fanno parte e collaborano con il sistema sono: 1. Facebook Messenger, il servizio di messaggistica, dal quale l’utente può scrivere e dove riceve le risposte; 2. Web Service, servizio che fornisce i dati del cliente, disponibili in formato JSON; 3. IBM Bluemix (o Watson), il framework contenenti il servizio di NLP Conversation e l’altro servizio di ausilio; 4. Server del bot, il cuore del bot, dove le informazioni vengono smistate e processate. 3.4.2 Flusso logico ∗ L’inizio dell’interazione avviene da parte dell’utente che, tramite l’interfaccia di Messenger, scrive un messaggio; ∗ Il messaggio, tramite webhook, viene spedito al server; ∗ Il server quando riceve un messaggio lo processa, e in base alla tipologia di messaggio(messaggio di testo normale, messaggio con payload, etc) decide cosa farne: può inviare il testo al servizio Conversation per comprenderne il contenuto. ∗ Conversation può a sua volta, in base al contesto della conversazione: generare una risposta automatica oppure richiedere l’ausilio o del servizio di supporto di Watson o comunicare al server che sono richiesti i Web Service; ∗ Se c’è bisogno il server preleva i dati da Web Service; ∗ Il server del bot, infine, genera il messaggio di risposta e lo invia a Messenger che lo visualizzerà all’utente.
30 CAPITOLO 3. LO STAGE 3.5 Verifica e validazione Durante lo sviluppo ho svolto anche le attività di verifica e validazione. 3.5.1 Analisi statica Per l’attività di verifica ho utilizzato il plugin JSHint di Atom, uno strumento che permette di fare l’analisi statica del linguaggio Javascript. JSHint visualizza eventuali error e warning presenti nel codice e aiuta, sempre con dei warning, a uniformare e rendere più leggibile il codice. 3.5.2 Analisi dinamica L’analisi dinamica del software è stata svolta tramite il framework di test dinamici, per Node.js, Mocha.js, e tramite esecuzione del sistema completo. Con Mocha.js sono riuscito a svolgere la maggior parte dei test dinamici base, ma per test più completi, comprendenti tutte le integrazioni, ho dovuto ripiegare tramite l’esecuzione del server, questo per via delle diverse integrazioni e dei diversi livelli di sincronizzazione che, data la mia inesperienza con Mocha.js, mi hanno impedito di automatizzare tutti i test. I test hanno riguardato le principali funzionalità e integrazioni: ∗ Integrazione tra server bot e IBM Conversation; ∗ Integrazione tra server bot e l’altro servizio di IBM (ausiliario a Conversation); ∗ Integrazione tra server bot e Facebook Messenger; ∗ Integrazione tra server bot e Web Service; ∗ Caricamento e aggiornamento dei dati dei WS in Conversation; ∗ Caricamento e aggiornamento dei dati nell’altro servizio di IBM (ausiliario a Conversation); ∗ Invio e ricezioni messaggi in Messenger; ∗ Ricerca trailer; ∗ Ricerca film; ∗ Ricerca spettacoli. Per le funzionalità principali ho eseguito diversi test sia per verificarne il funziona- mento che la correttezza generale che della correttezza del contesto. 3.6 Risultato finale Il risultato finale è un chatbot funzionante, risiedente nei server di IBM, che è integrato con Messenger, i Web Service e il framework Watson di IBM. Le funzionalità presenti finali non sono molte, ma hanno lo scopo di illustrare il funzio- namento e l’applicabilità degli strumenti e in generale del bot. Certamente per essere
3.6. RISULTATO FINALE 31 usabile il bot avrebbe bisogno di altro lavoro per renderlo soprattutto più completo, ma già nello stato attuale è possibile, mediante linguaggio naturale, arrivare alla pagina di prenotazione di un film, in un cinema in una particolare data. Le funzionalità presenti permettono quindi di cercare film, vedere i film e cinema presenti, cercare i video dei trailer e cercare gli spettacoli presenti, indicando prima il film che si vuole vedere e poi il cinema dove lo si vuole vedere. 3.6.1 Demo Dopo che è iniziato lo stage si è presentata l’opportunità di effettuare una demo con il cliente. Si è così deciso di prestare attenzione alla demo a discapito di qualche giorno di normale svolgimento rispetto al piano di lavoro. La demo si è svolta in data 9 novembre.« Questa data ha ovviamente rappresentato un momento importante, a cui ho prestato grande attenzione, infatti nei giorni antecedenti ho cercato di lavorare per rendere il bot, e le funzionalità presenti fino a quel momento, il più presentabile e funzionale possibile. La demo è avvenuta tra il tutor e il cliente; il tutor al ritorno mi ha riportato che è andata bene, non ci sono stati problemi, il cliente è rimasto contento di quanto visto e si è inoltre dimostrato favorevole al proseguimento del progetto (anche dopo la fine del tirocinio). 3.6.2 Risultato Qui sotto vengono proposte alcune immagini dimostrative del risultato ottenuto. Si noti, nelle prime tre immagini, come il bot riesca a riconoscere i film cercati, pur non fornendo entità precise o isolate. Nell’immagine seguente ci richiede il video del trailer di un film. Nelle ultime due immagini si mostra l’interazione che va dalla ricerca del film al link verso la pagina di prenotazione "prenota spettacolo", in questo caso si sfruttano anche i pulsanti che sono utilizzati per velocizzare l’interazione una volta trovato il film. Tutte le immagini visualizzate dal bot portano ai dettagli del film nel sito del cliente.
32 CAPITOLO 3. LO STAGE (a) (b) (c) Figura 3.14: Esempi di ricerche di film
3.6. RISULTATO FINALE 33 Figura 3.15: Esempio di richiesta di un trailer
34 CAPITOLO 3. LO STAGE (a) (b) Figura 3.16: Esempi di ricerca degli spettacoli presenti
Capitolo 4 Valutazione retrospettiva In questo ultimo capitolo faccio un bilancio dello stage, iniziando da un confronto tra gli obiettivi prefissati e quelli soddisfatti. Illustro cosa ho appreso, sia a livello professionale che formativo, e cosa invece mi è mancato. Concludo con una valutazione personale sia sull’esperienza di stage che del corso di studi. 4.1 Conseguimento degli obiettivi prefissati Durante la fase di pianificazione avevo concordato con l’azienda una lista di obiettivi da raggiungere per la realizzazione del progetto. Durante il tirocinio alcuni obiettivi però sono cambiati, alcuni si sono aggiunti e altri sono venuti meno, questo per la natura innovativa del progetto in un arco di tempo ridotto. Qui sotto elenco gli obiettivi, suddivisi per livello di priorità strategica, con i corrispondenti risultati. Ritengo che il progetto di stage abbia avuto buon esito, soddisfando tutti i requisiti obbligatori e desiderabili prefissati, pur avendo trovato degli ostacoli importanti (per esempio il problema dei titoli). Sono riuscito a ottenere un bot che è sia funzionante e sufficientemente completo, cioè che permette di arrivare alla tripla attraverso la conversazione con il bot. Nella parte conclusiva ho caricato il bot, con l’account aziendale, nei server IBM e reso così disponibile anche a terzi; il tutor aziendale è rimasto soddisfatto del risultato finale ottenuto. Con più tempo sarei sicuramente riuscito a rendere il bot più completo, ma conside- rando i problemi incontrati e l’opportunità e l’impegno rappresentati dalla demo, mi ritengo più che soddisfatto. La demo, in cui è stato presentato un prototipo con alcune delle funzionalità sviluppate, è andata bene, il cliente si è dimostrato interessato all’idea del progetto, è rimasto contento di quanto visto e ha inoltre dato la disponibilità a continuare il progetto una volta finito il tirocinio. Con l’integrazione del middleware botkit sono riuscito anche a rendere il bot: più esten- dibile, è possibile ora integrare il bot con altri servizi e altre interfacce di messaggistica molto semplicemente; più manutenibile, riutilizzando codice diffuso e supportato da 35
36 CAPITOLO 4. VALUTAZIONE RETROSPETTIVA Tabella 4.1: Tabella degli obiettivi raggiunti Tipologia Obiettivo Esito Obbligatorio Studio del caso d’uso, delle componenti e degli Soddisfatto strumenti Obbligatorio Realizzazione di un bot integrato con i servizi Watson Soddisfatto di IBM e con i Web Service del cliente; Obbligatorio Analisi e prototipazione di un sistema di conversazione Soddisfatto automatico in linguaggio naturale Obbligatorio Studio del caso d’uso, delle componenti e degli Soddisfatto strumenti Desiderabile Realizzazione di una conversazione dinamica, che per- Soddisfatto metta al bot rispondere all’utente contestualmente, e fornendogli le informazioni contenute nei Web Service, in base alla richiesta effettuata Opzionale Migrazione del bot nei server IBM Soddisfatto Opzionale Studio di altri servizi di machine learning In parte grandi aziende; multi-utente e multi-thread. 4.2 Conoscenze preliminari Pur riuscendo a raggiungere gli obiettivi prefissati, ho incontrato difficoltà su più fronti: ∗ Legate al bot, problema dei titoli, quando ho iniziato non sapevo cosa aspettarmi e questo problema mi ha richiesto un notevole impegno per affrontarlo; ∗ Difficoltà in alcune integrazioni dei servizi e nell’utilizzo di alcune tecnologie relative al bot, date dalla scarsa documentazione; ∗ Javascript, dato dalla mia conoscenza basilare del linguaggio, e in particolar modo di Node.JS. Ho incontrato difficoltà in particolar modo nella gestione dei flussi asincroni e nel dover spesso sincronizzare funzionalità (esterne) asincrone, per poter inviare i messaggi all’utente solo quando effettivamente pronti. Ho quindi dovuto impiegare diverso tempo per capirne i meccanismi e capire come risolvere questi problemi. Credo quindi che questo sia un tema importante che dovrebbe essere affrontato anche in aula, vista la grande diffusione del linguaggio Javascript e di linguaggi con caratteri- stiche simili. 4.3 Bilancio formativo Ritengo di aver imparato molto, sia a livello di tecnologico che più in generale formativo. Questa è stata la mia prima vera esperienza lavorativa, in autonomia, in cui ho dovuto organizzarmi da solo, al meglio, per cercare di gestire il lavoro da fare e i problemi che ho incontrato.
4.3. BILANCIO FORMATIVO 37 Durante questo periodo sono quindi riuscito a venire a contatto con alcune tecnologie o consolidarne altre che già conoscevo. In particolare: 1. I chatbot, cosa sono, come funzionano, perchè potrebbero diventare il futuro dell’interazione web e i flussi di conversazione; 2. Framework Watson di IBM, in cui ho potuto studiare e provare diversi servizi tra cui Conversation, grazie al quale è possibile realizzare un bot; 3. Node.JS, ho potuto conoscerlo meglio, dovendo sviluppare e fare molte integra- zioni, ho potuto scendere maggiormente nel dettaglio; 4. Sistema di messaggistica Messenger, middleware botkit, integrazione con Web Service. Infine, mi ritengo soddisfatto sia dell’esperienza di stage che dell’esperienza universi- taria. Grazie a questo stage ho potuto fare un’esperienza lavorativa, che mi da più sicurezza nei miei mezzi e mi ha dato l’opportunità di affacciarmi concretamente al mondo del lavoro. Aver lavorato in completa autonomia però, seppur potendomi confrontare con il tutor aziendale, è stata sia una cosa positiva, perchè ho dovuto gestirmi e risolvere i problemi da solo, ma anche un limite, perchè non ho avuto l’occasione di lavorare insieme ad altre persone del mondo informatico e di apprenderne suggerimenti e metodologie. Riguardo all’università, quello che invece credo di aver imparato maggiormente è, più che una serie di conoscenze, la propensione allo studio di nuove tecnologie e l’approccio verso nuove conoscenze. Ho comunque imparato molte cose e fatto una grande esperienza di vita. Per concludere, l’azienda, a tirocinio concluso, mi ha proposto di continuare a collabo- rare con loro per andare avanti nella realizzazione del progetto.
“La risposta alla domanda fondamentale sulla vita, l’universo e tutto quanto è . . . 42. Sì, ci ho pensato attentamente ed è questa, 42.” Pensiero Profondo Ringraziamenti Innanzitutto, vorrei esprimere la mia gratitudine al Prof. Tullio Vardanega, relatore della mia tesi, per l’aiuto e il sostegno fornitomi durante la stesura del lavoro. Ringrazio Marco De Toni, tutor aziendale del mio stage, e tutti i dipendenti della Nextep per avermi accolto. Desidero ringraziare con affetto i miei genitori, Ivana e Lorenzo, per avermi dato quest’opportunità, per la fiducia e semplicemente per tutto. Un altro particolare ringraziamento va a mio fratello Marco, per essere sempre stato un esempio per me. Ringrazio inoltre i miei amici per tutti i momenti intensi passati insieme e tutti i compagni con cui ho condiviso quest’avventura. Un ultimo saluto va alla mia bellissima nipotina Emilia. Padova, Febbraio 2018 Enrico Canova 39
Puoi anche leggere