Usare le API di intelligenza artificiale di Google, Amazon, Microsoft e IBM
Intelligenza artificiale e machine learning sono tra le più calde tendenze tecnologiche. Sono anche tra le tecnologie più impegnative da affrontare per un’azienda che voglia sfruttarle per l’analisi di dati o per integrare funzioni di AI nei propri prodotti e servizi.
Servono risorse qualificate per lavorare con framework e linguaggi che sono in rapidissima evoluzione, infrastrutture adeguate, e – trattandosi di un ambito sperimentale – bisogna potersi permettere di fallire nei propri intenti.
Come quando si consulta un oracolo, non è detto che un sistema di machine learning riesca a dare risposte utili alle domande che intendiamo porgli, che si tratti di individuare le sacche di inefficienza in un processo produttivo o rispondere ai comandi vocali di un utente che ha chiamato il call center.
Gli utenti che usano Siri, Alexa o Google Photo non sono quasi più stupiti dei risultati. Li danno per scontati e si aspettano quello stesso livello di servizio.
E gli utenti, ultimamente, si stanno abituando a usare sistemi di intelligenza artificiale, anche senza saperlo. Quando chiedono a Siri il risultato di una partita di calcio o cercano le foto del compleanno nel proprio archivio su Google Photo, non sono quasi più nemmeno stupiti dei risultati che ottengono. Li danno per scontati.
E si aspettano dalle nostre applicazioni aziendali lo stesso tipo di esperienza.
C’è però una buona notizia, anzi tre:
- per alcuni compiti specifici, esistono algoritmi che offrono ormai una funzionalità comprovata;
- queste funzioni sono accessibili attraverso Api che qualsiasi programmatore decente è in grado di integrare nelle applicazioni;
- sono disponibili in cloud con modalità “as a service”, al costo di centesimi o millesimi di euro per ogni interrogazione, permettendo quindi di annullare gli investimenti iniziali e pagare solo per l’effettivo utilizzo.
Tra i più attivi nel campo delle API di intelligenza artificiale ci sono, prevedibilmente, i grandi fornitori di servizi cloud: Amazon AI, Google Cloud Machine Learning Services, i Servizi Cognitivi di Microsoft Azure e la Watson Developer Cloud di IBM.
Tutti offrono Api che possono essere interrogate via web e restituiscono dati strutturati come Xml o Json e che possono quindi essere utilizzati nella propria applicazione o passati a una elaborazione successiva da parte di una diversa Api.
I campi di applicazione pratica principali in cui operano questi fornitori, con sensibili differenze di funzionalità e accuratezza, sono il riconoscimento di immagini, l’interpretazione di testi, il riconoscimento vocale e la sintesi vocale.
Riconoscimento automatico di immagini e volti
Nella funzionalità di base del riconoscimento automatico di immagini con intelligenza artificiale, data un’immagine come input, le Api restituiscono una lista di etichette di oggetti riconosciuti, generalmente accompagnate da una percentuale che mostra il grado di confidenza con cui la IA ha identificato quel singolo oggetto.
Oltre alla funzionalità di base, sono state sviluppate funzioni per compiti più specifici, come il riconoscimento di volti (rilevazione presenze, conteggio di persone), delle loro caratteristiche fisiche (sesso, età stimata, etnia) ed espressione facciale (triste, allegro, arrabbiato…). Oppure l’identificazione di scene di nudo e immagini inappropriate, l’identificazione di monumenti e paesaggi caratteristici (e quindi l’attribuzione di una posizione Gps approssimata), il riconoscimento OCR e l’estrazione di testi da immagini e documenti o ancora la ricerca di immagini simili sul web, per proteggere per esempio il diritto d’autore sulle foto o individuare fake news.
Ecco alcuni esempi di applicazioni che è possibile realizzare con il riconoscimento delle immagini:
- Applicare automaticamente tag relativi al contenuto di archivi fotografici per successiva ricerca
- Generare automaticamente contenuti descrittivi di un’immagine (per esempio: un’agenzia immobiliare può generare descrizioni dettagliate a partire dalle foto di un appartamento)
- Riconoscimento ottico dei caratteri su documenti o immagini (cartelloni, pubblicità…)
- Riconoscimento loghi commerciali (anti contraffazione, verifica delle esposizioni nel punto vendita…)
- Riconoscimento di scene di nudo o violenza per moderare servizi online con contenuti generati dagli utenti
- Georeferenziazione di immagini turistiche
- Soluzioni per fornire informazioni ai non vedenti
- Soluzioni per fornire informazioni in base alla posizione per luoghi chiusi e non coperti dal GPS (per esempio, guide nei musei)
- Analisi statistica del pubblico presente in un luogo (per esempio un centro commerciale), rilevando dal volto il sesso, l’età, l’etnia, ma anche l’emozione dominante, come tristezza, gioia, rabbia…
- Identificazione di una persona in base a una foto campione
Riconoscimento e interpretazione di testi con intelligenza artificiale
Una delle caratteristiche che attribuiamo al concetto di intelligenza artificiale è il saper interpretare e comprendere un testo. Cosa questo significhi realmente implica concetti filosofici come le definizioni di comprensione, conoscenza e – in definitiva – coscienza, suscitando il dubbio sul fatto che una macchina potrà mai sperimentare davvero queste cose.
Più praticamente, e rispolverando il test di Turing (che stabilisce che una macchina si può definire intelligente se dà risposte indistinguibili da quelle di un umano), ci accontentiamo per il momento che un algoritmo sappia interpretare una domanda e fornire una risposta valida, anche se magari non esaustiva, estrapolare alcune caratteristiche da un testo (il tono, il “mood”), identificare le componenti semantiche e logiche (soggetto, verbo, complemento) e magari generare una traduzione automatica in un’altra lingua.
Diversamente dalle app di riconoscimento visivo, quelle per il testo hanno probabilmente bisogno di uno sviluppo maggiore sul lato dell’applicazione client, almeno per le applicazioni che richiedono di dare risposte o eseguire funzioni in base all’interpretazione del contenuto.
Alcune applicazioni tipiche delle Api di intelligenza artificiale che lavorano sui testi sono:
- Riconoscimento di comandi o istruzioni
- Identificaazione di argomenti di un testo (social media monitoring e analysis, content filtering)
- Rilevamento di similitudini tra testi diversi (Antispam)
- Estrapolazione di frasi chiave (Riassunti)
- Creazione di mappe di contenuti da un corpus di documenti disgiunti.
- Controllo ortografico, grammaticale e auto completamento delle parole e frasi
- Traduzione automatica
- Creazione di chatbot
- Creazione di interfacce utente testuali o vocali (in particolare per l’Internet of Things)
- Estrarre meta-dati da testi per inserirli in database strutturati (keyword, valori, caratteristiche…)
Purtroppo, al momento, il riconoscimento dei testi italiani è meno efficace dell’inglese, e per alcuni servizi solo parziale.
Riconoscimento vocale
È il primo gradino nelle interfacce di servizi come Apple Siri, Amazon Alexa o Cortana: riconoscere e disambiguare le parole pronunciate da un umano, per passare poi il testo ai servizi di IA che si occuperanno di interpretarne il contenuto e generare le azioni conseguenti.
Oltre al contenuto della comunicazione, l’analisi della voce può fornire molte altre informazioni in più su chi parla, come la sua identità (a partire da un campione verificato), identificare sesso ed età o rilevare lo stato d’animo e il livello di stress.
Tra le applicazioni più comuni del riconoscimento vocale ci sono:
- Riconoscimento di comandi vocali per applicazioni, call center, assistenti personali
- Identificazione dello speaker
- Dettatura di testi
- Identificazione di parole inappropriate in un audio (per esempio per censurare o “beepare” il turpiloquio da programmi tv)
Sintesi vocale
Dato un testo, l’algoritmo genera un audio con il suo contenuto, che può essere immediatamente riprodotto o archiviato per uso futuro. La sintesi vocale viene usata ormai da decenni, ma solo ora – e grazie ad algoritmi di IA – si ottengono voci che imitano la cadenza, l’inflessione e la tonalità umane, permettendo anche di variarle in base al contenuto o al contesto.
Le applicazioni tipiche della sintesi vocale sono:
- Lettura di un testo
- Creazione di frasi in base a dati numerici (gli annunci nelle stazioni)
- Creazione di interfacce utente vocali
- Soluzioni per assistenza ai non vedenti
Api di intelligenza artificiale: fornitori e prezzi
Tutti i cloud provider usano uno schema di prezzi simile, con costi che vanno da 1 a 2 euro per migliaio di richieste eseguite e sconti basati sul numero di richieste mensili, e tutti prevedono un piano di prova gratuita, limitato nel tempo e nel numero di richieste mensili (solitamente, da 250 a 5.000, in base al servizio), ma spesso abbastanza lungo da poter gestire tutta la fase di sviluppo e test senza dover pagare un solo euro.
Nel calcolo della struttura dei costi bisogna però fare attenzione ad alcune cose:
- Una singola richiesta può richiedere l’intervento di più Api differenti, ciascuna con il proprio costo (per esempio, il riconoscimento degli oggetti in una foto è una richiesta, il riconoscimento dei volti nella stessa foto è un’altra);
- Se l’output deve essere archiviato in cloud, sarà necessario sostenere dei costi per lo spazio disco e la banda necessari.
- In alcuni casi, i costi hanno una componente variabile in base alle dimensioni della richiesta (per esempio, la lunghezza di un testo) o al numero di risultati forniti.
Ovviamente, il fatto di essere già clienti di uno dei fornitori di servizi cloud è un criterio valido con cui scegliere: oltre alla semplicità di gestione da un unico pannello di controllo e con un’unica fattura, ci sono sicuramente vantaggi tecnici nel rimanere nella stessa piattaforma e infrastruttura, e in molti casi minori costi qualora fosse necessario trasferire file da un cloud all’altro.
Non è però obbligatorio, e conviene scegliere dopo aver testato le funzionalità specifiche richieste dalla propria applicazione. Si potrebbe scoprire che alcune funzioni sono più economiche sulla piattaforma A, mentre altre sono disponibili solo sulla B, e decidere se valga la pena gestire due cloud diversi o spendere qualcosa in più per centralizzare tutto su un’unica piattaforma.
è possibile caricare dei campioni di prova direttamente dalle pagine web di presentazione dei servizi
Per avere un’indicazione di massima delle funzionalità offerte è anche possibile caricare dei campioni di prova direttamente dalle pagine web di presentazione dei servizi, senza nemmeno bisogno di creare un account.
Alle pagine seguenti è possibile trovare le informazioni dettagliate sui servizi offerti, il listino prezzi e le pagine per fare test singoli su immagini, testi e audio oppure attivare un account di prova gratuita:
- Amazon AWS AI
- Google Cloud Machine Learning Services
- Servizi Cognitivi Microsoft Azure
- Watson Developer Cloud di IBM
La possibilità di attivare piani gratuiti nella fase di sviluppo lascia ampie libertà di sperimentazione, combinando e mixando servizi diversi senza alcun investimento inziale o continuativo (è il bello dell’Api Economy, dei micro servizi e del serverless computing).
Oltre le soluzioni preconfezionate…
Tutti questi strumenti possono essere concatenati tra loro o collegati ad applicazioni locali per creare soluzioni complesse. Spesso è anche possibile creare collegamenti e mashup senza utilizzare un server dedicato, in modalità serverless computing, sfruttando per esempio AWS Lambda, le Cloud Functions di Google Cloud, la piattaforma IBM Bluemix o le Funzioni di Azure.
Oltre a ciò, tutti i fornitori di servizi di Api per IA offrono anche la possibilità di utilizzare strumenti di machine learning per eseguire azioni più generiche apprendendo da set di dati inviati dall’utente, o mettono a disposizione immagini di macchine virtuali e framework di programmazione per crearsi una propria infrastruttura e applicazione di AI personalizzata, ma questo tipo di soluzioni richiedono di avere competenze interne o ricorrere a servizi di consulenza, spesso offerti dai fornitori stessi.