I Big Data e il Potere dei Sentimenti

di Dan Pejeroni [Infosphere]

Come realizzare nella pratica un ambiente di Sentiment Analysis. Dalla selezione delle possibili sorgenti dati, alla scelta dei componenti nell’ecosistema Hadoop. Come scegliere quale ambiente adottare per l’elaborazione (in-house o in-cloud) e infine qualche algoritmo di base per il calcolo dei risultati.

nuvi-facebook-channel

Marketing e Sentiment Analysis

Prima che l’affermazione dei big data fornisse una concreta capacità di osservazione analitica sul mercato, gli uffici marketing spesso improvvisavano, per poi porsi domande a cui era difficile dare risposte: dove hanno funzionato le campagne? Chi hanno raggiunto? Quale è stata la reazione dei nostri clienti?

Oggi i big data hanno cambiato il paradigma funzionale da: azioni stimate a scelte predittive guidate dai dati. Lo sviluppo della sentiment analysis come strumento di marketing, cioè la tecnologia per determinare il tono emozionale delle opinioni online sui brand, compie un ulteriore passo avanti. Questa scienza, conosciuta anche come opinion mining, utilizza nuove tecnologie e algoritmi per raccogliere e analizzare i dati che rappresentano la percezione di un prodotto, di un servizio o di un intero brand. Non si tratta solo di opinioni, ma attitudini ed emozioni espresse attraverso ogni menzione online. La sentiment analysis cerca di comprendere cosa la gente pensa, non solo cosa dice.

Mettiamo in pratica la Sentiment Analysis

L’analisi del sentiment si basa sull’elaborazione in tempo reale di stream di dati prelevati da una o più piattaforme social media, dove i singoli messaggi, che rappresentano informazioni di stato degli utenti (tweets, post), vengono valutati rispetto a parole chiave (hashtag, keyword) e dizionari, per associarli infine ad una di tre diverse polarità: “neutrale”, “positivo” o “negativo”. Si consideri che il solo public stream di Twitter, produce un volume di oltre 6000 messaggi al secondo.

L’insieme di queste informazioni viene comunemente definito Big Data e la sua analisi consente di ricavare efficaci previsioni di marketing, orientamento politico o trend sociale, poiché rappresenta direttamente il punto di vista delle masse.

Per realizzare un sistema di questo tipo è necessario disporre di:

  • Una o più sorgente dati dai social media;
  • Una tecnologia in grado di gestire in tempo reale un’enorme volume di dati, contenendo ragionevolmente i costi di implementazione e di gestione;
  • Un ambiente di elaborazione in-house o in-cloud;
  • Una o più strategie di analisi statistica, data mining e dizionari per il calcolo dei risultati.

Nei prossimi capitoli proveremo a dare una risposta concreta a queste tre esigenze.

1. Le sorgenti dei dati social media

1.1 Le API dei Social Network

Per effettuare la raccolta dei dati dai social network, è possibile oggi una scelta tra diverse strategie:

Accesso tramite API (Application Programming Interface).

Le API sono messe a diposizione dalle stesse piattaforme. Il vantaggio di questo approccio è senza dubbio la possibilità di costruire strumenti ad hoc, per procedere alla raccolta di informazioni secondo le proprie esigenze. D’altro canto lo svantaggio è costituito dal fatto di dipendere dalle decisioni delle piattaforme, per quanto riguarda i dati ai quali accedere e in quale modo.

Per esempio Twitter fornisce una serie di API (Streaming API e Search API) che permettono di raccogliere una grande quantità di informazioni, ma impone limiti a questi dati, con il meccanismo del rate limit.

Anche Facebook fornisce delle API, limitate e relative solo alle performance, pertanto le informazioni dei singoli profili non sono accessibili per vari motivi, uno fra tutti la privacy degli utenti.

Servizi sviluppati da terze parti.

E’ disponibile una grande varietà di applicazioni per il social media analytics, ovvero strumenti che consentono di raccogliere dati ed elaborare semplici metriche per poter effettuare analisi. Alcuni di questi servizi sono gratutiti o open source e hanno lo scopo di usare in maniera creativa le API delle piattaforme per testare un algoritmo, per sperimentare una visualizzazione, ecc. Ovviamente questi servizi, dato che incorporano nel loro codice le istruzioni delle API, hanno gli stessi limiti che queste impongono loro. Altre volte questi servizi sono a pagamento e sono pensati per finalità commerciali. In questo caso non hanno limiti attribuibili alle API, poiché hanno accordi commerciali con le singole piattaforme. Spesso questi servizi sono freemium, ovvero in parte gratutiti e in parte a pagamento. In questo modo è possibile usare la versione gratuita per sperimentare e passare alla versione a pagamento, quando si avrà bisogno di performances migliori.

Acquisto dei dataset direttamente dalle piattaforme di social media.

I vari social network mettono a disposizione direttamente o attraverso data reseller, i dataset ottenuti dai social media per poterli utilizzare per i propri scopi (di ricerca o di mercato). Esistono tre società che forniscono questo servizio, ognuna specializzata in uno specifico settore.

Gnip (http://gnip.com), recentemente acquisita dallo stesso Twitter, si tratta di una società specializzata nella vendita di dati relativi a Twitter e altre piattaforme (Tumblr, Foursquare, WordPress, Facebook, Google Plus, Youtube).

Datasift (http://datasift.com), che oltre a fornire dataset di tutti i principali servizi web fornisce anche dati relativi a social media cinesi (Sina Weibo, un SNS a metà tra Twitter e Facebook, Tencent Wibo, molto simile a Twitter).

Topsy (http://topsy.com) che fornisce accesso completo ai dati Twitter, consente anche di effettuare delle ricerche sui social media grazie alla sua applicazione che si presenta come un motore di ricerca per contenuti in tempo reale.

1.2 Twitter e il suo firehose

Il social media di maggior interesse per l’Analisi del Sentiment è senza dubbio Twitter, che offre un servizio completo che comprende API, servizi di terze parti, data reseller, partner certificati. Il flusso dati costante, relativo a tutti i tweet che vengono inviati nel web, è denominato: firehose.

L’utilizzo diretto del public stream di Twitter, direttamente dalle API, è attualmente gratuito, ma è limitato all’1% del volume totale di tweets generati (circa 60 messaggi al secondo). Per le modalità di accesso e acquisizione dei dati si consulti direttamente la documentazione ufficiale disponibile presso https://dev.twitter.com/streaming/overview.

In alternativa si può ottenere lo strem completo (oltre 6000 messaggi al secondo) attraverso l’offerta commerciale della piattaforma GNIP (http://gnip.com).

2. Tecnonologie di elaborazione dei dati

2.1 Elaborazione del sentiment con Apache Storm e Kafka

Sinonimo di gestione e analisi dei Big Data è oggi Apache Hadoop, la tecnologia studiata e messa a punto in più riprese da Google, Yahoo, Facebook, Twitter ed infine donata alla comunità open source.

L’originale orientamento di Hadoop all’elaborazione batch (modello Map/Reduce), negli ultimi anni è stato integrato ed affiancato da una serie di componenti (Yarn, Tez, Hive) che ne hanno aumentato la flessibilità e hanno reso disponibili funzionalità per l’elaborazione in-memory (Spark) e real-time (Storm, Kafka, Samza). In particolare il padadigma real time è la base per lo sviluppo delle infrastrutture IoT (Internet of Things) e per l’elaborazione dei flussi dei social network.

Nella progettazione di un’infrastruttura per la Sentiment Analysis la scelta privilegiata è rappresentata quindi dalla tecnologie Apache Storm e Kafka, che in seguito saranno brevemente descritte.

senza-titolo

2.2 Apache Storm

Apache Storm è un ambiente di elaborazione veloce, scalabile che può essere programmato utilizzando una varietà di linguaggi. La sua architettura consiste in tre set di nodi primari:

Nodi Nimbus

Rappresentano i nodi master che caricano i calcoli che dovranno essere eseguiti nel cluster, lanciano i nodi di lavoro ed eventualmente li riassegnano in caso di errori. In un cluster esiste un solo nodo master.

Nodi Zookeeper

Questi nodi sono assegnati ad ogni macchina slave. La funzione di base dei nodi Zookeeper è il controllo dei nodi di lavoro. Nimbus comunica con i nodi di lavoro attraverso Zookeeper.

Nodi Supervisor

Il supervisor, avvia e arresta i worker nelle macchine slave in base ai comandi del nimbus. Una singola macchina slave può ospitare più nodi worker.

Una astrazione chiave in Storm è la topologia rappresentata dal progrmma che mantiene attivo il cluster Storm. E’ rappresentato visualmente da una rete di spout e bolt che Storm utilizza per eseguire i calcoli. Uno spout è uno stream di input che genera elementi denominati tuple. Per ricevere dati in real time, uno spout può essere configurato mediante un’API oppure un framework di code, come Kafka. Lo spout invia dati ai bolt dove vengono eseguiti i processi. Un cluster può essere costituito da diversi blot assegnati ai vari passi di processo per ottenere i risultati desiderati. I bolt possono trasferire dati ad altri bolt o ad un nodo di storage.

L’architettura elaborativa che utilizzeremo per il sentiment analysis è costituita dai seguenti componenti:

  • Twitter Kafka producer: l’elemento che si occupa della lettura dei tweets dalla Twitter Streaming API, per la loro memorizzazione in Kafka;
  • Twitter Storm Topology: una topologia Storm che legge i tweets da Kafka e, dopo aver applicato le regole di filtraggio e sanitarizzazione, processa i messagi in parallelo per la gestione della:
  • Sentiment Analysis: utilizzando specifici algoritmi di sentiment analysis classifica i tweets in feeling positivi, negativi o neutri.

2.3 Apache Kafka

Apache Kafka è un sistema di messaggistica distribuito, che consente di creare applicazioni in tempo reale tramite flussi di dati. I flussi vengono inviati al cluster Kafka, che li memorizza nel buffer e li inoltra ad Apache Storm.

senza-titolo

3. Opzioni per l’ambiente di elaborazione

Per la realizzazione dell’ambiente di elaborazione descritto nel precedente capitolo, abbiamo oggi alcune valide alternative, caratterizzate da differenti:

  • livelli di investimento economico per la realizzazione dell’infrastruttura tecnologica;
  • competenze tecniche necessarie per il suo avviamento e successiva gestione;
  • oneri per la gestione e la manutenzione dell’impianto a regime.

Possiamo dividere queste soluzioni in due categorie principali:

  • realizzazione di un’infrastruttura Hadoop in-house
  • sottoscrizione di servizi Hadoop cloud

3.1 Realizzazione di un’infrastruttura Hadoop in-house

La migliore offerta di distribuzioni commerciali del framework Hadoop è oggi concentrata sui tre leader di mercato: Cloudera, Hortonworks e MapR.

L’analisi comparativa delle rispettive offerte esula dagli obiettivi di questo post e sarà approfondita in seguito. Ci limiteremo qui a fornire qualche considerazione generale per distinguere le diverse suite.

Tutti e tre i grandi player utilizzano il core framework Hadoop per fornirlo ad uso enterprise, includendo affidabili servizi di supporto.

Cloudera Distribution for Hadoop (CDH)

Cloudera è leader di mercato nel segmento Hadoop e sono stati i primi a rilasciare una distribuzione commerciale. Con oltre 350 clienti e con una attiva contribuzione di codice per l’ecosistema Hadoop, sono i primi quando si tratta di sviluppare tool innovativi. La loro console di management – Cloudera Manager – è facile da implementare e da utilizzare con una ricca interfccia utente che mostra tutte le informazioni in modo organizzato e chiaro. La suite Cludera Management automatizza anche i processi di installazione e fornisce molti servizi avanzati all’utente. Cloudera offre servizi di consulenza per colmare il gap tra ciò che la comunità fornisce e ciò di cui necessita l’organizzazione per integrare la tecnologia Hadoop nella sua strategia di data management. Per contro CDH è più lenta della distribuzione MapR.

MapR Hadoop Distribution

La distribuzione MapR Hadoop è basata sul concetto che un fornitore market driven deve supportare i bisogni del mercato velocemente. Aziende leader come Cisco, Ancestry.com, Boeing, Google Cloud Platform e Amazon EMR utilizzano MapR Hadoop Distribution per i loro servizi Hadoop. Diversamente da Cloudera e Hortonworks, MapR ha un approccio più distribuito per la memorizzazione dei metadata sui nodi di processo, poiché dipendono dal file system proprietario MapRFS, che non ha un’architettura NameNode.

Anche se attualmente la distribuzione MapR è posizionata in terza posizione in termini di numero di installazioni, è certamente, rispetto alle concorrenti, una delle più facili e performanti.

Hortonworks Data Platform (HDP)

Hortonworks, fondata da ex tecnici di Yahoo, fornisce un modello per Hadoop service only. Hortonworks è diversa dalle altre distribuzioni, essendo una open enterprise data platform disponibile in uso gratuito. La distribuzione Hortonworks HDP può essere facilmente scaricata e integrata per essere quindi utilizzata in varie applicazioni enterprise. Ebay, Samsung Electronics, Bloomberg and Spotify utilizzano HDP. Hortonworks è stato il primo vendor a fornire una distribuzione Hadoop 2.0 production ready. HDP è la sola distribuzione che supporta la piattaforma Windows. L’utente può quindi eseguire il deploy di un cluster Windows sul cloud Microsoft Azure, utilizzando il servizio HDInsight.

Sebbene i tre grandi vendor del mercato Hadoop siano caratterizzati da specifiche strategie e forniscano diverse funzionalità, non emerge un chiaro vincitore. Dovrà essere quindi fatta una scelta in relazione agli specifici requisiti di dettaglio. In termini generali possiamo concludere che MapR potrebbe rappresentare la strada giusta se l’impostazione open source è must aziendale, altrimenti la scelta dovrebbe orientarsi sulla suite di Hortonworks. In casi intermedi, le ottime caratteristiche della distribuzione Cloudera, potrebbe rappresentare il mix di funzionalità e facilità di gestione vincente.

Le alternative nella modalità di implementazione in house

Tutte e tre le distibuzioni descritte nei paragrafi precedenti sono disponibili nel formato macchina virtuale VmWare già configurate e praticamente pronte all’uso. Per la realizzazione di un prototipo per la Sentiment Analysis, è consigliabile avviare una fase di sperimentazione attraverso l’utilizzo di uno di questi ambienti:

MapR Sandbox                     https://www.mapr.com/products/mapr-sandbox-hadoop

Cloudera QuickStart           http://www.cloudera.com/downloads/quickstart_vms/5-8.html

Hortonworks Sandbox      http://it.hortonworks.com/products/sandbox/

L’avviamento delle macchine virtuali (che sono disponibili anche per VirtualBox e Docker) non richiede ambienti server particolarmente dotato di risorse. Sui siti non mancoano validi tutorial, che accompagnano le fasi di installazione, configurazione e primo utilizzo. 

3.2 Utilizzo di Servizi di Cloud Computing

A causa della rapidissima evoluzione tecnologica, la maturità degli ambienti su cui costruire un’infrastruttura Big Data, rappresenta oggi un criterio incerto. Costruire e amministrare cluster Hadoop in produzione in modo affidabile ed efficiente, si può rivelare un compito complesso con numerosi fattori di rischio. Per questo l’offerta Cloud Computing è diventata nell’ultima decade uno standard de facto per la gestione dei flussi di lavoro dei Big Data.

Gli indiscussi leader di mercato del cloud computing, caratterizzati da una completa offerta Apache Hadoop, a cui rivolgersi per l’infrastruttura tecnologica sono:

  • Google Cloud Platform (Cloud Dataproc)
  • Amazon Web Services (Elastic MapReduce)
  • Microsoft Azure (HDInsight)

Tutte e tre queste offerte consentono un rapidissimo deployment, una profonda integrazione con i sistemi di Cloud Storage e modelli di prezzo pay-only-for-what-you-use.

I tre sistemi forniscono una distribuzione dello stesso software open-source Hadoop. Le offerte EMR e Dataproc iniziano dalla distribuzione del repository Apache, per poi adattare una configurazione personalizzata della piattaforma cloud. HDInsight utilizza di base la piattaforma Hortonworks (HDP). Le differenze programmatiche e di esecuzione fra i tre sistemi derivano dalle differenze di versione dei pacchetti sorgenti.

HDInsight supporta la distribuzione di 17 diversi tipi di istanza di calcolo, che variano per prezzo e proprietà sistema quali core, RAM e la tecnologia disco. EMR, allo stesso modo, supporta 37 diversi tipi di istanza sottostanti. Dataproc supporta 19 tipi di istanza predefiniti e, in aggiunta, fornisce agli utenti infinite configurazioni personalizzate, per ottimizzare prestazioni e costi.

4. Strategie di Sentiment Analysis

4.1 Descrizione dei dati

I messaggi di Twitter sono limitati a 140 caratteri. A causa di questo limite gli utenti utilizzano frequentemente acronimi ed emoticons che esprimono le loro opinioni. Di seguito sono descritti gli elementi fondamentali di un tweet:

Hashtags

Il simbolo hashtag (#) è utilizzato per categorizzare il tweet in un dominio. E’ possibile utilizzare più hashtag in un singolo tweet.

es. #Independenceday : questo tag si riferisce al dominio

Independence Day, tutti i tweet che contengono questo hashtag saranno categorizzati in questo dominio.

Acronimi

I tweet che vengono postati non sempre sono costituiti da parole intere. Spesso vengono utilizzati abbreviazioni e acronimi per risparmiare caratteri. Nel corso dell’analisi questi acronimi devono essere espansi e analizzati, in quanto possono contenere una considerevole quantità di informazioni. Per questo scopo è necessario mantenere un dizionario separato degli acronimi:

es1. LOL : Risata. Categoria: Positiva

es2. Fab : Favoloso. Categoria: Positiva

es3. Plz : Per favore. Category: Neutra

Emoticon

Questi simboli vengono utilizzati per esprimere emozioni, in modo da mantenere conciso il tweet. Poiché gli emoticon rappresentano una significativa quantità di informazioni relative alla polarità del tweet, è necessario mantenere un dizionario dedicato.

es1. J Sorriso. Categoria: Positivo

es2. L Triste. Categoria: Negativo

es3. 😥 Piangere. Categoria: Negativo

URL

Le URL nei tweet vengono abbrevviate con degli URL shortners (es. Bit.ly

and tinyurl.com) allo scopo di contenerne la lunghezza. Questi URL

che puntano a citazioni esterne (gli URL vengono identificati dalla stringa “http://”, “https://” e www.)

es1. http://goo.gl/l6MS

Twitter Handles

Il simbolo @ viene utilizzato per citare un nome utente in un tweets: “Ciao

@DanPejeroni!” riferito anche come handle. Gli utenti utilizzano

@username per menzionare un altro utente in un tweet, inviare un

messaggio con un link ad un profilo.

Ripetizione di caratteri

Comunemente gli utenti enfatizzano i loro sentimenti nei tweet ripetendo alcuni caratteri. “@DanPejeroni oggi è stata una lungaaaaa giornata” Il termine “lungaaaa” è caratterizzato da una ripetizione di caratteri.

Parole intensificate:

Una parola in caratteri maiuscoli intensifica il proprio significato. “@DanPejeroni I

LOVE today’s weather.” Il termine LOVE è intensificato, quindi aiuta a comprendere la polarità del tweet.

4.2 Classificazione dei sentiment

I tweets sono scompost in token e assegnati ad una polarità (un numero a virgola mobile) compresa tra -1 e 1, dove -1 rappresenta un sentiment negativo, 0 neutro e 1 positivo. Il sentiment medio è quindi calcolato aggiungendo le polarità di ogni token. La somma viene quindi arrotondata all’intero più vicino, assegnando infine la polarità risultante al tweet.

Tweets positivi

  • Tweets che indicano un successo o un festeggiamento
  • Tweets di auguri o congratulazioni a qualcuno
  • Tweets che utilizzano emoticons come 🙂 , 😀 , =) , =D, ^_^ , ❤

es.: Chasing 275 to win, India comfortably reached the target with 28 balls to spare due to some excellent batting from the top order. #IndvsSL

Tweets Negativi

  • Tweet che indicano noia (es. se un film non è stato divertente)
  • Tweet che indicano sconforto (es. a causa di una tragedia nella vita)
  • Tweet che indicano ira (es. a causa di disordini in una zona)
  • Tweet che utilizzano emoticon come 😦 , 😥 , :/ , -_-

Tweets neutri

  • Tweet che includono commenti sia negativi che positivi
  • Tweet che non includono sentimenti nè positivi, né negativi
  • Tweet che presentano fatti o teorie (es.: Ho studiato tutto il giorno, ho bisogno di aiuto!!!!)

4.3 Risorse

Per l’analisi dei tweet, utilizzeremo vari dizionari, dai quali può essere derivata la polarità. Normalmente vengono utilizzati quattro tipi di dizionari dedicati:

Dizionario lessicale

Faremo uso di un dizionario lessicale, dove sono riportati la maggior parte dei termini italiani. Questo dizionario ci aiuterà ad analizzare i tweet senza errori, facendo corrispondere le parole nel tweet con quelle del dizionario. Se un termine non viene trovato, controlleremo se se la parola contiene ripetizioni e sarà quindi categorizzata di conseguenza. Nel nostro sistema utilizzeremo il database Dante, che contiene lemmi, parole multiple, idiomi e frasi.

Dizionari di acronimi

Questo dizionario è utilizzato per espandere tutte le abbreviazioni e gli acronimi. Il processo di espansione degli acronimi genererà parole che richiedono ulteriori analisi utilizzando il dizionario lessicale per classificarle nelle polarità.

Dizionario degli emoticon

I tweet possono contenere emoticon utili a comprendere i sentimenti. Il dizionario degli emoticon svolge questo compito.

Dizionario delle Stop Word

In un tweet non tutte le parole hanno una polarità e non necessitano quindi di essere analizzate. Saranno quindi contrassegnate come stop word ed eliminate.

4.4 Processing dei dati

Suddivisione in token

Tutte le parole in un tweet devono essere suddivise in token. Per esempio ‘@DanPejeroni oggi ho passato una bellissima giornata!’ viene spezzata nei token ‘@DanPejeroni‘, ‘oggi’, ‘ho passato’, ‘una’, bellissima, ‘giornata’.

Emoticon, abbreviazioni, hashtag e URL vengono riconosciute come singoli token. Inoltre, ogni parola in un tweet è separata da uno spazio, quindi ad ogni spazio viene identificato, un nuovo token.

Normalizzazione

Inizialmente il processo di normalizzazione verifica ogni token e esegue alcuni calcoli specifici sulla sua tipologia:

  • Se il token è un emoticon, gli viene attribuita una corrispondente polarità, in base al dizionario degli emoticon;
  • Se il token è un acronimo, gli viene attribuita una corrispondente polarità, in base al dizionario degli acronimi
  • Termini intensificati, come ‘SPENDIDO’ vengono convertite in lettere minuscole e il token è memorizzato come ‘I_spendido’. L’idea di base è quella di preservare l’enfasi dell’emozione dell’utente, codificandola con la codifica ‘I_’;
  • Le sequenze di ripetizione di caratteri come ‘belloooo’ vengono corretti in ‘bello’ quindi memorizzati come ‘R_bello’. La codifica ‘R_’ è utilizzata con lo stesso scopo di quella ‘I_’;
  • Il processo di normalizzazione elimina inoltre tutti i token che non contribuiscono al sentiment del tweet. Le Stop Word, come ‘questo’, ‘mentre’, ‘qundo, poichè non indicano alcun sentiment.quindi vengono eliminate. Similarmente le URL specified nel weet nei Twitter Handle possono essere sicuramente eliminate.

Analisi grammaticale

I token validi vengono passati al processo di analisi grammaticale che associa un tag (etichetta) ad ognuno di essi, specificando se si tratta di un sostantivo, verbo, avverbio, aggettivo, ecc. Il tagging relativo all’analisi grammaticale aiuta a determinare il sentiment complessivo del tweet in quanto i termini hanno un significato differente quando sono rappresentate come diverso elemento grammaticale. Per esempio, la parola ‘buono’ quando utilizzata come aggettivo, es. ‘vino buono’, esprime un sentiment positivo, dove lo stesso termine è usato come sostantivo in un contesto postale non indica tono né negativo, né positivo.

Implementazione

I Bolt sono componenti della topologia di Storm, che possono ricevere un input, processare i dati e inviare un output. Questo output può essere a sua volta inviato ad un altro Bolt o a una locazione di memorizzazione. In questa implementazione proponiamo di utilizzare sei Bolt, su ogni nodo worker. Lo stream di tweet ottenuto dallo Spout viene inviato al primo Bolt. Questo esegue la scomposizione in token che quindi invia al secondo Bolt, dove viene eseguito il processo di normalizzazione e solo i token validi vengono mantenuti. Gli elementi risultanti sono inviati al terzo Bolt, che realizza l’analisi grammaticale e il relativo processo di tagging. Sul quarto Bolt, a ogni token, viene assegnata la sua polarità, eseguendo la ricerca nei dizionari ed estraendo la sua corrispondente polarità a virgola mobile. La polarità complessiva di un tweet è quindi calcolata e inviata al quinto Bolt. Questo elemento di processo riceve le polarità di ogni tweet e calcola la sua media. Il valore medio è quindi passato al sesto Bolt, dove viene arrotondato al valore più vicino all’intero e rappresentato in forma di grafico o diagramma a torta.

4.5 Presentazione dei dati

Il risultato dell’elaborazione dei tweet su Apache Storm può essere prodotto in varie tipologie di output, per aiutare l’utente nell’analisi e nell’interpretazione del sentiment sui social media.

Grafici a torta

I grafici a torta o Graph Chart sono grafici circolari che rappresentano le statistiche in forma di settori percentili. Per esempio, il numero dei tweet che hanno una certa polarità saranno classificati in un settore della torta.

Timeline

Le timeline sono rappresentazioni della popolarità di un tweet o di una categoria di appartenenza. La durata del tempo può variare da un numero di ore in un dato giorno, a un numero di giorni di un dato mese.

Mappe

Le mappe mostrano un’area dove i tweet sono stati prodotti, eventualmente indicandone la polarità. Questo tipo di rappresentazione può risultare particolarmente utile per sondaggi locali, in quanto possono rappresentare la polarità in un’area in termini geografici. E’ possibile utilizzare la libreria Google Maps Javascript per la renderizzazione sulla mappa.

Domus – Internet of Things per la domotica (parte 1)

Un (altro) progetto IoT basato su Arduino che implementa funzioni di telecontrollo, automazione, data logging e allarmi.


Per la realizzazione di un sistema di automazione e telecontrollo per la casa, si può contare oggi sui molti componenti disponibili nel mercato home automation che, nonostante la mancanza di standard definitivi, si avvia alla maturità. Dall’altra parte abbiamo tecnologie open source che, anche in questo campo, rappresentano una valida alternativa al buy.

Per comprendere meglio il fenomeno ho deciso di rispolverare le mie competenze di elettronica e realizzare un prototipo funzionante per il telecontrollo di una ambiente domestico basato su Arduino Uno: Domus.

Diapositiva1

Domus prevede una sezione attuatori per il comando dei sistemi di riscaldamento, irrigazione e illuminazione giardino e una sezione sensori che raccoglie e gestisce le varie sonde sul campo (tensione, corrente, flusso acqua, temperatura, umidità terreno, luce, pioggia) e allarmi (blocco caldaia, intrusione, incendio, allagamento, gas).

Screenshot_2015-02-19-12-07-16

Il telecontrollo del sistema è basato su un’applicazione Android (per il comando remoto degli attuatori), sviluppata con Tasker e su un PLC controller (basato su un Asus EEE-Box con Windows 7) che svolge funzioni di data logger, reporting e automazione di processo.

Negli articoli seguenti illustrerò le componenti del sistema hardware, software e le configurazioni di rete.

Domus parte2: Arduino

Domus Parte3: Networking

Domus parte4: App Android

Domus parte5: PLC Controller

Domus – Internet of Things per la domotica (parte 2)

La seconda parte dell’articolo illustra la scheda Arduino, lo sketch principale e le librerie utilizzate, gli shield Ethernet, Relè, i sensori e la board di adattamento.


Hardware

Il prototipo Domus si basa sui seguenti componenti:

  • Scheda Arduino Uno
  • Ethernet Shield W5100
  • Board a 4 Relay 250v – 10A
  • Scheda di adattamento realizzata con basetta millefori

Lo schema seguente rappresenta la scheda di adattamento. Nella parte superiore sono elencati i collegamenti agli ingressi analogici e digitali della scheda Arduino, mentre nella parte inferiore i collegamenti ai vari sensori. La basetta è stata dotata di due morsettiere saldate. Gli ingressi digitali 10-13 sono impegnati dall’Ethernet Shield W5100, mentre i 4-7 dalla scheda relè.

Diapositiva2

I sensori utilizzati sono facilmente reperibili a prezzi contenuti su eBay e Amazon:

  • Sonda di corrente (non invasiva) SCT-013-030
  • Alimentatore 220/9v AC/AC (corrente alternata in uscita)
  • Sonda liquidi FS-200°
  • Due sonde digitali di temperatura DS18820 (collegate in bus)
  • Una sonda Soil (umidità terreno)
  • Una sonda pioggia
  • Una fotoresistenza VT90N3
  • Il contatto digitale costituito da un relè presente nella caldaia a condensazione e programmabile per chiudersi quando è in blocco

Software

Lo sketch caricato su Arduino è il seguente:

Arduino Sketch

Il loop principale dello sketch Domus risponde a comandi REST sulla porta 85 del web server creato dalla libreria Ethernet. I comandi HTTP Get vanno lanciati da un browser o, come nel nostro caso, dall’app Android e restituiscono tipicamente il valore di risposta (esempio: 192.168.2.177:85/Lux).

I comandi supportati sono i seguenti:

Comando            Risposta

  • /Emon                  : tensione (V); corrente (A); potenza (W)
  • /Water                 : flusso acqua (L/Hour)
  • /Temp0               : Temperatura Zona Giorno (°C)
  • /Temp1               : Temperatura Zona Notte (°C)
  • /Soil                      : Umidità terreno (val)
  • /Rain                     : Pioggia (0=pioggia, 1=asciutto)
  • /Lux                      : Luminosità (Lux) aprox
  • /Alarm                 : Allarme blocco caldaia (0=blocco, 1=ok)
  • /01_on                 : Attiva relè01 e restiruisce stato di tutti (1000)
  • /01_off                : Disattiva relè01 e restiruisce stato di tutti (0000)

(vale per i relè 01-04)

Dopo l’inclusione delle librerie è necessario configurare i parametri: indirizzo ip, default gateway (il vostro router o, come vedremo più avanti l’indirizzo del gateway OpenVPN) e porta. Seguono le definizioni relative al BUS OneWire (per le sonde di temperatura DS18D20) e agli altri sensori e relè.

Le librerie utilizzate (che quindi devono essere installate nel vostro IDE Arduino) sono le seguenti:

  • Dallas Temperature Control
  • Emon Lib Master
  • OneWire
  • Webserver.h

Per informazioni su come installare le librerie consultate : http://arduino.cc/en/Guide/Libraries

Vai a Domus parte 3: Networking

Domus – Internet of Things per la domotica (parte 3)

La terza parte dell’articolo illustra le soluzioni di rete adottate per superare le limitazioni degli operatori di telefonia mobile italiani, che da qualche tempo forniscono solo IP privati.


Dopo aver realizzato e testato positivamente il prototipo Arduino sulla mia LAN, è venuto il momento di provare l’accesso via WAN, che rappresenta le normali condizioni di utilizzo. Con ADSL Alice, l’accesso remoto non costituisce un problema, in quanto registrando un account gratuito ad un servizio DNS dinamico (NO-IP, Dyndns, ecc.) si ottiene facilmente l’equivalente di un indirizzo statico.

I problemi sono iniziati quando ho provato l’accesso tramite un router connesso ad una chiavetta Vodafone. Questo scenario di utilizzo è tutt’altro che remoto: spesso la casa da controllare non dispone di connettività ADSL e l’unica soluzione è questa.

Ho eseguito la prova con un router TP-Link TL-MR3420 (Morgana) dopo aver inserito una vecchia chiavetta Huawei nella sua porta USB 3G/4G con sim dati Vodafone ed aver associato l’end point ad un account dyndns.  Niente. Nessuna risposta. Un trace con WireShark mi ha confermato quello che già la classe di indirizzi avrebbe dovuto suggerirmi: 10.128.224.10, indirizzo IP privato. NAT. Niente da fare.

Sembrava che TIM fornisse ancora IP “alti”, ma qualcuno lo smentiva. Sono andato allora a comprare una sim TIM per provare.  Risultato: 10.239.31.157. Anche da TIM un indirizzo privato.

E se stabilissi una VPN tra la LAN di casa (servita da ADSL) e la LAN di Arduino (servita da chiavetta TIM)?  Sarebbe come fossero sulla stessa LAN.

Camelot Net

Non essendo i miei router in grado di attivare autonomamente le VPN, ho ripiegato su una soluzione basata su OpenVPN, riciclando ancora una volta i miei due vecchi e fidati Asus EEE-Box, Excalibur e Dragonet. Saranno loro a sostenere la VPN, il primo come server, il secondo come client. Dopo qualche tentativo (occhio al famigerato firewall di windows), con questa configurazione sui due end point ho ottenuto i primi risultati.

Generare una chiave simmetrica key.txt, tramite l’apposita utility e copiarla nelle cartelle “config” di OpenVPN di entrambi gli host. Quindi scegliere una subnet diversa da entrambe quelle degli host coinvolti (es. 10.3.0), aggiungere sul default gateway della rete del server (il router) una rotta statica che inoltri tutto il traffico destinato alla rete 10.3.0 verso l’IP privato del server (10.3.0.2).

Registrare su DynDNS e creareun hostname per il server (es: mioserver.dyndns.net). Installare sul server il client DynDNS e configurarlo per usare l’hostname appena creato.  Accertarsi che il relativo servizio parta automaticamente.

Installare OpenVPN su entrambi gli host, e inserire nelle cartelle “config” di OpenVPN i ripettivi file di configurazione, con estensione “ovpn”:

Dragonet Client.ovpn

Excalibur Server.ovpn

Sul server avviare il servizio “OpenVPN Server” e impostarne l’avvio automatico. Sul client, collegato ad internet con la connessione 3G,  eseguire “OpenVPN GUI” in modalità amministratore, cliccare col tasto destro sull’icona nella systray e scegliere “connect”.

Effettuare dei test di connettività. In caso di problemi, i log di OpenVPN sono molto esplicativi già a verb 3.

Il keep-alive ping garantisce la pronta connessione automatica della VPN ogni qualvolta le due macchine sono attive.

Rimane ancora da risolvere un problemino:  la creazione di una rotta statica verso la subnet  192.168.2.0 e l’inibizione del naturale percorso di ritorno di Morgana tramite Internet.

Per risolverlo, installare su Excalibur la comoda utility Passport per Windows, che permette il  forwarding di tutte le porte IP di Excalibur 192.168.0.200 su Dragonet  102.168.2.200 e configurare sul router  Taliesyn la rotta statica verso 192.168.2.0 tramite Excalibur 192.168.0.200.

Il risultato finale è la piena raggiungibilità di Arduino (mioserver.dyndns.net:85/cmd) da Internet (via Taliesyn, Excalibur, Dragonet ed infine Arduino 192.168.2.177:85).

Vai a Domus parte4: App Android 

Domus – Internet of Things per la domotica (parte 4)

La quarta parte dell’articolo illustra l’app Android per il telecontrollo di Domus.


Tasker è un’applicazione Android che permette la completa automazione dello smartphone. Per conoscere cosa fa, vi rimando direttamente a Google Play Store – Tasker.

Per lo sviluppo dell’app Android per Domus, mi sono basato sulla funzionalità “Editor di Scene”.

Screenshot_2015-02-19-12-07-16Una scena è una interfaccia grafica costituita da un insieme di elementi a cui possono essere collegati dei task in modo da essere eseguiti quando l’utente interagisce con essi, ad esempio toccandoli.

Tasker utilizza le scene per  le finestre di dialogo, i menu e per ottenere un input da parte dell’utente. Più in generale le scene possono essere visualizzate per  la creazione di semplici applicazioni o mostrando controlli aggiuntivi nella parte superiore delle applicazioni esistenti.

Le scene sono completamente personalizzabili dall’utente tramite un editor grafico drag-and-drop.

La funzione di export delle applicazioni, pur permettendone il salvataggio in formato XML, non fornisce un listato comprensibile, quindi non mi è possibile fornire, in questo articolo, il codice dell’app Domus. Tenete presente che, pur non essendo un programmatore, ho sviluppato senza difficoltà questa applicazione in poche ore di lavoro.

Il risultato si presenta a tutti gli effetti come una normale app Android che, utilizzando i servizi REST predisposti su Arduino, permette di effettuare il completo telecontrollo dei relè e l’elaborazione degli stati di ritorno, in modo da accendere i bottoni e rappresentare la condizione di ogni contatto. Inoltre il display superiore permette la visualizzazione dei valori dei sensori (temperatura, umidità, luce, corrente, flusso, condizioni di allarme, ecc.).

Vai a: Domus parte5: PLC Controller

Domus – Internet of Things per la domotica (parte 5)

La quinta e ultima parte dell’articolo, illustra le funzioni del PLC Controller, a supporto di Arduino, realizzato con l’EEE-Box.


Sebbene Arduino permetta la realizzazione di web servers e l’esecuzione di task complessi, per la mia sperimentazione ho deciso di limitarne l’uso a quello di attuatore relè e data-logger. Ho invece delegato le funzioni di raccolta, campionamento, storicizzazione e reporting dei dati, provenienti della rete di sensori, ad un piccolo server basato su EEE-Box con sistema operativo Windows 7.

Le componenti software utilizzate sono le seguenti:

Python 3.4.3 for Windows

EasyPHP for Windows

La libreria PHP pChart per I grafici

La piccola utility Tail

Le funzioni di raccolta, campionamento e storicizzazione sono affidate ad uno script Python che viene attivato ogni 15’ dallo scheduler di windows (l’intervallo di tempo può essere adattato alle effettive esigenze di controllo). Lo script invoca le chiamate REST, relative ai vari sensori, su Arduino e memorizza i dati raccolti in un set di file in formato csv nella directory c:\Domus.

Questo è lo script: Domus.py

Per farlo girare è necessario installare le librerie: smtplib, httplib2, datetime e os. La prima parte dello script interroga le sonde di temperatura, corrente, tensione, potenza, luminosità e condizione di allarme caldaia (sostituite gli indirizzi: mioserver.miodominio.net:85 con quelli a cui avete associato Arduino).

Alla fine, lanciando i file di comandi: Tail-Temp.batTail-Temp1.batTail-Emon.bat vengono regolate (a max 100 elementi nel mio caso) le lunghezze dei file dati csv, in modo da favorirne una comoda rappresentazione in forma di grafico.

La condizione di blocco caldaia è rilevato da Arduino mediante lettura di un ingresso digitale a cui è collegato un contatto della caldaia a condensazione, che viene chiuso in questo caso. Nell’ultima parte dello script Domus.py viene inviata una mail con soggetto ‘Caldaia in blocco!’, grazie alla libreria smtplib.

Il PLC è controllabile mediante il web server Apache messo a disposizione dal WAMP EasyPHP. Con l’aggiunta della comoda libreria PHP pChart sono riuscito a produrre facilmente grafici a partire dai file dati csv (opportunamente accorciati).

Temperature

Dopo aver installato e configurato pChart, provate ad eseguire da un browser lo script PHP: Temperature.php

Conclusioni

Tre mesi di test hanno dimostrato una discreta stabilità ed affidabilità del prototipo Domus. In particolare la soluzione scelta per ovviare all’indisponibilità di indirizzi ip privati, da parte dei provider di connettività mobile HSPA, si è rivelata solida e implicitamente sicura, grazie all’uso di VPN. Spero possa essere d’aiuto in generale a chiunque necessiti di un accesso remoto a siti non serviti da connettività ADSL.

La scheda Arduino Uno si è rivelata straordinariamente solida, perdonando le saldature fredde che non ho potuto evitare, nella realizzazione della Board di Adattamento con la basetta millefori. Anche i sensori, economici e facilmente reperibili, si sono risultati molto stabili e precisi.

Per lo sviluppo dello sketch, ho utilizzato alcune librerie, integrando porzioni di codice reperiti in rete da progetti open-source diversi, come Emon (Open Energy Monitor). Talvolta, considerato il carattere prototipale della realizzazione, mi sono concesso qualche approssimazione, come nel caso della trasformazione in Lux dei valori di output (assolutamente non lineari e difficilmente linearizzabili) della fotoresistenza VT90N3. Per la finalità di rilevare se c’è poca o tanta luce, mi è stato sufficiente così.

La scelta di relegare Arduino al ruolo di data-logger e di attuatore, è stata inizialmente dovuta alla mia scarsa conoscenza dell’ambiente di sviluppo della scheda, ma alla fine si è rivelata razionale e coerente con le limitate caratteristiche hardware di Arduino Uno. Ho considerato una possibile evoluzione del prototipo con l’adozione della scheda Arduino  Yún (che, grazie al sistema operativo Linux, permetterebbe di evitare il PLC).

Naturalmente qualunque suggerimento sarà ben accetto.

Dan

#IoT Domus: una Goccia nell’Oceano dei Big Data

di Dan Pejeroni [Infosphere]

 L’evoluzione del progetto IoT Domus su hardware Arduino Uno, per utilizzare ora il cloud Blynk.

Temperature

Il progetto Domus prevede una sezione attuatori per il comando dei sistemi di riscaldamento, irrigazione e illuminazione giardino e una sezione sensori che raccoglie e gestisce le varie sonde sul campo (tensione, corrente, flusso acqua, temperatura, umidità terreno, luce, pioggia) e allarmi (blocco caldaia, intrusione, incendio, allagamento, gas).

Nella prima serie di articoli avevo descritto un prototipo di telecontrollo affidato ad un PLC controller (basato su un Asus EEE-Box con Windows 7) che svolgeva funzioni di data logger, reporting e automazione di processo e ad un’applicazione Android (per il comando remoto degli attuatori), sviluppata con Tasker.

Questa nuova versione si basa sul Cloud IoT Blynk.

cwqpfohwiaaj6xg-jpg-large

Blynk è una piattaforma per iOS e Android che permette il controllo di schede Arduino, Raspberry Pi e altre, collegate a Internet tramite Wi-Fi, Ethernet o mediante il nuovo chip ESP8266. Si tratta di un cruscotto digitale dove è possibile costruire una interfaccia grafica per progetti IoT, semplicemente trascinando e rilasciando widget.

Blynk è stato finanziato su Kickstarter da 2.321 sostenitori che hanno creduto nell’idea. È possibile visitare la loro pagina della campagna e sapere di più.

Il Cloud Blynk è in grado di acquisire e memorizzare i dati rilevati dai sensori, collegati ad una scheda tra le molte supportate.

La piattaforma è costituita da tre componenti principali:

Blynk App – che permette di creare interfacce grafiche per i progetti IoT, semplicemente utilizzando vari widget forniti.

Blynk Server – che è responsabile di tutte le comunicazioni tra lo smartphone e l’hardware. È possibile utilizzare il Cloud Blynk o installare un server Blynk localmente. E completamente open-source e può facilmente gestire migliaia di dispositivi in comunicazione con il server (o il Cloud) elaborando tutti i comandi in entrata e in uscita

architecture

Ogni volta che un sensore rileva una nuova misura, oppure viene premuto un pulsante sull’app Blynk, i messaggi di controllo vengono trasferiti verso/dal Cloud Blynk, che acquisisce i dati oppure attiva un attuatore sulla scheda.

cwpaxetwiaqlmcq

Per iniziare con Blynk è necessario scaricare l’app Android o IOS, registrarsi sul sito per ottenere un Auth Token (che dovrà essere utilizzato sia nell’app che nello sketch della scheda), installare la libreria fornita da Blynk e scrivere il codice specifico da installare sulla scheda.

La versione 4.2 Cloud di Domus è disponibile su GitHub.

schermata-2016-11-24-alle-14-27-59

Intellĭgo – Semantic Enterprise Content Manager (en)

di Dan Pejeroni [Infosphere]

EnIntellĭgo, intellĭgis, intellegi, intellectum, intellĭgĕre

tr. III coniug.| v. tr. III conjug.| tr. v. III conjug.

intendere (v.tr.); apprendere (v.tr.); capire (v.tr.); comprendere (v.tr.);  accorgersi (v.pron.); afferrare (v.tr.).


web-semanticoIn the last years, due to the revolution introduced by the mobile devices, we have witnessed a profound revolution of the web. The need to separate the content from its presentation has become a priority, if nothing else, to be able to adapt the format of the pages to the display capabilities of the different devices, which currently range from large information screens to huge advertising LCD, down to the tiny wearable devices, passing through the today ubiquitous smartphones and tablets. Furthermore, the independence of the content is a prerequisite for an efficient translation to suit the many languages and cultures , for an audience that has become global.

Even the Internet surfing habits of the users, in a web increasingly Google centric, are rapidly changing. In mobile devices, the apps have almost completely replaced the browser, enough to force the operators of specialized portals to develop apps and deliver their content to them. Even for this purpose, it is essential to have a pure content.

Tim Berners Lee , the father of the world wide web, launched in 2001 the idea of turning it into a large base of universal knowledge, introducing the concept of the semantic web. The idea was to replace in the web, the too rigid hyperlink, with semantic links applied to content and, above all, provide them with meaning.

In October 2014, with the publication by the W3C, of the recommendation on the HTML5, with the simultaneous adoption by the major browser developers and the Google search engine, materialized the concrete possibility to the realization of  the Lee’s dream.  In fact, HTML5 comes with a marked orientation to semantics , based on a new generation of meta tags : microdata which, if properly applied to the content, can give them meaning. But, again, you must have pure content.

rich-snippets-infoGoogle with the latest Hummingbird algorithm, uses semantic tags to produce much more precise SERPs, enhance the more valuable content and provide them to the users with related information and Snippets, which often make unnecessary the use of the website that hosts that content. Increasingly, instead of calling the url of a website to get information from it, we seek and obtain, directly from a Google search, the final information. This will move the focus from the web portal to the specific content (that is news , a sports result , the price of a product , the profile of a person or the history of a monument).

To take advantage from the opportunities that this incredible technological evolution is making available, we need pure content, to enrich with semantic information, to make them available in many languages, filtered according to the user’s profile and fit them, time to time, to his device.

The traditional CMS ( Content Management System), give little help in this area, as they are not able to operate such a precise distinction between the content and its presentation.

Intelligo was developed based on all these considerations and on this basis, to develop an engine for creation and management of quality content publishing, to be supplied to the traditional portals and websites , as well as to the apps of smartphones and tablets, using common REST services. The information can be enriched with micro data and linked data, filtered by rules and translated into all the languages of the world. The presentation can be applied using CSS3 style sheets . The Google search engine , thanks to the semantic microdata, is able to interpret in an optimal manner the content of Intelligo , providing best placements in SERP and controlled Snippets.

The Intelligo solution

Intelligo is a EMS (Enterprise Content Management) massively multilingual, designed to provide a complete separation between the content and their typographic or multimedia presentation. For the management of the structural aspects and graphics, it can operate in conjunction with leading open source CMS (WordPress , Drupal , Joomla). It also allows the content enrichment with semantic tags and microdata , according to the standards Schema.org and RDF .

diapositiva2
In Intelligo “the content is pure”, as being independent of fonts, colors, capital letters, as well as its translation in multiple languages and it is a value, as re-usable and meaningful. This feature is the base of the publishing and the web of the future (multimedia publishing and the semantic web), but even now it is possible to exploit the possibilities in terms SEO with Google, getting for our web pages, better SERP positioning and more effective snippets. In addition, the reuse of the meaningful sentences allows significant savings in term of costs for translations .

The visibility of the content in Intelligo can be controlled by rules that allow customization of the items based on the user profiles, as well as the management of business policies, rules and laws, by a interpretation engine applied to user questionnaires .

Intelligo Enterprise Server provides a convenient interface RESTful (based on REST or SOAP ) , which return the contents in XML , JSON and HTML5 to power apps and web portals .

Intellĭgo – Semantic Enterprise Content Manager (it)

di Dan Pejeroni [Infosphere]

IT Intellĭgo, intellĭgis, intellegi, intellectum, intellĭgĕre

tr. III coniug.| v. tr. III conjug.| tr. v. III conjug.

intendere (v.tr.); apprendere (v.tr.); capire (v.tr.); comprendere (v.tr.);  accorgersi (v.pron.); afferrare (v.tr.).


web-semantico

Negli ultimi anni, per effetto della rivoluzione introdotta dai dispositivi mobili, abbiamo assistito ad una profonda rivoluzione del web. L’esigenza di svincolare il contenuto dalla sua presentazione è diventata una priorità, se non altro per poter adattare i formati delle pagine alle capacità di visualizzazione dei diversi dispositivi, che oggi vanno dai grandi pannelli informativi o pubblicitari LCD, fino ai minuscoli wearable device, passando attraverso gli ormai onnipresenti smartphone e tablet. Inoltre l’indipendenza dei contenuti è prerequisito per una efficiente traduzione per adattarli alle innumerevoli culture, di un audience divenuto ormai globale.

Anche le abitudini di consultazione degli utenti, in un web sempre più Google centrico, stanno rapidamente mutando. Nei dispositivi mobili le app hanno quasi completamente sostituito il browser, tanto da costringere i gestori di portali specialistici a mettere a disposizione anche le relative app. Anche per questo scopo, è indispensabile disporre di contenuti puri.

Tim Berners Lee, il padre del world wide web, lanciò nel 2001 l’idea di trasformarlo in una grande base della conoscenza universale, introducendo il concetto di web semantico. L’idea era quella di sostituire la ragnatela costituita dai troppo rigidi hyperlink, con collegamenti semantici applicati ai contenuti e soprattutto, dotarli di significato.

A ottobre 2014, con la pubblicazione da parte del consorzio W3C, della raccomandazione sul linguaggio HTML5, con la sua contestuale adozione da parte dei produttori di browser e dello stesso motore di ricerca Google, si è determinata la concreta possibilità di realizzare il sogno di Lee. Infatti, HTML5 arriva con un marcato orientamento alla semantica, basato su una nuova generazione di meta tag: i microdati che, se opportunamente applicati ai contenuti, possono conferire loro il significato. Ma ancora una volta è necessario disporre di contenuti puri.

rich-snippets-infoGoogle con il recentissimo algoritmo Hummingbird, utilizza i tag semantici per produrre SERP molto più precise, valorizzare i contenuti di maggior pregio e fornire agli utenti informazioni correlate e Snippet, che rendono spesso superfluo il ricorso al website che le ospita. Sempre più spesso, invece di richiamare l’url di un sito per ottenere informazioni, cerchiamo ed otteniamo, direttamente da una ricerca Google, quell’informazione. Questo sposterà il focus dal portale al singolo contenuto (che sia una notizia, un risultato sportivo, il prezzo di un prodotto, il profilo di una persona o la storia di un monumento).

Per cogliere le opportunità che questa incredibile evoluzione tecnologica ci sta mettendo a disposizione, servono contenuti puri, da arricchire con informazioni semantiche, per poterli rendere disponibili in molte lingue, filtrati in base al profilo dell’utente ed adattati volta per volta al suo dispositivo.

Le soluzioni CMS (Content Management System) e WCM (Web Content Management) tradizionali, siano di mercato, che open source aiutano poco in questo ambito, in quanto non sono in grado di operare una così spinta distinzione dei contenuti dalla presentazione.

Intelligo nasce da queste considerazioni e su queste basi, per realizzare un motore per la creazione e la gestione di contenuti di qualità editoriale, da erogare ai tradizionali portali e siti web, così come alle app, utilizzando comuni servizi REST. Le informazioni possono essere arricchite da microdati, filtrate da regole e tradotte in tutte le lingue del mondo. La presentazione può essere applicata mediante fogli stile CSS3. Il motore di ricerca Google, grazie ai microdata semantici, è in grado di interpretare in maniera ottimale i contenuti di Intelligo, fornendo posizionamenti migliori e snippet controllati.

La soluzione Intellĭgo

Intelligo è un ECM (Enterprise Content Management) per il web semantico, massivamente multilingua e progettato per fornire una completa separazione tra i contenuti e la loro presentazione tipografica o multimediale. Inoltre permette l’arricchimento dei contenuti stessi con tag semantici e microdata, secondo gli standard Schema.org ed RDF.

diapositiva2

In Intelligo il contenuto è puro, in quanto indipendente da font, colori, lettere maiuscole, così come dalla sua traduzione in una più lingue e costituisce un valore, in quanto riutilizzabile e dotato di significato. Questa caratteristica rappresenta la base dell’editoria e del web del futuro (l’editoria multimediale e il web semantico), ma già da oggi è possibile sfruttarne le possibilità in termini SEO con Google, ottenendo per le proprie pagine web, migliori posizionamenti di ricerca e snippet più efficaci. Inoltre il riutilizzo delle “frasi a senso compiuto” permette di realizzare risparmi significativi nei costi per le traduzioni.

La visibilità dei contenuti in Intellĭgo è controllata da regole che permettono la personalizzazione degli articoli in base a profili utente, così come la gestione di business policy, norme e leggi, mediante un motore di interpretazione applicato a questionari utente.

Intellĭgo Enterprise Server fornisce una comoda interfaccia RESTful (basata su servizi REST o SOAP), che restituiscono i contenuti in formato XML, JSon o HTML5 per l’alimentazione di app e portali web.

Block Chain 2.0: Il rinascimento del denaro

di Dan Pejeroni [Infosphere]

Una rete Bitcoin è un’ entità decentrata. Per questo principio ogni volta che si verifica un’operazione di pagamento tra i membri della rete, questa deve essere verificata e convalidata, in modo da assicurare che ogni transazione si svolga solo tra due parti e che non vi sia duplicazione della spesa.

3

Questo processo di verifica viene effettuato da alcuni membri della rete, chiamati minatori che, utilizzando software specializzati e mettendo a disposizione la potenza di elaborazione dei loro computer, verificano le transazioni. Sembrerebbe semplice, ma la potenza di elaborazione necessaria è decisamente elevata.

E’ questo il punto dove la Block Chain comincia a prendere forma. Ogni pochi minuti, un minatore crea un blocco di tutte le transazioni che si verificano sulla rete Bitcoin. In sostanza crea un file verificato, che contiene una copia di tutte le operazioni che si sono succedute negli ultimi 10 minuti. E’ importante sottolineare l’aspetto della verifica.

Per i propri sforzi, il minatore è compensato in Bitcoin. È qui che si manifesta la matematica della valuta e il modo in cui si differenzia dal sistema bancario tradizionale a riserva frazionaria. La quantità totale di Bitcoin che potranno esistere è fissata in 21 milioni.

Ogni blocco è collegato al precedente, in modo da formare una catena. Questo raggruppamento di blocchi avviene secondo l’algoritmo alla base della creazione di Bitcoin ed è definito protocollo Block Chain.

1

Se il TCP/IP è un protocollo di comunicazione, il  Block Chain è un protocollo Value-Exchange.

Da quando è stata pubblicata online la white paper di Satoshi (pseudonimo del creatore di Bitcoin), altre crypto-currencies sono proliferate nel mercato. Ma, a prescindere dalla valuta e dalle questioni di deflazione che sono state spesso oggetto di dibattito, il protocollo di Block Chain sottostante e l’architettura di calcolo distribuito utilizzato per raggiungere il suo valore, rimangono gli stessi.

2

Come il protocollo aperto di comunicazione TCP/IP, ha creato Internet ed una moltitudine di prolifici servizi di business, il protocollo Block Chain offre la base su cui le aziende potranno creare catene a valore aggiunto. Utilizzando il reticolo di integrità delle operazioni, una nuova generazione di applicazioni commerciali stanno per entrare nel mercato.

Micropagamenti

Il sistema di pagamento utilizzato fino ad oggi, è stato progettato nel 1950 e comporta un costo fisso per ogni transazione. Di conseguenza l’invio di piccoli pagamenti (ad esempio di pochi centesimi) non risulta affatto economico.

Il protocollo Block Chain consente il trasferimento istantaneo di valore, indipendentemente dalle dimensioni, proprio come il TCP/IP consente la trasmissione immediata di informazioni. Una società che sta facendo uso di questo concetto è ChangeCoin.

ChangeCoin offre un’infrastruttura di micropagamenti per il Web. Prendiamo ad esempio un sito che, con l’account free, intenda offrire ai propri utenti solo la lettura di un quarto di un articolo e richieda una sottoscrizione minima, per accedere alla versione completa dello stesso. Con i micropagamenti, l’utente potrà ora pagare pochi centesimi per leggere l’intero articolo, senza impegnarsi in alcuna forma di abbonamento. Un altro esempio di questa possibilità potrà essere applicata alla Pay-tv, dove i consumatori potranno acquistare e pagare un singolo programma o applicata ai servizi di connettività, presso gli hot spot WiFi, dove gli utenti si limiteranno a  pagare il solo traffico generato.

ChangeCoin ha creato anche un’opportunità per i creatori di contenuti e blogger, in forma di ChangeTip. I lettori possono ora utilizzare i Bitcoin, per ricompensare il creatore di un contenuto con una piccola somma (anche solo 5 centesimi). Questo non è solo un modo innovativo per dimostrare apprezzamento, ma un modello che cambierà il business della creazione di contenuti e del loro mantenimento.

Aziende come Chain, ora consentono agli sviluppatori di costruire API sul protocollo Block Chain, che permettono di:

  • allocare risorse digitali come energia, larghezza di banda, storage e potenza di calcolo, ai dispositivi connessi/servizi che li richiedono (es. FileCoin);
  • API per Oculus Rift per l’accesso al mondo virtuale, che sta diventando sempre più simile agli ambienti dei film di fantascienza. Questi sviluppatori stanno cercando di creare un set di API da utilizzare nello spazio virtuale per effettuare transazioni, sfumando i confini tra le economie virtuali e reali;
  • API per micropagamenti personalizzati sul tipo delle transazioni caratteristiche dalla sharing economy, come pagare la lettura di un blog, piuttosto che un singolo passaggio nel car sharing.

Smart Contract e moneta programmabile

Gli Smart Contract sono programmi che codificano ed incorporano condizioni e corrispettivi. Quando si verifica una transazione tra due parti, il programma è in grado di verificare se il prodotto/servizio sia stato effettivamente inviato dal fornitore. Solo dopo la verifica, la somma viene trasmessa al conto del fornitore. Un altro esempio sono i programmi intelligenti che funzionano a condizioni predefinite tra fornitore e cliente, assicurando un servizio di deposito di garanzia in tempo reale, con costo marginale vicino allo zero. Codius offre già oggi un completo ecosistema per i Smart Contract.

Oltre alle transazioni finanziarie, gli Smart Contract stanno entrando anche nel sistema giuridico. Aziende come Empowered Law, utilizzano un registro pubblico distribuito delle transazioni, basato su Block Chain, per fornire servizi di multi-signature per la protezione di beni, pianificazione, risoluzione delle controversie, leasing e corporate governance. Un esempio di applicazione dei Distributed Contracts sono i cosiddetti Colored Coins, ossia un set di dati aggiuntivi (attributi) pubblicati e gestiti sul Registro Decentrato, che trasformano i coins in token, al fine di poter essere impiegati per rappresentare qualsiasi cosa, non necessariamente una valuta.

Digital Assets e Smart Property.

Costruendo entità digitali sui Colored Coins, si ottengono beni la cui proprietà è registrata digitalmente. I Bitcoin sono beni digitali ma, dal momento che la Block Chain è un Registro Decentrato di beni, essa può anche essere utilizzata per registrare la proprietà e il trasferimento di qualsiasi risorsa connessa al Bitcoin. In questo modo, un Bond digitale potrebbe pagare cedole e rimborsare il capitale all’indirizzo del detentore, senza il bisogno di custodi.

Un ulteriore evoluzione di questo concetto, è rappresentato dalla Smart Property. Una Smart Property è una proprietà che ha accesso alla Block Chain e che può intraprendere azioni sulla base delle informazioni in essa pubblicate. In altre parole la Smart Property può essere controllata tramite la Block Chain (ad esempio, un auto la cui proprietà è rappresentata da una risorsa digitale nella Block Chain). L’automobile fisica è connessa a Internet ed è in grado di leggere la Block Chain, quindi può tenere traccia dello stato della risorsa digitale che la rappresenta. Come il Digital Asset viene trasferito da un indirizzo ad un altro, l’auto, consapevole dell’aggiornamento di stato avvenuto sulla Block Chain, è in grado di intraprendere le azioni necessarie, come cambiare il suo proprietario. E un modo di automatizzare l’Internet of Everything.

Ethereum e il browser  Mist

Ethereum è al lavoro per unire il Registro Distribuito con l’ambiente di programmazione di Turing, che è un linguaggio che può essere utilizzato per simulare qualsiasi altro linguaggio di programmazione (e non solo il suo). L’obiettivo della società è la realizzazione una sorta di coltellino svizzero del Block Chain e degli strumenti di crittografia per consentire anche agli utenti non-tecnici, di sfruttare pienamente queste nuove tecnologie sul web.

Block Chains parallele e Side Chains

Alcuni sviluppatori stanno iniziando a considerare la creazione di Block Chain alternative, per evitare la dipendenza da una singola catena. Le Block Chain parallele e laterali offrono un buon compromesso tra scalabilità e possibilità di innovazione.

Le Filippine e il Peso

Il governo delle Filippine ha in progetto di mettere la propria moneta (il Peso) in Block Chain, per migliorare i propri servizi finanziari. Un’iniziativa decisamente rivoluzionaria.

Le Crypto tecnologie e le banche europee

Diverse banche di medio-piccole dimensioni hanno adottato l’architettura Block Chain. La tedesca Fidor Bank , per esempio, offre alla clientela un sistema di trading in valuta e di trasferimento fondi trans-frontaliero basato su Ripple dal 2014. Il sistema si basa su block chain, ma non utilizza un registro pubblico, operando in modo distribuito su nodi appartenenti agli aderenti al network. I costi e la velocità di esecuzione, praticamente in tempo reale, sono i principali punti di forza del sistema.

L’uso di un registro distribuito ma non pubblico sembra l’approccio preferito dalle istituzioni finanziarie nell’adozione delle tecnologie crittografiche basate su Block Chain. Almeno questo è quanto consiglia l’Associazione Bancaria Europea (ABE-EBA) nel suo recente rapporto sulle Krypto tecnologie. Esaminando le possibili applicazioni  delle architetture Block Chain e delle relative tecnologie crittografiche, l’EBA individua quattro categorie di applicazioni:

  • monetarie (criptovalute);
  • registrazione della proprietà di asset (titoli, veicoli, case, nomi di dominio);
  • ambienti di sviluppo applicazioni (applicazioni distribuite su reti decentralizzate peer-to-peer pubbliche, ossia versioni decentralizzate dei vari servizi cloud sul mercato oggi);
  • scambio di rappresentazioni digitali di asset già esistenti (valute, metalli, titoli azionari, bond) basato su un registro condiviso dai partecipanti al network.

Lo studio dell’EBA ritiene che dei quattro abiti, quello più maturo e più adatto per l’adozione da parte delle istituzioni finanziarie tradizionali sia l’ultimo. Alla base sta l’utilizzo di registro condiviso, non però su rete pubblica ma solo sui nodi dei partecipanti al network, che si impegnano a pubblicare rappresentazioni digitali degli asset trattati. In questo modo la fiducia è organizzata direttamente tra i partecipanti e non per mezzo di strumenti tecnologici come il mining. Alcuni dei partecipanti al network hanno un ruolo speciale, di convertire le rappresentazioni digitali in asset appartenenti al mondo fisico. Questi partecipanti speciali che fanno da porta verso e dall’esterno sono definiti market maker. Un ruolo aggiuntivo dei market maker è quello tradizionale di garantire liquidità e asset. Infine, tra alcuni partecipanti al network è possibile attivare relazioni esclusive, riducendo i rischi di controparte (come accade in alcune dark pools). L’EBA individua quattro possibili applicazioni di queste reti: cambi/rimesse, pagamenti real-time, cosiddetto documentary trade (il caso più noto sono le lettere di credito per il commercio estero); scambio di asset di ogni tipo, dalle valute ai titoli di debito, alle azioni, ai metalli e alle commodities. Il vantaggio delle architetture block chain in tutte queste applicazioni possibili è la riduzione della complessità, l’esecuzione in tempo reale (che riduce i rischi di insolvenza) e il coordinamento automatico tra tutte le parti grazie al registro condiviso delle transazioni.

Indipendentemente dai consigli dell’EBA, diverse istituzioni finanziarie si stanno interessando a block chain. Oltre ad alcune banche piccole e medie, come la già citata Fidor e diverse negli Stati Uniti, si stanno muovendo i giganti. Pescando tra gli annunci delle ultime settimane: UBS ha costituito un laboratorio interno  sulla Block Chain presso la sede di Londra; Goldmann Sachs ha investito 50 milioni di dollari in una start-up, Circle Internet Financial, che sta realizzando un servizio di pagamenti real-time decentralizzato basato su Block Chain; Il Nasdaq sta costruendo un pilota per il Nasdaq Private Market, un’area di scambio per i titoli azionari in fase pre-IPO che consente il trading di azioni tra privati. Fino ad oggi, il trading sul Private Market richiedeva la stipula di contratti legalmente vincolanti con l’intervento degli studi legali. Utilizzando la Block Chain, questa esigenza sparisce: uno scambio viene registrato in modo immodificabile sul registro condiviso, senza bisogno di legali.

Infine, Banco Santander ha identificato 25 aree dove applicare le architetture Block Chain. Tra quelle di interesse ufficialmente annunciate ci sono il money transfer internazionale, la finanza per il commercio, i prestiti sindacati e la gestione del collaterale. La banca spagnola ha costituto un’unità di sviluppo denominata Crypto 2.0  e ha deciso di investire, tramite il proprio fondo specializzato in fintech, Santander InnoVentures con una dotazione di 64 milioni di euro, in una start-up attiva nelle tecnologie Block Chain. L’attività di Santander è particolarmente interessante perché non si limita alle aree “sicure” identificate da EBA. In un recente intervento pubblico, infatti, Julio M.Faura, global head of R&D innovation di Santander, ha chiaramente identificato come area più promettente quella degli ambienti applicativi e in primo luogo i Smart Contracts.

Una trasformazione radicale

A dicembre 2014, Don Tapscott, uno dei massimi esperti di tecnologia ed innovazione ha ammesso di essersi sbagliato a proposito di Bitcoin, dichiarando “… Pensavo non sarebbe mai decollato. Ma ora penso che non solo lo farà come moneta, ma che, con la  sottostante tecnologia Block Chain, diventerà una parte fondamentale della prossima generazione di Internet trasformando radicalmente il commercio e le nostre stesse istituzioni sociali ”

 

Fonti:

  • Kariappa Bheemaiah (Quantitative Research Analyst at Grenoble Ecole de Management)
  • Istituto Centrale delle Banche Popolari Italiane S.p.A.