
Alexa: Interaction model
I dati utilizzati per fare il training di un modello in italiano per Alexa solitamente vengono annotati usando una rappresentazione semantica di dominio, intent e slot (entities). Per spiegare cosa si intende per dominio semantico, prendiamo come esempio il coffee-shop Rituales (Circular 74 # 39B-22) a cui vado spesso a Laureles a Medellìn (Colombia). Le parole caffè, latte, cappuccino o affogato probabilmente non sarebbero comprese se non si potessero associare al dominio semantico coffee-shop. Interaction modelL'interaction model contiene intenti, enunciati, slot (sarebbe preferibile utilizzate il termine linguistico entities) a cui possiamo accedere cliccando dal menu di sinistra dalla tab JSON editor della interfaccia grafica di Alexa Developer console. Se modifichiamo il modello tramite la user interface (UI) in automatico cambia anche il file JSON e viceversa.
Se invece stiamo sviluppando la nostra skill da riga di comando con ASK CLI l'interaction model sarà all'interno della folder models:
Wakeword: conversational triggerLa wake word predefinita è "Alexa", ma può essere personalizzata nelle impostazioni del dispositivo. Al momento della scrittura, le parole sveglia disponibili sono "Alexa", "Amazon", "Echo" e "Computer". Un tipico esempio di comando potrebbe essere il seguente: La launch phrase dice ad Alexa di attivare una certa skill. Le frasi di lancio includono "ask", "launch", "start", "show" e molti altri. L'invocation name, come vedremo dopo, non per forza deve corrispondere al nome della skill da abilitare
L'utterance voglio tagliarmi i capelli oggi dice ad Alexa che cosa dovrebbe fare la skill, ma possiamo semplicemente lanciarla utilizzando la combinazione wake word + launch phrase senza intent o slot. Intents, slots e utterancesI ricercatori Bouzid e Ma (Don't make me tap, 2013) affermano che la progettazione di un efficace Vocal User Interface è legata alla capacità di definire un compromesso tra la flessibilità, data dal non limitare in modo eccessivo le risposte possibili dell’utente, e l’accuratezza che permette di “circoscrivere” il più possibile il linguaggio. Quando creiamo gl'intents e i relativi esempi dobbiamo ricordarci che un linguaggio troppo “ampio” può infatti portare più facilmente ad un errore da parte del sistema di riconoscimento, mentre la definizione di un linguaggio troppo “stretto” rischia di portare al contrario all’esclusione di risposte che l’utente potrebbe ragionevolmente fornire. Per creare un intento selezioniamo dalla tab Add (1) e poi Create custom intent (2) inserendo nella text-box (3) il nome che abbiamo scelto. Language annotationSe prendiamo l'utterance voglio tagliarmi i capelli oggi possiamo rintracciarne l'intento (l'obiettivo della richiesta) e l'entity. Ad esempio l'intento potrebbe essere quello di cercare un barbiere searchBarberShop e l'entity data:
La stessa utterance potrebbe essere rappresentata come: domani voglio tagliami i capelli.
In entrambi casi vediamo come domani, siano entities o slot di tipo DATA. Per Alexa uno slot è essenzialmente una variabile all'interno di un enunciato che cambia di richiesta in richiesta. Prendiamo un altro esempio di possibile utterance:
Lo scopo è una richiesta inerente al meteo quindi askWeather, ma il nostro utente potrebbe chiedere come località (loc) Milano, Parigi, Barcellona e anziché domani una data (dat) precisa come il 9 gennaio. La nostra notazione linguistica sarà molto simile a questa:
Sitografia[1] Tips and gotchas using Alexa custom slots Language data Bibliografia[1] Amber Stubbs, James Pustejovsky, Natural Language Annotation for Machine Learning, O'Reilly Media, 2012 |