Gennaio 2017
Volume 32 Numero 1
Il presente articolo è stato tradotto automaticamente.
Servizi cognitivi - Abilitare l'interazione del linguaggio naturale con LUIS
Da Sahu Ashish
Il panorama tecnologico è piuttosto radicalmente modificato negli ultimi anni. Capacità di elaborazione spostato da PC a Smartphone e wearables, durante l'aggiunta di ulteriori potenzialità a questi dispositivi. Questo progressi nella tecnologia cambiata anche la modalità di che interazione con i dispositivi. Le tastiere fisiche sono state sostituite con le implementazioni di software e i metodi di input modificati da stilo a un semplice tocco delle dita. Si trattava solo di tempo prima che abbiamo iniziato a cercare soluzioni ancora più agevole per interagire con i dispositivi di elaborazione.
Riconoscimento vocale è come abbiamo interagiscono tra loro e si è al limite di utilizzo del riconoscimento vocale per interagire anche con tutti i dispositivi smart Device. Il recente lancio di Framework Bot e i servizi cognitivo in occasione della conferenza Build 2016 è un passo verso tale visione. Tra questi incredibili servizi cognitivi, Language comprensione Intelligence servizio (LUIS) fornisce le funzionalità per comprendere la query in linguaggio naturale e restituire informazioni utilizzabili che è possibile associare il codice per migliorare l'esperienza utente.
In questo articolo, sarà esplorare le funzionalità di LUIS ed esaminare modi diversi, che è possibile utilizzarlo in App e servizi.
Come LUIS funziona?
LUIS si basa sull'apprendimento interattivo e la ricerca di informazioni sui language da Microsoft Research. Il libro "Machine Learning" (McGraw Hill, 1997) da Tom Mitchell definisce come l'apprendimento:
"Un programma viene detto imparare a eseguire un'attività T dall'esperienza E, se le prestazioni a task T, misurato attraverso una metrica di prestazioni P, risulta migliorata con esperienza E nel tempo."
Come qualsiasi altro computer paradigma di formazione, LUIS è un'iterazione di questo concetto. Usa un modello di lingua e un insieme di esempi di training per analizzare lingua parlata e restituire solo le parti interessanti, come gli sviluppatori, consente di soddisfazione degli utenti.
Con LUIS, oltre a utilizzare il proprio modello di linguaggio specifici, è anche possibile sfruttare la stessa preesistenti e predefiniti dei modelli di lingua utilizzati da Bing e Cortana.
LUIS dispone di un caso di utilizzo molto specifico, è possibile sfruttare LUIS ovunque sia necessario per consentire agli utenti di interagire con le applicazioni tramite riconoscimento vocale. La maggior parte delle assistenti digitale, il riconoscimento vocale App/dispositivi e Bot rientrano in questa categoria, ma è inoltre possibile utilizzare la propria immaginazione.
In cui è possibile utilizzare LUIS?
L'utilizzo di LUIS con App e dei servizi richiede la configurazione iniziale. Il compito che è necessario completare è costituito da comprendere lo scenario e prevede l'interazione che sarà eseguite tra le applicazioni e gli utenti. La comprensione e previsione l'interazione consentirà di compilare il modello di lingua da utilizzare con LUIS e ideare l'espressione naturale base per il training LUIS per analizzarli.
Modelli di lingua
Modelli di lingua sono specifici per le applicazioni LUIS. Costituiscono la base di comprendere che cosa significa gli utenti si sono comunicare con le tue applicazioni e servizi. Esistono due componenti principali di un modello di lingua-"intenti" e "entità". LUIS applicazione utilizza i tipi e le entità per elaborare la query in linguaggio naturale e derivare lo scopo e gli argomenti di interesse per gli utenti con gli esempi di training, denominati anche "utterances". Le applicazioni LUIS contengono sempre un intento predefinito denominato "None". Questa finalità viene eseguito il mapping di tutti i utterances che non è stato eseguito il mapping a eventuali altri scopi. Nel contesto di un'app, intenti sono azioni che intende eseguire mentre le entità ottengano filtrate per gli argomenti che le tue applicazioni e servizi progettati per gestire gli utenti.
Un esempio per comprendere meglio questo meccanismo, è possibile immaginare un'app di acquisti e il modello seguente:
"intents": [
{
"name": "ShowItems"
}
{
"name": "BuyItems"
}
],
"entities": [
{
"name": "Item"
}
]
La maggior parte del tempo trascorso in un'app acquisti potrebbe essere con articoli in vendita e quando un utente simile al seguente: "Mostrami sciarpe rosso," il modello assocerà questo emissione ShowItems come i preventivi e rossi sciarpe all'elemento di entità. Allo stesso tempo, è possibile eseguire il mapping di un'espressione per lo scopo di BuyItems e quindi avviare il processo di estrazione quando qualcuno afferma, "Mi piacerebbe paga adesso."
Intenti
Intenti LUIS inoltre supportano l'associazione di azione, che consente di associare i parametri di tipi. Intenti utilizzabili attivano solo se questi parametri vengono specificati, nonché. In particolare, quando si utilizza l'associazione di azione con robot, LUIS possono eseguire query i parametri degli utenti in modo interattivo.
Sulla base di esempi e learning active, LUIS avvia rileva i tipi nelle query di registrazione. Tuttavia, poiché la query in linguaggio sono difficile per le applicazioni per computer, LUIS anche punteggi li compreso tra 0 e 1 per indicare la propria fiducia; ambito di livello superiore indica maggiore confidenza.
Entità
Le entità LUIS, come indicato di seguito, sono gli argomenti di interesse per gli utenti. Se si sta creando un'app di notizie, verranno eseguito il mapping di entità per gli argomenti di notizie e in caso di App meteo, corrispondono a posizioni nel loro iterazioni molto semplice.
Formazione active LUIS avvia inoltre visualizzati quando si aggiunge una nuova espressione e visualizzare le entità appropriate con colori diversi per mostrare visivamente i mapping.
Entità possono avere elementi figlio ed è possibile mappare in modo indipendente ognuno di essi a singole parti di utterances. È inoltre il supporto per le entità composte, ovvero una raccolta di caratteristiche che collettivamente porre le basi per una singola entità.
Per una migliore comprensione, un'entità denominata "Veicoli" può contenere le entità figlio chiamate "Auto" e "SUVs", tra gli altri nomi. Questa relazione consente di eseguire il mapping di più entità in una categoria di dimensioni maggiore. In caso di "Entità composta", le singole parti sarebbero identificano una singola entità con le varie proprietà dell'elemento. Ad esempio, per un'entità composita denominata Car è 2016 nero Ford Mustang, costituito da anni, colore, le informazioni di marca e modello.
Entità predefinite
Analogamente ai tipi di dati in qualsiasi linguaggio di programmazione, il servizio LUIS include un set di entità per un numero di entità comuni, pertanto non è necessario passare a pensare a ogni termine possibili che gli utenti possono generare si. Alcuni esempi includono varianti più comuni di data, ora, numeri e le entità geografiche. È possibile includere le entità predefinite nell'applicazione e utilizzarli nelle attività delle etichette. Tenere presente che non venga modificato il comportamento delle entità preesistente.
Un elenco completo di entità predefiniti sono reperibili nella documentazione di LUIS.
Sebbene sia possibile aggiungere numerosi tipi e le entità (e preesistenti) nel modello, è una precisazione per mantenerla semplice e precisa. È possibile iniziare con il più ovvio utterances e aggiungere più di esse per renderlo più naturale per gli utenti. Tuttavia, tenere presente che alcune riflessioni prima l'esperienza che si desidera compilare può risultare molto utile nel migliorare l'esperienza utente e in continua evoluzione ulteriormente l'esperienza. Se non pianificare in anticipo e modificare tipi o le entità nei modelli, è necessario assegnare un'etichetta tutti l'emissione e training del modello tutto nuovo.
Torniamo compilazione qualcosa!
È necessario generare un oggetto e richiedere una marcia con LUIS. In questo articolo, prenderò in un'applicazione di inventario. Sarà compila un modello di lingua utilizzando i tipi e le entità, il training del modello e utilizzarlo in un componente con il Framework di Bot e un'app universale Windows piattaforma UWP () con l'endpoint REST che LUIS espone usare tutte le funzionalità.
Per semplicità, si intende gestire un inventario di vestiti. In primo luogo, accedere al portale di LUIS al luis.ai e creare una nuova applicazione.
Vale a dire un'applicazione di inventario, si utilizzerà per tenere traccia dell'inventario delle scorte e a tale scopo, l'intento prima che si desidera aggiungere è ListItems. Viene eseguito il mapping questa finalità per tutti i utterances in cui l'obiettivo dell'utente consiste nel richiedere l'inventario nel suo insieme o per un elemento.
Quando si crea l'obiettivo, l'applicazione LUIS richiederà anche per un'espressione di esempio. Questa espressione è la prima query in linguaggio naturale per attivare questa finalità. Fare clic sul pulsante "+" accanto a "Intenti" e aggiungere il nome dell'intento di come "ListItems." L'espressione di esempio si manterrà semplice: "Mostra l'inventario."
Salvare questa finalità è possibile passare l'espressione"nuovo" dello schermo. Figura 1 Mostra l'espressione di esempio con l'intento di ListItems mappato all'interno del menu a discesa accanto a esso.
Figura 1 esempio di espressione e finalità
Fare clic sul pulsante Invia per aggiungere questa espressione per l'applicazione LUIS. Prima di avviare LUIS rilevarli alle proprie esigenze, è necessario aggiungere più di tali utterances per comprendere LUIS i tipi in modo più accurato. Tenere presente che il utterances deve progetto lo stesso scopo a quello della figura 1, ma allo stesso tempo, è necessario che gli utenti diranno naturalmente quando si richiede scorte: "Mostrami stock" viene in mente.
Dopo aver aggiunto due utterances all'applicazione, fare clic sul pulsante Esegui training nell'angolo in basso a sinistra per vedere se l'applicazione LUIS ha informazioni sufficienti per capire quando attivare l'intento di ListItems. Il framework attiva anche periodicamente in modo autonomo, il training. Training del modello dopo aver aggiunto alcuni esempi consentono di identificare eventuali problemi con il modello in anticipo e intraprendere azioni correttive. Poiché framework LUIS offre formazione attiva, è possibile sfruttare formazione come l'espressione di esempio verrà considerato equivalente automaticamente per l'utente quando vengono aggiunti.
Procedendo con l'applicazione, è naturale per richiedere l'inventario di alcuni elementi che sta stoccaggio, anche informazioni sugli esempi, ad esempio "Mostra le scorte di sciarpe rossi" ed "shirts quanti sono presenti in magazzino?"
Tuttavia, queste query sono diverse da quelle che aggiunte finora. Queste query contengono i termini "rosso sciarpe" e "shirts." Questo significa che oltre all'intenzione, ListItems, per restituire i risultati corretti nuovamente agli utenti. È necessario un'entità denominata "Item", che verrà eseguito il mapping di questi termini per aggiungere ulteriori intelligence nel modello di linguaggio.
È possibile aggiungere questi utterances all'applicazione LUIS ed etichettare le entità in un secondo momento, ma in questo caso, si aggiungeranno entità e quindi la utterances. Fare clic sul pulsante "+" accanto a entità e denominare l'elemento entità.
A questo punto, è possibile aggiungere tali query menzionato in precedenza e contrassegnarli con l'intento e l'entità nello stesso momento. A tale scopo, è sufficiente aggiungere l'emissione e se lo scopo non è già stato eseguito il mapping con un punteggio, selezionare l'intento di pertinente e scegliere il termine "shirts" per eseguirne il mapping con l'elemento entità.
Selezionare l'elemento dall'elenco per assegnare un'etichetta un elemento. Aggiungere un altro esempio già citato in precedenza, ovvero "Mostra le scorte di sciarpe red", anziché semplicemente "sciarpe" il mapping, selezionare "red" e "sciarpe" sia come elemento di entità. Nota: Un browser preferito, bordo, non è possibile selezionare più parole nel portale di LUIS. A tale scopo, usare qualsiasi altro browser di propria scelta.
Si noti inoltre che il termine "rosso sciarpe" rientra nella categoria di entità composta in quanto indicano una singola entità insieme, sciarpe, che hanno il rosso in essi contenuti. Come illustrato in precedenza, le entità composta sono costituite da più parti ma rappresentano un'unità dell'oggetto, ad esempio "scarpe neri" e "2016 Ford Mustang" sono facili. Tuttavia, per semplicità, si intende considerarli come una singola entità.
Il nuovo training del modello e vedere se la formazione active in LUIS interviene. Ora provare ad aggiungere un'espressione, ad esempio, "portafogli quanti sono presenti in magazzino," o "Mostra le scorte di pantaloni."
Il risultato potrebbe essere interessante. Si noti che il termine "portafogli" viene mappato all'elemento entità ma non "pantaloni". Non gravi, significa semplicemente che LUIS deve alcuni altri esempi di utterances che seguono lo stesso modello. A tale scopo, eseguire il mapping "pantaloni" all'elemento entità ed eseguirne il training del modello ancora una volta.
Per eseguire i test, provare ad aggiungere "Mostra le scorte di shirts red" o "Mostra le scorte di pantaloni" e verificare che per i tipi di destra e le entità vengono mappati pantaloni e shirts rosso. Mi auguro che il chilometraggio non varia finora.
Utilizzando la sezione Suggest nel portale, è possibile ottenere anche suggerimenti dai registri Cortana per le entità e i singoli tipi.
Una volta le entità intenti recupero mappate correttamente, è possibile spostare alle fasi di un viaggio in LUIS successive.
Con App reali LUIS
Questa applicazione LUIS non è utile per gli utenti. è necessario connettersi a questa applicazione da App e dei servizi. Poiché l'applicazione LUIS viene esposta tramite gli endpoint REST e le risposte vengono restituite in formato JSON, è possibile utilizzare servizi LUIS da qualsiasi piattaforma o linguaggio di programmazione che possono connettersi utilizzando il protocollo HTTPS e analizzare le risposte JSON.
Nota: Il portale LUIS espone inoltre le funzionalità di esportazione da parte di "My Application", che consente di esportare l'applicazione LUIS come documento JSON per apportare modifiche offline e importarlo nuovamente. In combinazione con le APIs LUIS e il SDK di c#, è possibile integrare LUIS nelle procedure di DevOps.
È inoltre necessario pubblicare l'app LUIS prima di iniziare una chiamata da applicazioni, che è semplice come ottiene: È sufficiente fare clic sul pulsante pubblica e fare nuovamente clic sul pulsante Pubblica sito Web del servizio.
Si noti che l'URI dell'endpoint REST include anche l'ID applicazione LUIS e la chiave di sottoscrizione. Proteggere queste informazioni come si farebbe di altre credenziali, come avviene in caso contrario causare interruzioni del servizio e avere un impatto finanziario.
Dopo aver pubblicato l'applicazione, sarà possibile eseguirne il test digitando un altro esempio nella casella di input della Query e l'accuratezza del modello. Provare a immettere "ties quanti sono presenti le scorte?" e premere INVIO sulla tastiera.
Si aprirà una nuova finestra del browser e si deve ottenere una risposta nel formato JSON, come illustrato nel figura 2.
Figura 2 test dell'App LUIS
{
"query": "how many ties do we have in the stock?"
"intents": [{
"intent": "ListItems",
"score": 0.9999995
}, {
"intent": "None",
"score": 0.0582637675
}],
"entities": [{
"entity": "ties",
"type": "Item",
"startIndex": 9,
"endIndex": 12,
"score": 0.903107
}]
}
La risposta include la stringa di query passata all'app LUIS, insieme ai tipi e le entità rilevate nella query. È inoltre incluso le informazioni di assegnazione dei punteggi singoli per ognuno di essi. Questi punteggi sono importanti perché sono diretti indicatori di prestazioni del modello di lingua e la formazione. Quando si aggiunta ulteriori emissione e apportare modifiche al modello, questa finestra di dialogo inoltre offre un'opzione per pubblicare gli aggiornamenti. Aggiornamento dell'applicazione LUIS dopo ogni sessione di formazione è importante perché sarà continuare a utilizzare il modello di training precedenti e la risposta dall'endpoint HTTP rinvieranno dalle aspettative.
Analisi delle prestazioni del modello di linguaggio
Aggiunta troppo numerose variazioni del linguaggio possono causare errori e potrebbe richiedere di modificare il modello di linguaggio. Per risolvere questi problemi, il portale LUIS include una sezione di analisi delle prestazioni. È possibile utilizzare questa sezione per comprendere il comportamento dell'app LUIS se si desidera rilevare le entità e tipi. È possibile ottenere una panoramica delle prestazioni con codifica a colori di tutti i tipi e le entità in questa sezione.
A seconda di formazione, esempi e modello di lingua utilizzato, l'app LUIS può essere eseguita anche problemi in cui non è in grado di mappare correttamente intenti o entità. Potrebbe inoltre essere casi in cui l'aggiunta di più tipi di espressione crea confusione TFS TFS servizio LUIS. Questi problemi possono essere facilmente rilevati con le prestazioni di drill-down usando l'analisi delle prestazioni. Menu a discesa consente inoltre di eseguire il drill down in analisi dei singoli finalità e le entità.
È inoltre possibile ottenere informazioni simili per le entità nel modello di linguaggio.
Queste informazioni, con la sezione di etichette di revisione del portale, consentono di esaminare e analizzare tutti gli errori con il modello di linguaggio.
Chiamata LUIS da app UWP/ASP.NET c#
Se si sta creando un'app UWP o un'applicazione Web ASP.NET utilizzando c#, è possibile utilizzare le classi indicate nel figura 3 per deserializzare la risposta JSON.
Figura 3 classi per deserializzare la risposta JSON
public class LUISResponse
{
public string query { get; set; }
public lIntent[] intents { get; set; }
public lEntity[] entities { get; set; }
}
public class lIntent
{
public string intent { get; set; }
public float score { get; set; }
}
public class lEntity
{
public string entity { get; set; }
public string type { get; set; }
public int startIndex { get; set; }
public int endIndex { get; set; }
public float score { get; set; }
}
Il codice in figura 4 nel linguaggio c# UWP o ASP.NET app può utilizzare queste classi per ottenere le informazioni sulla finalità e le entità.
Figura 4 codice usato per ottenere informazioni sulle entità e finalità
private async Task LUISParse(string queryString)
{
using (var client = new HttpClient())
{
string uri =
"https://api.projectoxford.ai/luis/v1/application?id=<YOUR LUIS APP ID>
&subscription-key=<YOUR LUIS APP KEY>&q=" + queryString;
HttpResponseMessage msg = await client.GetAsync(uri);
if (msg.IsSuccessStatusCode)
{
var jsonResponse = await msg.Content.ReadAsStringAsync();
var _Data = JsonConvert.DeserializeObject<LUISResponse>(jsonResponse);
var entityFound = _Data.entities[0].entity;
var topIntent = _Data.intents[0].intent;
}
}
}
In base alle esigenze, è possibile eseguire la risposta tramite un ciclo per estrarre più entità di tipi diversi, nonché informazioni sul punteggio intenti rilevato nella stringa di query.
Con Framework Bot LUIS
Se si utilizza il Framework Bot per compilare un robot e desiderano per utilizzare LUIS aggiungere intelligence linguaggio naturale, sarà lieti di sapere che lo spazio dei nomi Microsoft.Bot.Builder nel SDK Bot rende estremamente semplice per connettersi con l'applicazione LUIS e filtrare i tipi e le entità. In MessageController della soluzione Bot Framework, aggiungere la riga seguente per indirizzare tutti i messaggi in ingresso alla classe denominata LuisConnect:
await Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync(activity,
() => new LuisConnect());
Aggiungere un file di classe denominato LuisConnect.cs nel progetto e modificare il codice, come illustrato nella figura 5.
Figura 5 aggiunta la classe File LuisConnect.cs
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using Microsoft.Bot.Connector;
namespace BotApp2
{
[LuisModel("<application-id>", "<subscription-key>")]
[Serializable]
public class Luis : LuisDialog<object>
{
[LuisIntent("")]
public async Task None(IDialogContext context, LuisResult result)
{
stringmessage =
"I’m sorry I didn't understand. Try asking about stocks or inventory.";
await context.PostAsync(message); context.Wait(MessageReceived);
}
[LuisIntent("ListItems")]
public async Task ListInventory(IDialogContext context, LuisResult result)
{
string message = "";
if (result.Entities.Count != 0 && result.Intents.Count 0 )
message = $ "detected the intent \ "{ result.Intents[0].Intent}\"
for \"{result.Entities[0].Entity}\". Was that right?";
wait context.PostAsync(message); conext.Wait(MessageReceived);
}
public async Task Start Async(IDialogContext context)
{
context.Wait(MessageReceived);
}
}
}
Eseguire bot in locale e provare a porre domande, ad esempio, "mostrano le scorte di shirts," oppure "quanti cinture di sicurezza sono presenti in magazzino?" ed è necessario ottenere le risposte appropriate con i tipi ed entità di eseguire il backup da bot.
La parte più interessante il codice in figura 5 che è stato sufficiente etichettare i metodi con [LuisIntent] e il SDK si occupa di richiamare l'applicazione LUIS e ottenere risultati dal servizio LUIS. Questo rende molto rapido e semplice iniziare ad aggiungere le informazioni di linguaggio nelle applicazioni.
Rendendo migliore
L'obiettivo di questo articolo è di acquisire dimestichezza con il funzionamento dell'integrazione e LUIS quindi ho utilizzato esempi molto semplici. Sono disponibili due ulteriori funzionalità LUIS associati per semplificare la vita: Funzionalità di espressione regolare ed elenco frasi.
Proprio come suggerisce il nome, la funzionalità Regex consente in corrispondenza di un modello ricorrenti nelle frasi, ad esempio i codici di prodotto. La funzionalità elenco frasi è utilizzabile come un elenco di parole o frasi intercambiabile per cercare il utterances. Ad esempio, nell'applicazione è necessario utterances avviata con "Mostra le scorte," "Find me le scorte," "Quanti" e così via. Aggiunta di tali espressioni in un elenco di frasi chiamato InventoryQueries all'inizio rimuoverà la necessità di eseguire il training del modello con ulteriori esempi di questi utterances separatamente. Lo lascio che si desidera esplorare ed esperienza.
il futuro
Il LUIS offerta è pronto per essere utilizzata nelle applicazioni ma risulta comunque essere migliorata e spesso vengono aggiunte nuove funzionalità. Sono disponibili alcune funzionalità che non vengono trattate in questo portale, ma sono disponibili per l'anteprima pubblica. Sono interessanti e ancora in fase di sviluppo:
- Integrazione con i Bot Framework e il margine di flessibilità: È possibile provare questo quando si pubblica l'app LUIS nel portale di anteprima. Questa integrazione consente di integrare rapidamente LUIS con Microsoft Bot Framework e il margine di flessibilità.
- Finestra di dialogo supporto: Finestra di dialogo supporto in LUIS consente di aggiungere intelligence parlato nell'applicazione LUIS in modo che può richiedere per ulteriori informazioni dagli utenti in modo autonomo se la query richiede più informazioni fornite dagli utenti inizialmente. Ad esempio, un'app di volo può richiedere una data di viaggio se l'utente richiede informazioni di volo con il nome di città
- Evasione di azione: Questa funzionalità consente di soddisfare le azioni attivate dall'utente utilizzando il canale incorporato e personalizzato direttamente dall'app LUIS.
Queste funzionalità sono interessanti e consentono l'interazione più naturale conversazione all'interno dell'applicazione con un minimo sforzo. Hanno bisogno di esplorazione di profondità in modo indipendente e spero che l'operazione che.
Conclusioni
Mi auguro che ora comprendere cosa può fare LUIS per si e facilmente come è possibile iniziare a sfruttare in modo da aggiungere un elemento di interazione umana con i più naturale per le applicazioni.
In questo articolo è verificato un tramite le nozioni di base del servizio LUIS. È creata un'applicazione LUIS, compilato e sottoposto a training del modello di lingua in consentono di comprendere che cosa significa gli utenti si chiedono qualcosa. Ho inoltre esaminato i modi in cui questa applicazione LUIS può essere utilizzata da applicazioni, servizi Web e in tuoi robot. Un progetto di esempio che contiene il modello LUIS, app UWP e il codice di esempio bot citati in questo articolo sono disponibili in GitHub all'indirizzo bit.ly/2eEmPsy.
Ashish Sahuè un senior technical evangelist, utilizzo di esperienza dello sviluppatore in India, Microsoft e aiutare gli ISV e neo-imprese di superare le difficoltà tecniche, adottare le tecnologie più recenti e sviluppare le proprie soluzioni a livello successivo. È possibile contattarlo all'indirizzo ashish.sahu@microsoft.com.
Grazie al seguente esperto tecnico Microsoft per la revisione dell'articolo: Srikantan Sankaran
Srikantan Sankaran è un technical evangelist del team di DX in India, in base all'esterno di Bangalore. Egli funziona con numerosi fornitori di software indipendenti in India e consente di progettare e distribuire le soluzioni in Microsoft Azure.