Natural Language Processing: come costruire un chatbot di successo

Esistono diversi approcci e strumenti che è possibile utilizzare per sviluppare un chatbot: a seconda del caso d'uso, alcune tecnologie sono più appropriate di altre. Si iniziano a sviluppare chatbot che sfruttano il processo di Natural Language Generation (NLG), l'opposto del Natural Language Understanding (NLU) [...]
Giulio Altobello

Data e AI engineer, machine learning reply

chatbot
  1. Home
  2. Robotica
  3. Chatbot
  4. Natural Language Processing: come costruire un chatbot di successo

Di recente, nuovi strumenti progettati per semplificare l’interazione tra uomo e computer hanno conquistato un’ampia una fetta di mercato: sono i chatbot o assistenti virtuali. La crescita esponenziale dei sistemi di messaggistica spinge il web marketing a puntare sempre di più su questa tipologia di strumenti.

Che cos’è un chatbot o un assistente virtuale? Perché sono importanti? In che modo aiutano ad accelerare il rendimento di un’azienda? Come ci può costruire il proprio bot personale? Sono solo alcune delle domande che sorgono nel momento in cui si pensa di implementare un chatbot.

Il mercato deI chatbot secondo Forbes

Secondo Forbes, si prevede che il mercato dei chatbot raggiungerà 1,25 miliardi di dollari entro il 2025.

Ai giorni nostri l’esperienza utente fornita da un’azienda è importante quanto i suoi prodotti o servizi, e questo giustifica quanto sia importante investire in strumenti quali chatbot basati su intelligenza artificiale. Questi ultimi semplificano le interazioni tra persone e servizi, migliorando l’esperienza utente, e allo stesso tempo, offrono alle aziende nuove opportunità per migliorare il processo di coinvolgimento della clientela e l’efficienza operativa, riducendo i costi tipici del servizio clienti.

In un progetto di chatbot di successo il supporto umano svolge un ruolo chiave: indipendentemente dal tipo di approccio e piattaforma, l’intervento umano è fondamentale per configurare, addestrare e ottimizzare il sistema.

Che cos’è un chatbot o assistente virtuale

Un chatbot è un software di intelligenza artificiale (AI) in grado di simulare una conversazione (o una chat) con un utente in linguaggio naturale, attraverso l’utilizzo di applicazioni di messaggistica, siti Web, app mobile o telefono.

Strumenti come Siri, Google Assistant, Alexa e Cortana rappresentano gli assistenti vocali più diffusi sul mercato, a cui ci rivolgiamo quotidianamente per ricevere informazioni e per accedere alle più disparate funzionalità, ma essenzialmente la loro tecnologia e l’implementazione dei diversi flussi conversazionali è simile a quella di un chatbot.

Un chatbot è spesso descritto come una delle espressioni più avanzate e promettenti dell’interazione tra uomo e macchina, tuttavia, da un punto di vista tecnologico, rappresenta solo la naturale evoluzione di un sistema di Question Answering che sfrutta il Natural Language Processing (NLP). La formulazione di risposte a domande in linguaggio naturale, è uno degli esempi più tipici di Natural Language Processing.

Anche se spesso si attribuiscono loro definizioni e ruoli differenti, chatbot e assistenti virtuali sono noti come assistenti digitali che comprendono le capacità umane, entrambi interpretano ed elaborano le richieste dell’utente e forniscono risposte rapide e pertinenti. Al tempo stesso, esistono anche agenti conversazionali che non funzionano attraverso l’intelligenza artificiale, limitandosi a operare secondo un algoritmo ben preciso. Proprio la presenza o l’assenza di intelligenza artificiale permette di distinguere tra chatbot rule-based e A.I chatbot.

Nel corso degli anni gli sviluppatori hanno fatto passi da gigante nello sviluppo di chatbot, che attualmente sono in grado non solo di comprendere il linguaggio conversazionale, ma anche di apprendere autonomamente dalle interazioni attraverso il machine learning, incrementando così la propria intelligenza. Questo processo è detto anche continuous learning.

Come progettare un chatbot di successo

Prima di entrare nel dettaglio della progettazione a livello tecnologico di un chatbot è necessario individuare e definire uno o più use case, avendo chiari i propri obiettivi aziendali e quindi le funzioni che dovranno essere automatizzate. Per questo motivo, è fondamentale creare una struttura di partenza stabile ed essenziale, tracciando una mappa dei principali flussi di conversazione che il chatbot dovrà essere in grado di gestire autonomamente, progettando e disegnando un vero e proprio schema di un automa a stati finiti. Su questi flussi saranno successivamente implementati nuovi dialoghi e casistiche, per rendere il chatbot più smart e funzionale.

Possiamo individuare tre componenti principali che caratterizzano la struttura di un chatbot:

  • Natural Language Understanding (NLU)
  • Dialog Manager
  • Contenuto (messaggi conversazionali)

Natural Language Understanding (NLU)

Il modulo di NLU si occupa dell’analisi e della comprensione delle richieste dell’utente, sostanzialmente trasforma una frase non strutturata in dati strutturati.

Si distinguono due parti fondamentali che riguardano questo modulo:

  • Intent Classification: l’intento è la classe di operazioni o richieste che possono essere gestite dal chatbot per fornire una risposta. Un intento viene solitamente creato definendo una classe di richiesta e associando a esso delle frasi di training. Se un impiegato o un assistente in generale accoglie un cliente, la sua prima azione sarà il tentativo di individuare l’intenzione della persona entrata nell’attività (negozio, banca, società ecc.). Gli intenti possono essere considerati come scopi o obiettivi espressi nell’input della finestra di dialogo di un cliente; dopo averli identificati, l’assistente può selezionare un’azione successiva applicabile.
  • Named Entity Recognition: le entità sono rappresentate da tutte le informazioni rilevanti all’interno dell’input, che sono pertinenti alle intenzioni dell’utente. Gli intenti possono essere considerati come verbi (l’azione che un utente vuole eseguire), mentre le entità rappresentano nomi (la città, la data, l’ora, il marchio, il prodotto). Ad esempio, quando l’intento è quello di ottenere una previsione meteorologica, le entità di posizione e data pertinenti sono richieste, prima che l’applicazione possa restituire una previsione accurata.

È possibile creare il componente di NLU attraverso modelli di deep learning specializzati ma in molti contesti è possibile utilizzare un servizio offerto da terze parti. Sul mercato attualmente esiste un’ampia scelta di moduli di NLU sia open source, come ad esempio il più noto Rasa, oppure servizi di NLU offerti dai principali attori del mercato come LUIS di Microsoft, Wit.ai di Facebook, Watson di IBM, Dialogflow di Google e Lex di Amazon.

Dialog Manager

Dopo aver individuato e definito uno o più use case, si realizza una rappresentazione grafica di un automa a stati finiti attraverso la quale viene creato un modello dei diversi flussi conversazionali. Questo modello viene gestito e implementato in un linguaggio di programmazione, con la possibilità di utilizzare o meno un particolare framework, oppure, anche in questo caso, tramite l’ausilio di servizi terzi.

Il dialog manager, sulla base del suo input, delle interazioni passate e dei dati che possono essere estratti da altre fonti, decide cosa comunicare all’utente. Ogni stato è associato ad uno o più intenti e/o entità, questi ultimi costituiscono la condizione tramite la quale si accede a un determinato stato all’interno del flusso conversazionale. Un altro compito fondamentale del Dialog Manager è quello di tener traccia del contesto corrente, ovvero di tutte quelle informazioni necessarie per riuscire a comprendere in quale stato del flusso conversazionale si trova l’utente e quindi quali saranno i prossimi stati a cui l’utente potrà accedere.

Come per il modulo di NLU, anche per il Dialog Manager è possibile creare una soluzione custom o utilizzare una soluzione standard. In questo caso è spesso più efficace l’utilizzo di una soluzione custom, per una maggiore flessibilità nella gestione del flusso, potendo ottimizzare il più possibile le diverse operazioni, nonostante nella maggior parte dei servizi di terze parti citati precedentemente, sia presente anche la possibilità di gestire un flusso conversazionale articolato.

Contenuto (messaggi conversazionali)

Questo modulo riguarda il testo, ovvero i messaggi che verranno visualizzati dall’utente nel corso della conversazione. I messaggi conversazionali vengono spesso trascurati, in quanto considerati come la parte “semplice” del processo di sviluppo del chatbot, forse perché sono parte della fase finale del processo o perché non hanno una natura tecnica. Sottovalutare questo modulo è un gravissimo errore, poiché il contenuto testuale di una conversazione è molto importante per ottenere un buon risultato sull’esperienza utente, per evitare interruzioni durante il flusso e per aiutare l’utente a raggiungere l’obiettivo che l’ha spinto all’utilizzo del chatbot.

Prima di stabilire cosa dirà il chatbot, è indispensabile decidere chi sarà. Avrà un nome? Come si rivolgerà agli utenti? Risponderà in maniera informale o più distaccata?

Ogni persona con cui dialoghiamo infatti ha un suo carattere, una sua personalità, perché il chatbot dovrebbe essere diverso? Oltre che dai contenuti infatti, l’utente sarà spinto a utilizzare nuovamente il chatbot anche dal piacere stesso della conversazione.

Avendo chiaro fin dall’inizio quale sarà l’approccio e il tone of voice del chatbot, sarà possibile lavorare in modo costante e coerente all’elaborazione dei testi, così che l’utente abbia sempre l’impressione di dialogare con lo stesso assistente virtuale, anche quando le conversazioni saranno scritte a più mani.

Non c’è da stupirsi, quindi, che così tante risorse vengano impiegate per costruire la “voce” dei chatbot, l’idea è di caratterizzarli, dando loro qualità umane e rendendoli quindi affini al target di riferimento con cui dovranno entrare in contatto. Siri di Apple, ad esempio, è stata orgogliosamente descritta dai suoi creatori di aver “un atteggiamento leggero… amichevole e umile”, mentre Cortana di Microsoft è stata progettata per essere “competente, premurosa, fiduciosa e leale, sempre pronta ad aiutare, non prepotente, desiderosa di imparare”.

Iride Intelligenza Artificiale e Natural Language Processing al servizio del cliente

Perché i chatbot sono importanti per un’azienda

I chatbot aumentano l’efficienza operativa e apportano risparmi sui costi aziendali, offrendo allo stesso tempo comodità e servizi aggiuntivi per i clienti. Essi consentono di risolvere facilmente molti tipi di richieste e problemi dei clienti, riducendo al contempo la necessità di interazione umana.

Di seguito vengono elencati alcuni dei principali valori apportati dall’utilizzo di una tecnologia chatbot:

  • Riduzione dei tempi di attesa dei clienti – Secondo il Chatbot Report, il 21% dei consumatori vede i chatbot come il modo più semplice per contattare un’azienda. Essi sono un modo più intelligente per garantire che i clienti ricevano la risposta immediata che stanno cercando, senza far loro subire eventuali tempi di attesa.
  • Disponibilità 24 × 7: il 68% dei clienti nel caso non noti interesse da parte di un’azienda, si rivolgerà a un concorrente. I bot sono sempre disponibili per coinvolgere gli utenti con risposte immediate alle domande più comuni. Il principale potenziale vantaggio nell’utilizzo dei chatbot è il servizio clienti 24 ore su 24.
  • Maggiore coinvolgimento dei clienti: i bot conversazionali possono avviare una conversazione proattiva e offrire consigli personalizzati che miglioreranno l’esperienza del cliente.
  • Facile scalabilità: i bot possono essere facilmente scalabili durante le ore di punta o gestire un numero “n” di conversazioni senza costi aggiuntivi per il servizio clienti.
  • Risparmio sui costi del servizio clienti – Juniper Research stima che i chatbot aiuteranno le aziende a risparmiare oltre 8 miliardi di dollari all’anno entro il 2022 su salari, formazione e costi di infrastruttura.
  • Automatizzazione della qualificazione e delle vendite: con i chatbot è possibile canalizzare la vendita per prequalificare le categorie e indirizzarle nel team giusto per un ulteriore supporto.
  • Riduzione del tasso di abbandono dei clienti – Coinvolgere i visitatori è senza dubbio il modo più sicuro per ridurre le frequenze di rimbalzo del cliente

Chatbot: alcuni esempi pratici

In questa sezione vengono elencati alcuni esempi pratici di use case ai quali chi scrive ha lavorato per conto di un’azienda del gruppo Reply specializzata in Machine Learning e intelligenza artificiale.

  • Il primo esempio riguarda proprio l’assistente virtuale interno, chiamato Ray, utilizzato da tutti i dipendenti per svolgere operazioni ricorrenti, come prenotare una meeting room, caricare note spese o compilare il proprio timesheet. Questo assistente virtuale è stato sviluppato in tutte le sue componenti, dal front-end, ovvero la finestra di chat vera e propria, al componente di Dialog Manager connesso con Dialogflow, che funge da NLU.

  • Per un cliente della grande distribuzione è stato sviluppato un chatbot che guida gli operatori delle varie sedi nella creazione di possibili segnalazioni per eventuali problematiche (errori di prezzo in cassa, codice articolo errato, ecc). In questo caso si è scelto di utilizzare una tecnologia basata su Rasa.
  • Per un’azienda leader del campo energetico è stato implementato un sistema di help desk che supporta i dipendenti nella “giungla” delle politiche, delle procedure e dei progetti dell’azienda, fornendo ai dipendenti risposte brevi e precise (ad es. un F.A.Q o un paragrafo specifico di un documento). In questo caso è stato utilizzato sia Dialogflow come modulo di NLU ma anche modelli di machine learning per trovare le migliori risposte tra le F.A.Q.
  • Per un’importante azienda nel campo delle telecomunicazioni è stato creato un assistente virtuale rivolto al cliente finale. Uno dei punti chiave di questo assistente virtuale è quello di fornire un’interazione vocale oltre che testuale. Il servizio è infatti pensato per essere utilizzato attraverso Google Assistant, per poter fornire un’ottima copertura verso i clienti finali in quanto Google Assistant è ormai disponibile su tutti i cellulari, smart speaker come Google Home, TV smart, orologi smart, etc. Inoltre, questo virtual assistant fa qualcosa di più sofisticato dal punto di vista del supporto, è infatti in grado di rispondere in autonomia alle domande di carattere generale poste dal cliente (ad esempio informazioni su spedizioni, resi, recessi da un contratto, etc.), quindi quella che può essere chiamata di assistenza di primo livello.

  • Per un’importante banca è stato creato un chatbot utile agli impiegati in filiale per essere indirizzati velocemente verso una soluzione, rispetto a problematiche poste dal cliente. Nella maggior parte dei casi, l’impiegato in pochi passaggi, molto spesso anche in uno solo, riesce a raggiungere la soluzione finale. Questo chatbot è stato sviluppato sfruttando interamente tutte le potenzialità di Dialogflow, dalla gestione del flusso conversazionale al modulo di NLU.
  • Per un’altra importante banca è stato creato un’assistente umanoide, raffigurato come un ologramma, in grado di accogliere in filiale il cliente e di avviare una relazione personale ed empatica con lui, per aiutarlo a svolgere le principali operazioni bancarie. A guidare l’assistente virtuale un motore di intelligenza artificiale per l’interazione con l’utente, ma non solo. L’utilizzo di tecniche di computer vision permettono di osservare i movimenti del suo interlocutore nella stanza e capire quando la sta guadando o vuole interagire con lei. L’intelligenza è basata su un framework conversazionale che funge da Dialog Manager e guida la conversazione basandosi su ciò che dice l’utente, integrando sia il componente di NLU, in questo caso Dialogflow, sia i servizi della banca necessari per applicare e rendere effettive le richieste del cliente.

Conclusioni

Esistono diversi approcci e strumenti che è possibile utilizzare per sviluppare un chatbot: a seconda del caso d’uso che si desidera affrontare alcune tecnologie di chatbot sono più appropriate di altre. La progettazione di un chatbot non è un qualcosa di semplice e se non ci si affida a professionisti del settore si può incorrere in errori e in progetti errati che renderebbero vani tutti i benefici apportati dall’utilizzo di questi strumenti.

I bot di intelligenza artificiale sono diventati una parte vitale di una strategia di coinvolgimento dei clienti. Grazie all’IoT e al Deep Learning, ora abbiamo un numero enorme di possibilità da sfruttare, dallo Speech-to-Text, all’helpdesk online ai famosi strumenti come Google Home o Alexa.

Ultimamente si iniziano a sviluppare i primi chatbot che sfruttano il processo di Natural Language Generation (NLG), che può essere visto come l’opposto del Natural Language Understanding (NLU). Con il NLU il sistema deve strutturare e interpretare una frase di input dell’utente per produrre una rappresentazione automatica, mentre nel NLG il sistema deve prendere decisioni su come esprimere un concetto in parole, scegliendo una rappresentazione testuale specifica e coerente. Il NLG può essere paragonato al processo mentale che gli umani applicano quando trasformano le idee in parole.

La direzione della ricerca in quest’ambito è sicuramente quella di creare un bot che segua il meno possibile degli schemi prefissati nel relazionarsi con l’utente, ma che abbia una coscienza propria, sempre più simile e vicina a quella umana.

 

FacebookTwitterLinkedIn