I dati utilizzati per fare il training  di un modello in italiano per Alexa solitamente vengono annotati usando una rappresentazione semantica di dominiointent 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 model

L’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:


In caso avessimo modificato l’interaction model da editor visuale e stessimo sviluppando da console potrebbero nascere dei conflitti risolvibili con il comando:

Wakeword: conversational trigger

La 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 utterances

I 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 annotation

Se 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
[2] Alexa tell me how to build a skill
[3] Create intents utterances and slots
[4] Building an Amazon Alexa Skill? Here Are 7 Things You Need to Know
[5] Lessons learned moving from web to voice development
[6] Perché utilizzare le interfacce vocali e come progettarle

Language data
[1] Lambert Mathias, New Way to Annotate Training Data Should Enable More Sophisticated Alexa Interactions, Alexa Blog, 2018
[2] Penny Karanasou, Machine Translation Accelerates How Alexa Learns New Languages, Alexa blog, 2018

Bibliografia

[1] Amber Stubbs, James Pustejovsky, Natural Language Annotation for Machine Learning, O’Reilly Media, 2012
[2] Bouzid & Ma, Don’t Make Me Tap!: A Common Sense Approach to Voice Usability, CreateSpace, 2013