Menu
Menu
Contattaci
Il nostro settore richiede uno studio continuo e una forte attenzione all’innovazione. Incentiviamo quindi dei programmi formativi annuali per tutti i componenti del team, con ore dedicate (durante l’orario di lavoro) e serate formative sia online che in presenza. Sponsorizziamo eventi, sia come partner che semplicemente come partecipanti, e scriviamo articoli su quello che abbiamo imparato per essere, a nostra volta, dei divulgatori.
Vai alla sezione TeamSentiamo tanto parlare di intelligenza artificiale, machine learning e simili. Ma se volessimo provare con mano questi servizi, per capire la loro reale potenza di fuoco, ma allo stesso tempo non volessimo acquisire nuove competenze specifiche quali, ad esempio, data science o tecnologie collegate come ML .NET o Tensorflow?
Azure ci viene incontro e ci fornisce uno strumento chiamato Azure Cognitive Service.
È un servizio presente nella piattaforma Azure, composto da una serie di endpoint HTTP che rendono fruibili applicazioni di intelligenza artificiale. Il vero punto di forza di questa piattaforma è che lo sviluppatore ha a disposizione un ambiente già sottoposto a training, quindi allenato a rispondere in modo abbastanza coerente alle nostre richieste. Ho scritto “abbastanza” in quanto, trattandosi di intelligenza artificiale, una percentuale di errore è comunque sempre possibile.
La lista delle cose che si possono fare è veramente ampia. È possibile utilizzare funzionalità di riconoscimento del testo, immagini o video, categorizzazioni, OCR, riconoscimento facciale, traduzioni e molto altro.
Possiamo, in effetti, riunire i cognitive services in 5 macrocategorie di funzionalità:
I cognitive service si basano su vari servizi sempre presenti sulla piattaforma Azure, primo tra tutti Azure Machine Learning. Uno dei punti di forza dell’utilizzo dei cognitive service è che la loro gestione e manutenzione è tutta a carico di Microsoft. Inoltre ogni nuova funzionalità introdotta non comporterà la modifica del nostro codice (a patto di breaking changes, ovviamente).
Come vedremo più avanti, una volta che avremo scelto il servizio da utilizzare, non dovremo fare altro che chiamare l’apposito endpoint fornito ed inviare la nostra risorsa (audio, video o testo che sia). Il servizio ci risponderà con l’analisi sulla base dalla API utilizzata.
Altro punto a favore, già anticipato, è l’utilizzo di semplici endpoint per chiamare i servizi. Questo fa sì che essi siano interrogabili da qualsiasi piattaforma; l’unico vincolo è, ovviamente, la necessità di inviare una chiamata HTTP, poi il gioco è fatto. Se invece preferite utilizzare un SDK, nessun problema, Microsoft ha pensato anche a questo; sono disponibili SDK per i principali linguaggi di programmazione, che consentono di astrarre la costruzione delle chiamate.
Seguendo la TODO list scritta sopra andiamo ad utilizzare uno dei tanti servizi messi a disposizione.
Per prima cosa, apriamo il portare Azure, andiamo in “Create a Resource” e nella barra di ricerca cerchiamo “Cognitive Services” e premiamo su “Create”.
La schermata che ci verrà presentata ha lo scopo di farci creare una risorsa generica di cognitive services, in modo da poter andare ad interrogare una delle API relative alle 5 macrocategorie viste poco fa.
Inseriamo le informazioni richieste e proseguiamo.
Al termine dell’operazione di deployment della risorsa, rechiamoci nella sezione “Keys and Endpoint”. Da questa pagina dobbiamo annotarci alcune informazioni che utilizzeremo tra poco, ovvero:
La prima API che utilizzeremo è la Text Analitycs, tramite un client di API testing, in questo caso Postman. Il nostro scopo è utilizzare la funzione di “Analisi del sentiment”, per esaminare alcune recensioni scritte da utenti su un dato ristorante e determinarne il loro feedback. (nb: le recensioni sono assolutamente vere!)
Questo è ciò che dobbiamo inserire su Postman. Come è possibile notare, la Key viene inviata come Header della richiesta.
Mentre, nel body della richiesta, inseriremo le recensioni dei clienti seguendo come struttura l’oggetto che riporto sotto:
class Document
{
public string Id {get; set;}
public string Language {get; set;}
public string Text {get; set;}
}
Ovviamente per la buona riuscita è necessario inserire la lingua corretta con cui il testo è stato scritto.
E questo è ciò che viene restituito
Lo score è un punteggio che va da 0 ad 1, dove 0 identifica un sentiment completamente negativo, 1 ne indica uno completamente positivo, mentre valori attorno a 0,5 ne indicano uno neutro.
Per il nostro esempio ho scelto appositamente recensioni ai due estremi e il risultato è abbastanza soddisfacente.
La documentazione di Text Analytics la potete trovare sul sito Microsoft. Per la seconda applicazione, invece, utilizzeremo l’SDK fornito da Microsoft per utilizzare la funzionalità di analisi dell’immagine direttamente dalla nostra console application. NB: Potrete trovare questo progetto completo su GitHub, mentre qui di seguito saranno evidenziate solo le caratteristiche salienti.
Per utilizzare il servizio di Computer Vision, sarà necessario prima di tutto aggiungere una referenza Nuget del package Microsoft.Azure.CognitiveServices.Vision.ComputerVision al progetto. Il metodo Authenticate utilizza la key e l’endpoint che abbiamo utilizzato nell’esempio precedente. Questo metodo ci permette di creare il client che effettuerà le richieste.
Successivamente possiamo eseguire l’analisi dell’immagine. Nel progetto presente su GitHub sono esposte due modalità:
Il funzionamento è il medesimo, in quanto varia solo la sorgente del dato di input e il metodo da chiamare per effettuare la richiesta, per cui in questo articolo prenderemo in analisi solo il primo caso.
Il codice, come potete vedere, è molto semplice.
Nella prima parte viene definita una lista di feature che corrispondono alle funzionalità che vogliamo utilizzare. Nel nostro caso abbiamo tutte le feature disponibili.
Nella seconda parte, invece, viene chiamato il metodo che effettuerà la richiesta HTTP per l’analisi dell’immagine e ciò che genererà sarà un oggetto di tipo ImageAnalysis contenente tutte le “risposte” in base alle feature aggiunte precedentemente.
Per ogni feature sarà presente la proprietà “confidence” che indica il livello di attendibilità della risposta stessa. Il valore è compreso tra 0 ed 1, più si avvicina all’estremo superiore e più la risposta sarà attendibile. L’immagine utilizzata è questa: [http://www.giuneco.tech/wp-content/uploads/2018/04/banner_sottile1.jpg]
Questa è la risposta che si riceve. Per semplicità vi mostro solo una delle risposte anche se ho selezionato precedentemente tutte le feature disponibili (clonate il progetto su GitHub per vedere tutte le altre risposte).
Le opportunità sono veramente molteplici e non era possibile mettere tutto in questo articolo :); adesso è il vostro turno di sperimentare tutto ciò che mette a disposizione Azure Cognitive Services e trovare quello che fa per voi.
NB: rischiate di passarci veramente tante ore ma, forse, è proprio questo il bello!
Vi lascio un po’ di documentazione utile, fatene buon uso!
https://azure.microsoft.com/en/services/cognitive-services/
https://docs.microsoft.com/en/azure/cognitive-services/
Segui Giuneco sui social