A cura di Andrea Bergonzi, Data Scientist di Dataskills
A tutti noi sarà venuto in mente almeno un paio di volte di voler automatizzare determinati task particolarmente ripetitivi e noiosi: categorizzare foto, classificare documenti o guidare l’auto per svariate ed interminabili ore. La tecnologia ci è venuta più volte in aiuto nel meccanizzare azioni ripetitive, basti pensare ai macchinari industriali nelle catene di montaggio. Con l’avvento delle Intelligenze Artificiali e del Machine Learning lo spettro delle azioni automatizzabili è aumentato esponenzialmente, con algoritmi in grado di analizzare immensi dataset in pochi secondi: questo perché i computer sono estremamente veloci a processare dati numerici in formato tabellare. Ma se volessimo invece analizzare dati di diversa natura, come immagini, file audio o video? Noi siamo ad esempio facilmente un grado di distinguere il suono di un clacson da un miagolio di un gattino, ma la verità è che anche un computer è in grado di farlo, anche se con qualche passaggio in più. Stiamo parlando dei dati “Non-strutturati”.
Cosa si intende per “dati non strutturati”?
I dati non strutturati sono delle informazioni di diverso formato (dal video, ai file audio, ai testi) che hanno la caratteristica di non essere categorizzabili in un formato standardizzato, rappresentabili in tabelle o di essere gestiti attraverso strumenti tradizionali come ad esempio i database relazionali. In contrasto con i dati strutturati, che per loro natura sono facilmente consultabili e mappabili in database e tabelle, i dati non strutturati richiedono delle ulteriori operazioni preliminari per renderli analizzabili e quindi impiegabili all’interno dei processi e dei sistemi aziendali. È stimato che tra l’80% e il 90% dei dati generati e raccolti dalle organizzazioni siano non strutturati, ed il volume di questi dati stia aumentando sempre di più con il passare del tempo. Utilizzare dei software che permettano di processare ed analizzare questi dati è diventata quindi una priorità per molte aziende, che si troverebbero altrimenti tra le loro mani una enorme quantità di dati dal potenziale inespresso.
Uno dei primi step per l’analisi dei dati non strutturati consiste nel Labeling delle varie componenti del dataset, ovvero l’apporre un “etichetta” ad ogni elemento che vogliamo analizzare. Categorizzare ad esempio delle immagini di cani e gatti è per noi un compito estremamente facile, in quanto il nostro cervello possiede delle spiccate capacità di individuazione di pattern visivi. Se tuttavia queste immagini fossero milioni e dovessimo categorizzarle in poche ore, ecco che il compito diventa particolarmente difficile e tedioso, oltre a richiedere l’impiego di molte più risorse. Il ruolo che ricopre il Labeling, o classificazione, performato da un algoritmo di Machine Learning è esattamente questo, ovvero replicare la capacità di individuare pattern che possiede il nostro cervello ad una velocità notevolmente maggiore. Questa logica non si applica solo alle immagini, ma anche ai video, agli audio o ai file di testo. Se da una parte la gestione e l’analisi dei dati strutturati (come, ad esempio, informazioni anagrafiche o commerciali) è quindi relativamente semplice e lineare rispetto quella dei dati non strutturati, dall’altra questi ultimi possono potenzialmente offrire informazioni molto più variegate sulla realtà. I dati non strutturati possono ad esempio “insegnare” ad un computer a guidare un camion analizzando migliaia e migliaia di ore di registrazioni di camion che vengono guidati per strada, ma possono anche diagnosticare malattie genetiche processando terabytes di dati di sequenziamento genomico. Non solo: è anche possibile automatizzare il processo di creazione dei background per le foto stock di un’azienda di vestiti o monitorare la quantità di scorte di legname in tempo reale tramite immagini inviate da droni. Queste soluzioni non solo permettono di ottimizzare delle attività che richiederebbero altrimenti molto più tempo, ma permettono anche di poter analizzare dei dati altrimenti inutilizzabili, dato che processarli individualmente “a mano” richiederebbe tempistiche improbabili. Le applicazioni sono dunque virtualmente infinite così come il loro potenziale, tuttavia anche i dati non strutturati presentano delle difficoltà e delle complicazioni che altri tipi di dati non possiedono.
Come sfruttare i dati non strutturati
Il processo di Labeling dei dati richiede una potenza di calcolo non indifferente data non solo la mole di dati da analizzare, ma anche per la complessità degli algoritmi di classificazione stessi. Se vogliamo applicare tecniche di Machine Learning per analizzare i dati non strutturati è necessario in altre parole dare loro una struttura, o performare una Feature Extraction sui dati del nostro dataset. Dopodiché il processo di analisi si discosta relativamente poco dalle tecniche più “standard”. Il processo di Feature Extraction in poche parole trasforma i dati non strutturati, siano questi immagini, file audio o altro, in variabili numeriche applicando allo stesso tempo operazioni di Dimensionality Reduction, in modo tale da evitare di utilizzare Features ridonanti che potrebbero risultare controproducenti per l’algoritmo di classificazione. Nel caso per esempio di un’immagine, durante il processo appena descritto questa verrà in primo luogo convertita in una serie di matrici numeriche e successivamente l’algoritmo sarà in grado di individuare determinati pattern all’interno di tali matrici le quali andranno poi a comporre le nostre Features. A seconda del tipo di dato non strutturato che si sta trattando cambieranno gli algoritmi di feature extraction, ma in linea di massima la logica rimane la medesima. I label di cui si accennava in precedenza non sono altro che l’output finale di questo processo.
La piattaforma Databricks ad esempio permette, tra le altre cose, di fare esattamente questo, dato che consente senza particolari difficoltà di poter caricare e analizzare dati non strutturati in maniera simile a come farebbe per quelli (semi-) strutturati. Attraverso una serie di passaggi, è quindi possibile rifinire i dati grezzi fino a renderli facilmente analizzabili:
- In primo luogo, va creato un apposito cluster tramite Databricks con le relative librerie Python utili a performare la Feature Extraction ed applicare gli algoritmi di ML sui dati che vogliamo analizzare.
- Successivamente, vanno scaricati i dati dal Cloud Storage tramite Batch o Streaming Ingestion Scheme ed inseriti in una prima tabella che possiamo definire “bronze”. In questa tabella sono quindi contenuti i nostri dati non strutturati “grezzi”, non ancora trattati.
- In questa fase vengono applicati gli algoritmi di feature extraction e dimensionality reduction che possono sfruttare il motore di Apache Spark, in grado di processare il dataset in parallelo nel cluster. Ciò significa che Apache Spark è in grado di “spalmare” i processi di calcolo parallelamente su tutti i core a disposizione ottimizzando e velocizzando i tempi di risoluzione del task. Il risultato è una tabella “silver” con i dati non strutturati trasformati e pronti per essere analizzati.
- La tabella ora contiene quindi le features rilevanti che vogliamo utilizzare così come le variabili target utilizzabili dall’algoritmo ML di nostra scelta per fare training e testing sul dataset. Di solito i risultati sono testati su dati nuovi ed infine salvati in una tabella finale che potremmo chiamare “gold”.
Che il nostro task sia di image classification, speech recognition o natural language processing, gli step sopra descritti rimangono i medesimi, con le dovute differenze (come ad esempio quali librerie python utilizzare, come preprocessare i dati etc.).
Conclusioni
I dati non strutturati rappresentano una sfida ma anche una grande opportunità per le aziende così come per altri tipi di istituzioni. Se da una parte è più complesso estrarre del valore da dati non convenzionali rispetto ad una tabella excel o un file csv, dall’altra la tipologia di dati analizzabili è molto più ampia così come lo sono le possibili applicazioni. Fortunatamente, esistono diversi tool per facilitare queste operazioni e Databricks, grazie alla potenza di Apache Spark ed alla semplicità di utilizzo, è un’ottima piattaforma per iniziare ad analizzare questo tipo di dati.
LEGGI ANCHE — Chat GPT: il prototipo di chatbot di cui parlano tutti