
Getting started: DialogFlow
Nel 201o Apple acquista da un istituto di ricerca californiano Siri, un'agente in grado di comprendere e rispondere alle richieste dell'utente impiegando il linguaggio naturale, presentadolo al mondo nell'autunno 2011 con l'iPhone 4s. Il linguaggio naturale è la forma di comunicazione che ci risulta più facile, e non solo nella sua versione parlata, anche quella scritta sta crescendo esponenzialmente tanto che possiamo affermare che "l'interfaccia utente è il testo" (2018). DialogFlowQuando ci loggiamo per la prima volta a Dialogflow ci si sente spaesati, perché non si sa esattamente da dove iniziare. In questo primo tutorial vedremo di rendere più chiari termini come: agente, intents, entities.
Agente intelligente
Il concetto di “intelligenza”, e di conseguenza quello di “agente intelligente”, è stato oggetto di studio di diverse discipline come: la filosofia, le scienze cognitive, l’economia, la sociologia, ecc.. che ne hanno proposto diverse definizioni. Particolarmente interessante è la definizione debole (weak) di agente data dai computer scientists Nicholas Robert Jennigs e Michael Wooldridge (1995):
Che mettono in risalto la capacità dell'agente di reagire all'ambiente (reattività) in cui è situato senza l'intervento umano (autonomia) , di raggiungere i propri obiettivi e in caso di collaborare con altri agenti per raggiungerli (abilità sociali). Step 1 - Creare un'agenteIniziamo con creare un nuovo agente (1) dandogli un nome (2) ricordandoci di selezionare la lingua (3) e la time zone (4) corretta. Inoltre DialogFlow consente di sviluppare un'agente in grado di supportare più lingue al suo interno, dando così la possibilità di impostare diverse risposte per ciascuna lingua. Inoltre ad ogni agente viene associato un progetto Google che possiamo selezionare dal menu a discesa fra quelli pre-esistenti o lasciando l'opzione predefinita ne verrà creato in automatico uno nuovo con il nome dell'agente nella piattaforma Google Cloud. Nel mio caso, come possiamo vedere dall'immagine, il mio agente su DialogFlow si chiama InHerShoes , in lingua italiana (it), a cui è stato associato l'ID del progetto Google Cloud inhershoes-e1afa. Intents: qual è l’obiettivo?Quando un'utente parla al microfono del proprio device o digita sulla tastiera la sua richiesta (query) al nostro agente dobbiamo chiederci: "Che cosa voleva l'utente con questa frase?" Dobbiamo creare l'intento "trova_posizione" invece di "trova_ristorante_cinese". Inoltre un'utente può esprimere lo stesso intento in modi diversi: In entrambi i casi l'azione (action) é probabilmente la stessa: trovare una posizione.
Termini come "ristorante cinese","biblioteca" , "Roma", "Milano" ,"domani" invece sono dettagli che verranno estratti con le entities. Step 2 - Creare un intentUna volta che abbiamo creato il nostro agente si viene reindirizzati alla schermata "Intents" dalla quale possiamo cliccare sul pulsante "Create intent": L'intent è una mappatura tra ciò che l'utente dice e quali azioni (action and parameters) dovrebbero compiere il nostro agente. Se volessimo accendere le luci delle diverse stanze di un appartamento l'azione sarebbe la stessa (a cui potremmo dare il nome di powerOnLights) e molto probabilmente anche l'intento sarà lo stesso (ad es: powerOn). Quando facciamo il training di quello che potrebbe dire o digitare un'utente (training phrases) stiamo semplicemente ricercando quelle frasi comuni che potrebbero innescare una stessa azione (action). Ora immaginiamo di voler acquistare delle scarpe quali sono le possibili frasi?
Come reagiresti se senza un contesto ti dicessi:"vorrei comprare un paio di scarpe rosse?" Allo stesso modo un'agente, senza la direzione dello scambio verbale, non saprebbe come comportarsi ed è qui che entrano in gioco i contesti guidando la conversazione e rispettando così il principio di cooperazione di Grice ("Bot design: come fare cose con le parole in chat", 2017).
I contesti ci permettono di prendere decisioni in base alle risposte precedenti, di riparare le conversazioni che verrebbero chiuse o che possono divergere in intenti che non vogliamo. Entities: estrarre i dettagliQuando l'utente parla o digita Dialogflow ricerca le entities e il loro valore in modo da poter comprendere la richiesta che viene formulata in linguaggio naturale. Di solito sarà una parola chiave come un nome, la data o la posizione etc. Nell'esempio "rosso" e "scarpe" sono entities e cambiandone il valore il significato della frase verrebbe alterato, ma non l'intento (ad esempio "comprareScarpe" ) che rimarebbe lo stesso perché l'utente ha espresso in tutti i casi il desiderio di acquistare qualcosa. A seconda dell'agente che stiamo creando, in questo caso un chatbot per la vendita di scarpe, possiamo creare delle entities per tipologia:per colore (rosse, nere, blu, etc) o per modello di scarpa (sandalo, stivali, tacchi, etc..). Riprendiamo quest'altro esempio: Le entities sono la città di partenza, la città di destinazione e la data. Step 3 - Creare una entityDialogflow contiene già un insieme di entities predefinite che possiamo utilizzare quando creaimo i nostri intents, ma spesso ne abbiamo bisogno di personalizzate. Iniziamo con il cliccare su Entities (1) e poi su Create Entity (2) Immaginiamo di voler creare la entity "Scarpe", sul lato sinistro (3) definiremo il valore per l'Entity ed invece su quello destro i sinonimi in questo modo aumentiamo la possibilità di riconoscere le richieste degli utenti. La possibilità di usare sinomi rendono la conversazione più "naturale" e meno "artificiale" perché possiamo includere abbreviazioni, termini gergali e anche errori di ortografia comuni.
Bibliografia Sitografia DialogFlow tutorials DialogFlow documentation |