
Getting started: Watson Assistant
Watson è diventato famoso per la sua partecipazione a Jeopardy!, come abbiamo visto in questo articolo "Watson: alla ricerca di una nuova sfida", battendo i due più grandi giocatori di sempre: Ken Jennings e Brad Rutter. Avvia Watson AssistantWatson Assistant raggruppa la knowledge base del nostro chatbot sotto forma di una o più skills, che contengono le risorse necessarie per comprendere la richiesta dell'utente (NLU) e restituire la risposta migliore (Dialog). Quando l'utente scrive al chatbot, Watson Assistant attiva l'NLU per riconoscere l'intent e e le entiries estratte dalla frase dell'utente. Dopo questa analisi, vengono controllati i nodi del flusso di dialogo. Step 1- IBM cloud accountWatson Assistant fa parte del catalogo dei servizi IBM Cloud e per iniziare dobbiamo crearci un'account tramite questo link.
Step 2 - Create AssistantAssistant raggruppa la basi di conoscenza del nostro chatbot sotto forma di skills andando così a dare all'assistente una o più abilità (skills) per essere in grado di gestire i diversi scenari con l'utente.
Step 3 - Create Dialog SkillInfine progettiamo una finestra di dialogo in cui specifichiamo le risposte in base all'intenzione e alle entità dell'utente. Scegliamo il nome della skill (1) e dobbiamo fare molta attenzione a scegliere la lingua (3) corretta, perchè sarà la lingua di default del chatbot. Linguaggio naturaleWatson Asssistant per comprendere il linguaggio naturale, con cui l'utente esprime le sue richieste, dev'essere in grado di classificare gli intenti, riconoscere le entities, rilevare la irrilevanza di una richiesta e controllarne anche l'ortografia. Quando sono in Colombia Rituales (Circular 74 # 39B-22) è uno dei miei caffè preferiti a Medellìn per lavorare da remoto perchè silenzioso e tranquillo. In questo articolo avevamo già iniziato ad annotare i primi intents ed entities. Watson utilizza l'hashtag (#) per l'annotazione degli intents e il segno at (@) per le entities. Avevamo indentificato l'intent #orderCoffee per le richieste generiche di caffè:
e identificato due entities @types, @sizes per le richieste come:
#IntentsL'intent è l'obiettivo espresso nella richiesta del nostro utente, come richiedere l'acquisto di un caffè: #orderCoffee Affinché Watson riconosca gli intents dobbiamo fornire un numero sufficiente di esempi di richieste:
@EntitiesLe entities rappresentano gli oggetti del mondo reale, per gli sviluppatori l'idea che più ci si avvicina è quella di oggetto della programmazione orientata agli oggetti (OOP). Quando creiamo una nuova entity il fuzzy matching è attivo di default, ma possiamo disabilitarlo quando vogliamo. Questa feature migliora la capacità del chatbot di estrarre le entities nonostante la presenza di errori di ortografia o lievi differenze sintattiche. Ad esempio, se non abbiamo inserito il plurale di cappuccino @type:cappuccino nei sinonimi, ma l'utente digita cappuccini verrà ugualmente riconosciuto.
Se prendiamo l'utterance "potrei avere un caffè americano in una tazza media" oltre all'intent #orderCoffee dobbiamo creare un'entity per la tipologia del caffè @type.
Inoltre dobbiamo creare una entity @coffeeCupSizes per la misura del caffè richiesto dal cliente.
System entitiesWatson fornisce una serie di entities di sistema da utilizzare per popolare rapidamente la skill in casi come date, nomi di persone o luoghi. L'entity @sys-number rileva i numeri scritti in numero o in parole restituendo un valore numerico.
Python DatamodelsAdesso non ci resta che scrivere il codice in Python per fare la nostra prima richiesta a Watson, iniziamo con ottenere i dati dell'API facendo click sui settings dell'Assistant che abbiamo chiamato Coffee.
Request
Response
TestingNon avendo ancora configurato il Dialog di Watson per la gestione delle risposte il nostro chatbot risponderà alla richiesta di un caffé macchiato di non aver capito.
Dalla risposta possiamo vedere che viene riconosciuto correttamente l'intent legato alla richiesta di un caffé (#orderCoffee) e che ne vogliamo solo uno (@sys.number) e che sia un macchiato (@type).
Sitografia[1] Oliver Ivanoski, Beyond Coding: Watson Assistant Entities — Part 1, A Quick Overview, Medium, 2019[2] Oliver Ivanoski, Beyond Coding: Watson Assistant Entities — Part 3, System Entities, Medium, 2019 [3] Oliver Ivanoski, Beyond Coding: Watson Assistant Entities — Part 4, New System Entities, Medium, 2019 [4] Oliver Ivanoski, Beyond Coding: Watson Assistant Multiple Conditioned Responses, Medium, 2019 Documentazione ufficiale[1] Apidocs |