Di chatbot si parla molto. Forse troppo. Un panorama variegato di applicazioni, non tutte ‘intelligenti’. Ecco ciò che occorre sapere.

In teoria, quando parliamo di chatbot, dovremmo intendere tutti la stessa cosa. E si tratta di una cosa molto semplice: un programma (bot) in grado di affrontare una conversazione (chat) in modo indistinguibile da un essere umano. Il formato di comunicazione può essere testuale (scritto), parlato (voce) o non verbale (iconico). I chatbot, insomma, dovrebbero essere software capaci di superare il famoso Test di Alan Turing. Nella realtà le cose sono molto più complicate, per almeno tre motivi.

In primo luogo a determinare la capacità dialogante di una macchina non è solo l’intelligenza artificiale di cui dispone, ma anche la sua interfaccia utente. L’esperienza che l’essere umano fa, nella relazione con il software, è il prodotto di questi due fattori. Un’applicazione capace di superare in modo brillante il Test di Turing può comunque risultare disfunzionale, se l’interfaccia non è usabile e non crea empatia. Questione di design, insomma.

C’è poi un altro fatto. In anni recenti programmi palesemente non pensanti si sono dimostrati in grado di superare il Test di Turing. Esso viene oggi considerato con un certo scetticismo, quanto meno nella sua formulazione originaria. Ci si domanda: possiamo in effetti affermare che un programma è in grado di comprendere il linguaggio naturale e dunque di pensare, come sostengono i teorici della intelligenza artificiale forte? Nel 1980 John Searle provò a confutare questa idea attraverso l’esperimento mentale della Stanza cinese. Ne scaturì un dibattito che è proseguito fino ai giorni nostri.

Non è tutta intelligenza artificiale

Ma c’è una terza circostanza da tenere presente. E per farlo non è necessario addentrarci nei meandri di una polemica che vede coinvolti matematici, filosofi, linguisti ed esperti di cibernetica. Il punto è che oggi sono classificate come chatbot applicazioni fra loro molto diverse, sia per le tecnologie utilizzate sia con riferimento alle loro funzionalità e  quindi agli ambiti di impiego. Si va da bot molto elementari, con prestazioni davvero modeste e sostanzialmente incapaci di affrontare un dialogo con un essere umano, a macchine ultrasofisticate. Al vertice di questa piramide ci sono gli smartbot di Google Assistant, Amazon Alexa, Apple Siri e Microsoft Cortana.

La prima distinzione da operare, dunque, è fra bot che utilizzano effettivamente tecnologie di intelligenza artificiale e software di altro tipo. Semplificando un po’, possiamo dire che esistono chatbot di tipo command-based e altri di tipo AI-based (dove AI sta per artificial intelligence, appunto). I primi hanno un set limitato di comandi, sfruttano prompt con messaggi strutturati e non comprendono il linguaggio naturale: interpretano i comandi per eseguire task in modo automatico. Rientrano in questa categoria anche i bot talvolta definiti come transazionali, che permettono cioè di accompagnare le diverse fasi di una transazione (pensiamo al caso dell’e-commerce: “Ricerca > Metti in carrello > Scegli indirizzo > Scegli momento di consegna > Concludi l’ordine”). I chatbot AI-based hanno invece capacità linguistiche e di gestione del dialogo molto più raffinate. Tuttavia i livelli di sofisticazione possono variare molto.

Perché se ne parla oggi

Il fatto che di chatbot si parli molto oggi dipende dalla convergenza di due tendenze. Da un lato sappiamo che nella comunicazione online si affermano con prepotenza interfacce di tipo conversazionale. Il successo di piattaforme di messaggistica istantanea come WhatsApp, WeChat, Telegram e Facebook Messenger, soprattutto presso il pubblico più giovane, è un dato di fatto. Da qui l’idea di integrare in questo tipo di interfacce una quantità crescente di servizi B2C.

La seconda tendenza è legata all’evoluzione del machine learning, che ha dato nuovo impulso al mondo del natural language processing (NPL). Quando parliamo di NPL intendiamo qualunque processo di trattamento automatico delle informazioni espresse in linguaggio naturale. Ma non tutto l’NPL è intelligenza artificiale. D’altra parte l’intelligenza artificiale sta conoscendo un’autentica rivoluzione, grazie all’avvento di nuove procedure di calcolo per l’apprendimento e la previsione di eventi basate sul parsing di dati. Ed è proprio il machine learning che sta offrendo nuove possibilità all’ambito delle applicazioni conversazionali. Un fronte ancora più avanzato è costituito dalle interfacce conversazionali che sfruttano tecniche di deep learning, ovvero machine learning basato sull’impiego di reti neurali.

Retrieval-based vs generative

In linea di principio si può parlare di chatbot – o, ancora meglio, di smartbot – solo nel caso in cui il bot sia equipaggiato con un motore di machine learning. Eppure nel vasto panorama dei chatbot in circolazione ce ne sono molti – forse la maggioranza – che non sono affatto ‘smart’.

Un altro modo di distinguere le applicazioni di chatbot è facendo riferimento al modello in base al quale il software produce le risposte alle domande all’interlocutore umano. Il modello più semplice è retrieval-based. In questo caso il chatbot accede a una repository di risposte predefinite. L’euristica, ovvero la metodologia di ricerca della risposta migliore, può essere più o meno sofisticata: si va da sistemi rule-based basati sulla semplice corrispondenza testuale a classificatori complessi di machine learning. In generale in questo modello l’input è costituito dal contesto in cui si svolge la conversazione e da una lista predefinita di potenziali risposte, mentre l’output è un punteggio per ciascuna risposta. Ad ogni presa di turno nel dialogo il software espone la risposta con il punteggio più alto.

La sfida più difficile, per il chatbot, è riuscire a incorporare il contesto linguistico (tutto ciò che viene detto nel corso della conversazione e che dà senso a ogni presa di turno nel dialogo) e il contesto fisico (per esempio informazioni sull’utente, il luogo, la data e l’ora della conversazione). Un buon testo deve essere coerente sul piano semantico e coeso dal punto di vista delle forme linguistiche.

Un modello diverso, molto più complesso, è quello generativo, analogo a quello utilizzato nei sistemi di traduzione automatica. Nei chatbot che applicano questo modello, anziché tradurre da una lingua all’altra, si ‘traduce, da un input (domanda) a un output (risposta). È questo l’ambito in cui le tecniche di deep learning sembrano dare i loro frutti migliori. I sistemi di questo tipo producono più di altri l’impressione di avere a che fare con un essere umano, ma sono particolarmente difficili da istruire. Un buon esempio di algoritmo generativo è quello utilizzato da Google Smart Reply, il nuovo servizio di Gmail, non disponibile in versione italiana, che genera risposte automatiche ai messaggi di posta elettronica, analizzandone il contenuto. Un servizio – va detto – che per ora non ha dato grande prova di sé.

Dominio chiuso e aperto

Uno dei fattori da considerare, nella progettazione di un chatbot, è la lunghezza delle conversazioni attese. In linea di massima, più lunga è la conversazione, più difficile è gestirla in modo automatico. Viceversa conversazioni composte da una sola coppia (domanda + risposta) rappresentano una sfida meno impegnativa. Un altro parametro fondamentale è l’estensione del dominio. A seconda dell’ampiezza dell’ambito della conversazione conviene utilizzare una strategia diversa. Per esempio, applicare il modello retrieval-based a un dominio conversazione molto ampio rischia di essere un’impresa ardua. Diventa impossibile nel caso in cui il dominio sia del tutto aperto (al chatbot si può chiedere qualsiasi cosa su qualsiasi argomento). In tali situazioni l’adozione di un modello generativo è praticamente obbligata.

La matrice sottostante fornisce una sintesi delle diverse strategie implementabili, in funzione dell’estensione dell’ambito della conversazione:

Matrice dati chat bot, quattro quadranti: IMPOSSIBILE, SEMPLICE, MOLTO COMPLESSO, COMPLESSO

Dove prendere l’AI

Alla fine, però, la scelta più delicata è un’altra. Se un chatbot propriamente detto ha bisogno di intelligenza artificiale, dove è più opportuno andarla a reperire? In linea di principio sono possibili tre strade: 1) implementazione in proprio, 2) utilizzo di piattaforme ad hoc concepite per lo sviluppo di chatbot, 3) consumo di AI messa a disposizione as a service dai soliti grandi fornitori: Amazon, Google, Microsoft, IBM e Facebook. Il primo approccio presuppone competenze di machine learning. Il secondo può essere raccomandabile nel caso in cui ci sia una forte coerenza fra i requisiti espressi e le caratteristiche verticali della piattaforma. Il terzo è, in un certo senso, il più semplice. Tuttavia non è esente da rischi e limitazioni.

Fra le piattaforme proprietarie per lo sviluppo di chatbot si segnalano Abe, Trim, Kasisto, Kore, Abe e Ernest. Kasisto, in particolare, è uno spin off di SRI International, la società che ha creato SIRI. Si presenta dunque con ottime credenziali. Oltre alla piattaforma di sviluppo ha creato myKAI, uno smartbot specializzato e personalizzabile pensato per il mondo dei servizi bancari. Strategia non dissimile quella di Kore che propone una piattaforma e una serie di chatbot verticali (banking, sales, commerce, IT help desk, SAP). In particolare Smart Bot for Banking è un’applicazione molto completa che include un motore di NLP, una serie di connettori e un’interfaccia utente personalizzabile. È una soluzione nativamente multicanale e conforme agli standard FINRA in materia di autenticazione, controllo accessi, protezione dei dati.

Natural language API

L’alternativa a queste soluzioni, come dicevamo, è l’AI as a service ovvero l’integrazione del chatbot con natural language API fornite dai big del cloud computing. Le natural language API integrano modelli di machine learning predefiniti. Opportunamente istruite, sono in grado di comprendere l’intenzione dell’utente e di estrarre le entità. Il loro punto debole è la modesta capacità di interpretare il contesto: non sanno sfruttare la storia delle interazioni passate per migliorare le loro prestazioni. Questo riduce la loro accuratezza (una accuratezza dell’80% significa un errore ogni cinque interazioni).

Fra le opzioni di AI as a service c’è l’imbarazzo della scelta. IBM propone Watson Developer Cloud e AlchemyAPI. Sul cloud di Microsoft, invece, troviamo Language Understanding Intelligent Service (LUIS), che si può usare integrato con la piattaforma di sviluppo Bot Framework (Node.js o C#). Di grande interesse sono i due engine di Facebook: Wit.ai e Recast.ai. Infine ci sono Google, con Natural Language API, e AWS, con Alexa Skills Kit.

Prima di partire

Al di là delle scelte tecnologiche, chi pensa di realizzare un chatbot evoluto dovrebbe considerare attentamente alcuni problemi di contesto che spesso sono invece trascurati. Il primo è costituito dalla possibile incoerenza fra i canali di interazione. Tale incoerenza può determinarsi nel momento in cui alcuni canali sono presidiati da sistemi di intelligenza artificiale, mentre altri forniscono risposte sulla base di intelligenza umana. Che cosa succede se, per esempio, un chatbot propone al cliente della banca un prodotto diverso da quello che gli propone l’impiegato in filiale? Il secondo punto di attenzione riguarda il difficile equilibro che si determina fra verosimiglianza dell’interfaccia e livello di empatia generato nell’interazione. Com’è noto, fra il robot con sembianze umanoidi e la macchina indistinguibile dall’essere umano esiste una zona perturbante (uncanny valley), che produce rifiuto e distanziamento.

Zona perturbante

Da ultima vi è la questione del dominio linguistico. L’apertura dell’ambito conversazionale va valutata non solo per quanto riguarda il contenuto, ma anche con riferimento alla lingua. I principali motori di NLP lavorano molto bene sul dominio della lingua inglese. Non sempre però garantiscono performance adeguate quando si tratta di processare l’italiano.