Dialogflow vs RASA, confronto tra Chatbots

Scritto da ambrix on . Postato in Chatbot, Intelligenza Artificiale, Tecnologia

Confronto dialogflow rasa

Dialogflow VS Rasa: intelligenze artificiali a confronto.

L’interesse per lo sviluppo di Chatbot e Assistenti Virtuali Intelligenti è ad oggi in continua crescita. Alcune tra le piattoforme più popolari disponibili al momento per queste tecnologie sono Dialogflow di Google, Amazon Lex, IBM Watson e RASA. In questo articolo ci soffermeremo sul confronto tra Dialogflow e Rasa.

Dialogflow è di proprietà di Google e risulta abbastanza facile da usare. Anche se non si è programmatori o tecnici, si può realizzare un chatbot di base. Non manca la possibilità di avere sistemi più complessi. Infatti, per qualcosa di più avanzato, quale potrebbe essere un assistente virtuale dotato di intelligenza artificiale (disponibili algoritmi di Machine Learning pre addestrati) con un sistema di prenotazione interlacciato a calendari “esterni” o semplicemente l’invio di email piuttosto che il riconoscimento facciale, bene in tal caso bisogna avere familiarità con i linguaggi di programmazione (node.js il più gettonato).

Rasa è un framework open source più adatto agli sviluppatori, ma richiede più tempo rispetto a Dialogflow per acquisire familiarità con la sua architettura. Tuttavia, Rasa X (a pagamento) ha un set di strumenti che si sovrappone a Rasa Open Source, rendendo più semplice lo sviluppo di assistenti virtuali. Linguaggio di programmazione supportato: Python.

Ma proviamo a dare una descrizione degli aspetti più importanti di un Assistente Virtuale, analizzandoli per le due piattaforme in questione.

Nel confronto Dialogflow – Rasa un aspetto cruciale riguarda la Gestione del flusso di conversazione.

La creazione di assistenti contestuali richiede elementi di intelligenza artificiale (Machine Learning e Deep Learning) associati alla conversazione. Il flusso del dialogo è un fattore di differenziazione per la scelta della piattaforma giusta. Poiché la maggior parte dei bot conversazionali è basata sullo Stato, il flusso di conversazione configurato lo seguirà diligentemente. Questo è un fattore cruciale da considerare poiché la gestione del dialogo diventa rapidamente più complessa con l’aumentare degli ambiti conversazionali del bot.

Rasa utilizza le storie come formato per addestrare i moduli di gestione dei dialoghi basati sui transformers (denominati core). Poiché si tratta di un modulo basato sul deep learning, le sue prestazioni sono chiaramente basate sulla quantità e sulla bontà dei dati a disposizione. Il flusso di dialogo può essere valutato utilizzando l’interfaccia da linea di comando (CLI).

Dialogflow ha un approccio di conservazione del dialogo basato sui contesti. La piattaforma fornisce un’interfaccia basata sul riempimento di slot in input e output per gli intenti in gioco. Inoltre è possibile configurare intenti e contesti attraveso i fulfillments utilizzando le funzioni fornite nell’API.

Intent name  Training phrases Param Contexts In
Contexts Out Response
path-init Cosa potrei visitare?       Che genere di percorso ti piacerebbe?
path-select-A Mi piacciono le Scienze Naturali     path-A Earth & Science Halls sembra giusto per te! Cosa vorresti esplorare in particolare?
pat-select-B Mi piacciono gli Animali     path-B Animals Halls è l’ideale! Hai qualche preferenza?
earth-show-map Hai una Mappa?   path-A   Ecco la Mappa del percorso A
animals-show-map Hai una Mappa?   path-B   Ecco la Mappa del percorso B
Tab 1. I Contesti controllano il flusso del dialogo

La Tabella 1 mostra come Dialogflow gestiste il flusso del dialogo riguardante una ipotetica visita dell’utente ad un Museo di Scienze Naturali.

amnh map

Il bot in questo caso chiede all’utente se ha un percorso in mente dal quale iniziare e successivamente invia una mappa del percorso. Il dialogo può essere articolato e molto più complesso, può guidare l’utente durante il percorso o suggerire cosa vedere.

Intenti ed Entità: percezione del modello.

Questa è una valutazione abbastanza soggettiva. In generale, una buona quantità di dati, associata ad una buona qualità di questi, definisce le prestazioni del modello. Molti di noi non comprendono a pieno l’importanza dei dati quando si tratta di sviluppo del Chatbot. Sì, le piattaforme sono costruite su motori NLP e NLU addestrati, ma ogni chatbot che è stato costruito ha un diverso insieme di progetti di conversazione e risolve diversi problemi del settore. Per ottenere il miglior risultato, è necessaria una discreta quantità di dati e anche la qualità dei dati dovrebbe essere buona e solo fornendo dati di buona qualità la piattaforma sarà in grado di funzionare al meglio.

Per quanto riguarda Dialogflow, Google lavora con una tecnologia all’avanguardia per supportare i suoi prodotti e ha molti dati già pronti per l’addestramento del modello principale dell’assistente virtuale. Sulla piattaforma, abbiamo anche una sezione denominata Validation che segnala eventuali Intenti che richiedono più dati di addestramento per essere ottimizzati. Inoltre le Entità aiutano a creare facilmente un insieme di base di parole o frasi custom.

Rasa, d’altra parte, ha una selezione della pipeline personalizzata in base alla quantità di dati di addestramento. Per una quantità di dati non elevata, è possibile utilizzare il modello pre-addestrato mentre più dati a disposizione è possibile eseguire il training da zero scegliendo una pipeline  ad hoc. Inoltre, Rasa fornisce funzionalità per effettuare la validazione dell’intento/entità può essere eseguita utilizzando le opzioni del modello NLU di valutazione Rasa.

Gli aspetti che riguardano il Training.

Gli assistenti virtuali hanno lo scopo di imitare il comportamento umano. Proprio come noi esseri umani impariamo di più nel tempo attraverso conversazioni e discussioni, l’aspettativa dagli assistenti virtuali è la stessa. Le piattaforme aiutano gli sviluppatori ad addestrare il bot in modo intuitivo e naturale. In questo caso, entrambe le piattaforme NLU vengono addestrate con espressioni naturali coadiuvate dalle entità.

Il punto fondamentale riguarda il progetto del flusso di conversazione. Come accennato in precedenza, l’approccio di Rasa è leggermente più fluido e naturale di Dialogflow, a causa dell’approccio basato sulla trama. L’apprendimento interattivo di Rasa semplifica la vita di uno sviluppatore quando si tratta di implementare i flussi di conversazione. Tuttavia rimane il fatto che Dialogflow si presenta più user-friendly del suo competitor.

Validazione del modello.

Il modello fornito da Rasa è configurabile dallo sviluppatore secondo i requisiti. Questa funzionalità è molto necessaria quando sperimentiamo più configurazioni.

Possiamo effettuare la validazione dei modelli NLU e Core di Rasa durante la fase di testing. È possibile anche confrontare diverse opzioni di configurazione per ottimizzare ulteriormente il tuo assistente.

Il modello di backend di Dialogflow è una scatola nera, tuttavia la piattaforma offre opzioni per modificare la soglia di classificazione Machine Learning e scegliere tra il modello ibrido (basato su regole e basato su ML) e il modello con solo ML.

Importazione di dati di training di diverso formato.

In questo caso Dialogflow e Rasa hanno comportamenti diversi. Più versatile Rasa, più compatto e incastrato Dialogflow.

Rasa ha recentemente aggiunto un’opzione Training Data Importer per importare dati di diversi formati e da diverse fonti.

In Dialogflow, è presente una sezione import/export. Pertanto si ha la possibilità di importare e utilizzare i dati di addestramento in formato json.

Continuiamo il confronto Dialogflow Rasa analizzando le lingue supportate.

Dialogflow ha una vasta scelta di lingue. La piattaforma di Google, presenta un supporto multilingue e vi è la possibilità di scegliere una lingua principale e più ligue secondarie. Per le traduzioni entra in gioco Google Translator, attraverso le API è possibile avere a disposizione il noto servizio di traduzione linguistica.

Rasa è più simile a una piattaforma fai-da-te che consente di aggiungere un supporto multilingue con l’aiuto di alcuni componenti integrati come spaCy. Inoltre, è possibile creare un componente personalizzato per supportare qualsiasi lingua.

Analisi dei Dati e Reports.

L’analisi delle performance è importante per monitorare le prestazioni dei bot in modo da poter attuare gli aggiustamenti necessari a migliorare la user experience che si sta fornendo.

Dialogflow fornisce un set di base di funzionalità di analisi nella sezione Analytics. Queste funzionalità visualizzano il numero di sessioni, gli intenti e il flusso di domande effettuate nella sezione History. Tuttavia, per analisi più dettagliate (utenti di ritorno, sorgenti di traffico, domande senza risposta, ecc.) bisogna attingere a strumenti di integrazione e programmazione più avanzata: alcuni tra i più gettonati tra gli strumenti di analisi sono Chatbase e Dashbot.

Rasa ha il supporto per l’analisi nella versione Enterprise Edition. Include KPI (Key Performance Indicator) predefiniti nella sezione analytics per vedere il numero di sessioni, utenti e messaggi, ecc. Inoltre, i dati possono essere esportati utilizzando le API messe a disposizione dalla stessa piattaforma, con la possibilità di creare rapporti personalizzati con i parametri di maggior interesse.

Integrazioni (voce e testo).

Entrambe le piattaforme supportano principalmente tutti i canali di messaggistica più diffusi. Dialogflow si integra a perfezione con piattaforme come Telegram, Messenger, Skype, e così via. Il Sistema di Google ha anche un supporto aggiuntivo per i canali basati sulla voce. Rasa, prevede l’utilizza di connettori personalizzati per l’integrazione con sistemi di messaggistica testuale e vocale.

Speech-to-text (STT) e text-to-speech (TTS).

Alexa e Siri sono gli esempi di diffusi di queste due tecnologie di sintesi vocale e testuale.

Dialogflow ha queste funzionalità già integrate e possono essere abilitate nella sezione Speech. Inoltre è possibile effettuare la Sentiment Analysis utilizzando la Natural Language API  basata su algoritmi di Machine Learning per l’estrazione del testo.

Al momento Rasa non prevede una sezione di Sentiment Analysis già pronta per l’uso. Ma sono disponibili varie opzioni open source per soddisfare questo requisito. Sul blog di Rasa si trova una guida su come creare un componente analitico in linguaggio Python.

Confronto Dialogflow Rasa: aspetti legati alla Sicurezza.

La quantità di dati e di informazioni che può transitare attraverso un chatbot è potenzialmente immensa, pertanto l’aspetto sicurezza è di notevole importanza.

Dialogflow fornisce l’autenticazione basata sull’account di servizio (meccanismo basato su chiave privata). Attraverso la sezione Fulfillment possiamo aggiungere ulteriori token di autenticazione legati a Firebase, interagendo con API esterne.

Rasa per impostazione predefinita fornisce due metodi di autenticazione, di cui uno basato su JWT (Json Web Token). Un ulteriore vantaggio è che si ha la flessibilità di distribuirlo su cloud privati o in locale, il che darà un maggiore controllo sulla protezione dei dati e si aggiunge alla sicurezza generale del sistema.

Livello di Personalizzazione.

Rasa offre la completa libertà di configurare i modelli di NLU, Core, Integration, Deployment, ecc.

Dialogflow, d’altra parte, non consente alcuna personalizzazione sul suo codice, tuttavia è possibile agire sul fulfillment per ottenere le personalizzazioni desiderate.

Software Development Kits.

Deployment: aspetti della dislocazione della Piattaforma.

Questo è un fattore decisionale importante per molti clienti poiché la maggior parte di loro non desidera che i dati si spostino attraverso un’entità esterna che non è sotto il loro pieno controllo. È qui che Rasa vince senza dubbio in quanto può essere eseguito localmente. Può essere distribuito in locale e sul cloud. Poiché viene distribuito in locale, l’utilizzatore è proprietario dei suoi dati. Sebbene lo sviluppo di un assistente virtuale sia diverso dallo sviluppo di software tradizionale, Rasa segue le migliori pratiche di ingegneria del software.

Dialogflow è un prodotto Google Cloud Platform e un framework per bot basato sull’interfaccia utente. L’intero progetto e, naturalmente, i modelli, sono archiviati e distribuiti nel cloud di Google. Abbiamo tuttavia la flessibilità di scegliere l’utilizzo finale del prodotto, ossia scegliere la logica di business backend on-premise o su altre piattaforme cloud.

Dialogflow VS RASA: chi vince il confronto?

A mio parere non c’è un vero vincitore in questo confronto. Come già scritto nell’articolo, la scelta dipende molto dal progettista. Se sei un programmatore e hai voglia di spendere più tempo nella fase di iniziale di “comprensione della piattaforma”, allora la scelta ricade su RASA. Se non sei un programmatore, allora propenderei per Dialogflow. Altro fattore è il budget. Se non vuoi impegare risorse economiche, scegli RASA (Free Edition) ma ricordati che avrai comunque bisogno di un server dove far girare il tutto. In alternativa, Dialogflow ti dà già tutto, dal Server all’integrazione WEB.

 

Per Richieste, Avvisi e Lasciti Ereditari

Disclaimer

I contenuti di questo Blog (testi, immagini, foto, etc.) sono di mia creazione, tranne nei casi dove espressamente indicato.