Contattaci

Azure Cognitive Service

  • Data: 22 Aprile 2022
  • Autore: Mihai Flore
  • Categorie

  • Giuneco Tech

    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 Team
  • Con il termine Azure Cognitive Services, vengono indicati dei servizi cloud con API REST ed SDK, ovvero delle librerie client disponibili per integrare l’intelligenza cognitiva nelle api; questi ci permettono di integrare funzionalità cognitive nelle applicazioni, senza la necessità di competenze di intelligenza artificiale, Machine Learning o Data Science.

    Forniscono il supporto per una vasta gamma di applicazioni e, includendo vari servizi, permettono di creare soluzioni cognitive in grado di visualizzare, ascoltare, parlare, comprendere e persino prendere decisioni. Ad oggi sono in funzione più di 20 Servizi Cognitivi di Azure.

    Essi vengono suddivisi in 5 categorie, che sono le seguenti.

    • Visione
    • Voce
    • Lingua
    • Decisione
    • Ricerca

    Visione

    Tale categoria fornisce gli strumenti adeguati all’estrazione dei dati dalle immagini. Riconoscimento facciale, rilevamento di oggetti, rilevamento del testo sono solo alcune funzionalità che vengono offerte. Esse sono il risultato di modelli di riconoscimento delle immagini di deep learning, che possono anche essere personalizzati per il riconoscimento di oggetti particolari in immagini e video.

    Questa categoria comprende i seguenti servizi:

    Api Viso

    Rileva e identifica persone ed emozioni nelle immagini, incorporando il riconoscimento facciale. Include il rilevamento del volto, che percepisce le caratteristiche e gli attributi del viso (tra cui per esempio occhiali o posizione del viso). In un’immagine identifica la persona in base alla corrispondenza del ID facciale. I vantaggi sono quelli di avere un riconoscimento facciale avanzato, verificando l’identità o controllando l’accesso con riconoscimento volto. Semplice nell’utilizzo in quanto ha bisogno solamente di una chiamata all’api. Mantiene il controllo esclusivo sui dati ed incentiva la sicurezza.

    Visione Artificiale

    Analizza il contenuto delle immagini e dei video, incrementando l’individuabilità dei contenuti, automatizzando l’estrazione del testo, analizzando in tempo reale e creando eventualmente prodotti che possano essere utilizzati da altri utenti. Utilizza funzionalità di elaborazione dati visivi. Permette di estrarre il testo stampato o scritto a mano da immagini e documenti. Esegue il pull da un’ontologia avanzata di più di 10.000 concetti e oggetti per generare valore dagli asset visivi. Analizza il modo in cui le persone si muovono in un determinato spazio in tempo reale, inoltre utilizza una distribuzione flessibile.

    Visione personalizzata

    Personalizza il riconoscimento delle immagini per adattarlo alle esigenze del proprio business. Incorpora l’analisi all’avanguardia delle immagini e ottimizza i processi produttivi, permettendo di accelerare le campagne di marketing digitale. Inoltre, permette una personalizzazione in base allo scenario e consente di creare con facilità il proprio modello, di ottenere una distribuzione flessibile e di incorporare la sicurezza.

    Voce

    La categoria Voce nei Servizi Cognitivi di Azure permette di tradurre la sintesi vocale in tempo reale in numerose lingue. I modelli vocali inoltre possono essere personalizzati in base alla necessità di particolari ambienti acustici. Tutti i servizi che vengano forniti in Speech sono Speech to Text o Text to Speech.

    Comprende i seguenti servizi:

    Riconoscimento Vocale

    Trascrive in modo rapido e accurato l’audio in più di 100 lingue e varianti. Può personalizzare i modelli per migliorare l’accuratezza per terminologia specifica di dominio. I suoi vantaggi sono quelli di ottenere trascrizioni accurate da audio a testo con riconoscimento vocale all’avanguardia e di avere una distribuzione flessibile ovvero di eseguire riconoscimento vocale ovunque, sul cloud o nella rete perimetrale.

    Sintesi Vocale

    Consente di ottenere una sintesi vocale fluida e realistica con la stessa intonazione delle voci umane. Permette di creare voci esclusive che possano rispecchiare l’identità di un marchio. Può perfezionare l’output vocale per diversi scenari, modificando con facilità la velocità, la tonalità, la pronuncia, le pause ed altri fattori. Permette di eseguire sintesi vocale ovunque; sul cloud, in locale oppure nella rete perimetrale.

    Traduzione Vocale

    Si basa sulla tecnologia della traduzione automatica neurale. Offre traduzione leggibili con un motore sottoposto a training per normalizzare l’output vocale, inoltre, oltre ad gestire modelli personalizzabili, permette anche un’accurata sicurezza e gestione della privacy, dato che l’input non viene salvato durante l’elaborazione.

    Riconoscimento del parlante

    Aggiunge funzionalità di riconoscimento vocale alle applicazioni. Include varie capacità, come la conversione della voce in testo scritto, la sintesi vocale, la traduzione vocale e altro ancora.

    Lingua

    Grazie ai servizi nella categoria Lingua di Azure Cognitive Services, i testi possono essere compresi, analizzati e tradotti. Le attività QnA possono essere automatizzate con l’utilizzo delle FAQ al chatbot interattivo. Grazie ad alcuni servizi di Lingua possono essere utilizzate delle frasi chiave per analizzare il testo e comprendere i commenti dell’utente.

    Comprende i seguenti servizi:

    Riconoscimento delle entità

    Identifica i termini comunemente utilizzati e specifici del dominio, rilevando termini e frasi chiave, comprendendo i sentimenti e dando la possibilità di creare interfacce di conversazione. Utilizza funzionalità all’avanguardia, alimentate da una rivoluzionaria ricerca sull’IA e modelli multilingue che si addestrano una volta e poi vengano utilizzati in altre lingue. Utilizza un’interfaccia visiva per annotare, addestrare, valutare e distribuire i modelli. Garantisce, infine, adeguata sicurezza sui dati.

    Analisi dei sentimenti

    Rileva automaticamente sentimenti e opinioni dal testo. Identifica termini e frasi chiave, comprendendo i sentimenti; fondamentale nella creazione di un’interfaccia di conversazione nelle applicazioni. Annota, addestra, valuta e distribuisce modelli personalizzabili. Utilizza funzionalità all’avanguardia, alimentate da una rivoluzionaria ricerca sull’IA e modelli multilingue che si addestrano una volta e poi vengono utilizzati in altre lingue. Utilizza un’interfaccia visiva per annotare, addestrare, valutare e distribuire i modelli. Garantisce, infine, adeguata sicurezza sui dati.

    Risposta alle domande

    Crea un livello di domande conversazionali sui dati esistenti, con la risposta alle domande stesse. Crea un knowledge base estraendo domande e risposte anche da contenuti semistrutturati, tra cui domande frequenti, manuali dei prodotti, linee guida ed altri tipi di documenti. Utilizza la knowledge base con suggerimenti per domande alternative, aggiungendo e rifiutando gli elementi in base alla loro rilevanza. Permette di creare, modificare ed eseguire il training di conversazioni a più turni complesse con facilità nel nuovo Language studio o nelle API REST. Inoltre, permette di creare e pubblicare bot.

    Language Understanding

    Permette di compilare applicazioni che comprendono il linguaggio naturale per interpretare gli obbiettivi dell’utente ed estrarre informazioni chiave dalle frasi della conversazione. Crea modelli personalizzabili di classificazione delle finalità e di estrazione delle entità per parole chiave o frasi specifiche del dominio. I suoi vantaggi sono quelli di semplificare la creazione l’etichettatura e la distribuzione per i modelli personalizzati, ovviamente non richiede la conoscenza di Machine Learning, è configurabile per restituire la migliore risposta da applicazioni in più lingue, utilizza funzionalità di sicurezza e privacy applicate ai dati ed ai modelli di training.

    Traduttore

    Rileva e traduce più di 100 lingue e dialetti. Supporta un’ampia gamma di casi d’uso, come traduzione per call, agenti conversazionali multilingue o comunicazioni in app. I vantaggi sono l’ampio supporto multilingua, la creazione di modelli personalizzati per gestire la terminologia specifica del dominio, la semplicità d’uso e la sicurezza.

    Decisione

    Gli utenti e le aziende possono ottenere un utile supporto con la categoria decisionale dei Servizi Cognitivi di Azure. Grazie a questi servizi, possono essere facilmente costruite applicazioni che forniscano raccomandazioni informate con un processo decisionale efficiente. I servizi personalizzati possono adattare l’esperienza utente caso per caso, rendendola più coinvolgente, pertinente e peculiare, aumentando così la soddisfazione e l’usabilità dell’app.

    Comprende i seguenti servizi:

    Content Moderator

    Rileva contenuti o immagini potenzialmente offensivi o indesiderati. Utilizza classificatori per il rilevamento e filtri per il contenuto potenzialmente volgare in più di 100 lingue, contrassegnando testo che potrebbe essere inadeguato, anche in base al contesto.

    Personalizzazione esperienze

    Crea esperienze personalizzate avanzate per ogni tipologia di utente. Migliora la conversione e l’engagement e aggiunge rilevanza in tempo reale alle raccomandazioni di prodotto, grazie all’utilizzo di funzionalità basate sull’apprendimento. Utilizza modalità specifiche per verificare se

    possono essere generate esperienze corrispondenti alla soluzione esistente dell’utente. Monitora e modifica il ciclo di apprendimento in base ai parametri e indicatori KPI indicati dall’utente.

    Rilevamento anomalie

    Identifica immediatamente i potenziali problemi selezionando l’algoritmo di rilevamento anomalie ottimale per i dati specifici, in modo da assicurare una precisione elevata. Rileva picchi, flessioni, deviazioni dai criteri ciclici e modifiche alle tendenze tramite API univariate e multivariate. Utilizza il motore di inferenze avanzato per valutare il set dei dati delle serie temporali e seleziona l’algoritmo di rilevamento anomalie corretto per ottenere l’accuratezza massima possibile. Il rilevamento automatico permette di eliminare la necessità di dati di training con etichette per risparmiare tempo e permettere all’utente di rimanere concentrato.  Inoltre, le impostazioni personalizzabili consentono di ottimizzare la sensibilità a potenziali anomalie in base al profilo di rischio del tuo business.

    Ricerca

    L’unico servizio di ricerca cloud con funzionalità di intelligenza artificiale predefinite, che arricchiscono tutti i tipi di informazione per consentire l’identificazione e l’esplorazione dei contenuti pertinenti su larga scala. Utilizza competenze cognitive per i servizi di visione, lingua e voce ed utilizza modelli di Machine Learning personalizzati per estrarre informazioni dettagliate da tutti i tipi di contenuto. Ha anche la funzionalità di ricerca semantica, che usa tecniche avanzate di Machine Learning per comprendere la finalità dell’utente e classificare contestualmente i risultati di ricerca più pertinenti. Utilizza funzionalità di completamento automatico, ricerca geospaziale, filtri e facet. Inoltre, utilizza funzionalità predefinite per intelligenza artificiale, come il riconoscimento ottico dei caratteri (OCR), l’estrazione di frasi chiave e il riconoscimento di entità denominate per sbloccare informazioni dettagliate.

    Chiamare l'API dei servizi cognitivi

    Esistono diversi metodi di accesso e utilizzo dei servizi cognitivi, che possono essere scelti per comodità, o in base ad ambiente e configurazione. Gli SDK supportano linguaggi di programmazione come Python, C#, Java, Go e Javascript e le API posso essere chiamate direttamente dal codice tramite metodi standard dalla libreria. Inoltre, possiamo accedere ai servizi anche tramite URL o API REST. Le API REST rendono estremamente facili le chiamate. Per capire meglio come poter utilizzare i servizi cognitivi andiamo ad analizzare alcuni esempi scritti in C#.

     

    Per prima cosa dobbiamo andare al link https://portal.azure.com/#create/hub per creare una risorsa su Azure. A questo punto per i nostri esempi dobbiamo ricercare Cognitive Services e Translator e creare 2 differenti tipi di risorsa; una volta create, abbiamo la Key e Endpoint, inoltre abbiamo anche la location.

     

    Andiamo ad installare i package

    Microsoft.Azure.CognitiveServices.Language
    Microsoft.Azure.CognitiveServices.Vision

    E riportiamo i riferimenti

    using Microsoft.Azure.CognitiveServices.Language.TextAnalytics;
    using Microsoft.Azure.CognitiveServices.Language.TextAnalytics.Models;
    using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;

    Creiamo la Key e Endpoint per le rispettive risorse

    private const string CogServicesSecret = "63f94511259c40af8e14a3361a34227a";
    private const string ConServiceTranslateSecret = "57a59f0ad32e4cfb9c72099c13e7d3e3";
    private const string Endpoint = "https://azurecognitiveservicesproject.cognitiveservices.az-ure.com/";
    private static readonly string endpointTranslator = "https://api.cognitive.microsofttranslator.com/";

    In questo caso CogServicesSecret e Endpoint appartengono alla risorsa Cognitive Services e ConServiceTranslateSecret e endpointTranslator Endpoint appartengono alla risorsa Translator.

    Ora andiamo nello specifico ed analizziamo i metodi.

    DetectLanguage() nome metodo
    var credentials = new ApiKeyServiceClientCredentials(CogServicesSecret); credenziali per accesso al servizio
    var client = new TextAnalyticsClient(credentials) client che fa le richieste al servizio
         {
          Endpoint = Endpoint
         };
    var inputData = new LanguageBatchInput(
                    new List
                    {
                     new LanguageInput("1","Amo il calcio"),
                     new LanguageInput("2","我喜欢猫"),
                     new LanguageInput("3","J'aime IA"),
                     new LanguageInput("4","Iubesc musica")
                     }
                     ); input
    
    var result = await client.DetectLanguageBatchAsync(inputData); richiesta

    Tale metodo permette di determinare la lingua in cui è stata scritta una frase.

    Viene istanziato il client che andrà a fare la request chiamando il metodo asincrono DetectLanguageBatchAsynch per determinare la lingua della frase, dove passiamo un oggetto che, come proprietà, ha una lista con indice e frase scritta.

    DetectObject() nome metodo
    var credentials = new ApiKeyServiceClientCredentials(CogServicesSecret); credenziali per ac-cesso al servizio
    var client = new ComputerVisionClient(credentials)
                 {
                     Endpoint = Endpoint
                  }; client che fa le richieste al servizio
    
    string imgUrl = "https://storage.ecodibergamo.it/media/photologue/2021/10/14/photos/i-robot-non-domineranno-lumanita-ma-daranno-maggior-potere-alle-persone-sec_63b00692-2cf2-11ec-aec0-dd6e612c2df3_1600_1006.jpg"; input
                  DetectResult analysisImg1 = await client.DetectObjectsAsync(imgUrl); chiamata

    Tale metodo permette di esaminare un’immagine determinando attraverso l’utilizzo del computer vision di determinare cosa viene rappresentato e lo score che indica la percentuale di correttezza.

    Translator(string route, string textToTranslate) nome metodo
    object[] body = new object[] { new { Text = textToTranslate } }; oggetto per il corpo della richiesta
    var requestBody = JsonConvert.SerializeObject(body); corpo richiesta in cui si serializza l’oggetto appena definito
    using (var client = new HttpClient()) cliente
    using (var request = new HttpRequestMessage()) richiesta
    request.Method = HttpMethod.Post;
    request.RequestUri = new Uri(endpointTranslator + route);
    request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
    request.Headers.Add("Ocp-Apim-Subscription-Key", ConServiceTranslateSecret);
    request.Headers.Add("Ocp-Apim-Subscription-Region", location);
    HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false); mes-saggo risposta
    string result = await response.Content.ReadAsStringAsync(); risposta
                    Console.WriteLine(result);

    Tale metodo, dati una route ed un testo fa la traduzione in 100 lingue diverse in base alla  route.

    $”/translate?api-version=3.0&from={codeLanguage.ElementAt(i).Value}&to=en&to=it” in questo caso nel from si mette il codice lingua in cui è statto scritta il testo da tradurre e nel to si mettono la/le lingua/e in cui voglio tradurre.