Big Data per l’analisi del Corporate Web italiano

big-data-machine-learning-web-italiano.jpg

[immagine della cover tratta da Flickr, @a_t_ljungberg]

Un’intervista al CEO di SpazioDati, Michele Barbera, per capire come le tecnologie del mondo Big Data vengono usate per comprendere ed analizzare il Web dei siti aziendali italiani.


Come fa Atoka ad analizzare 800 mila siti web aziendali?

Nell’autunno del 2014 il nostro partner e investitore Cerved Group, ci ha chiesto aiuto per analizzare i contenuti di un piccolo campione di siti web aziendali, i cui indirizzi web venivano trovati manualmente da un gruppo di analisti e redattori utilizzando i normali motori di ricerca.

L’obiettivo dell’esperimento era quello di verificare se l’analisi dei contenuti dei siti web potesse aiutarci ad identificare aree di attività, prodotti e servizi offerti dalle aziende e altre informazioni utili, in maniera più precisa di quanto non possano farlo i dati ufficiali (camerali) e in particolare i codici ATECO.

All’epoca, il numero di siti web da analizzare era limitato a poche decine di migliaia per cui decidemmo di utilizzare dei semplici script python che data in input una lista di aziende e relativi siti web, accedessero ai siti web, scaricassero i testi delle pagine principali ripulendoli dai contenuti non significativi e infine utilizzassero l’analisi semantica offerta dalle Dandelion API per estrarne un set di parole chiave (keywords) rappresentative dell’attività dell’azienda.

Ci rendemmo rapidamente conto che l’esperimento aveva avuto successo e che era possibile estrarre informazioni molto precise sulla reale attività delle aziende. Ad esempio, ecco alcune delle keywords estratte dal nostro stesso sito aziendale spaziodati.eu:

Big Data, Semantic Web, Machine-Readable Data, Open Data, Machine Learning, Software

Se provate a confrontarlo con il codice ATECO depositato per SpazioDati in Camera di Commercio, vi renderete immediatamente conto del valore aggiunto delle keywords. Il codice ATECO di SpazioDati recita infatti:

[62.01] Produzione di software non connesso all’edizione

piuttosto vago!

Ma c’è di più: grazie alle Dandelion API, le parole chiave non sono soltanto un stringa o una sequenza di caratteri, ma piuttosto delle entità, nodi di una rete semantica (o knowledge graph), collegate tra loro da una rete di relazioni e rapporti di similarità. La capacità di estrarre entities che rappresentano nodi di una knowledge base, anzichè semplici sequenze di parole, ci permette di ottenere molte più informazioni e offrire funzionalità avanzate, ma di questo parleremo in un prossimo post!

Per adesso ci basti sapere che possiamo sfruttare la natura delle entities per suggerire agli utenti, in fase di ricerca, che Machine Learning e Intelligenza Artificiale sono due concetti simili.

 

collegamenti SpazioDati

 

Il risultato di quel primo esperimento ci ha permesso di renderci conto di quanto promettente fosse quell’approccio e di quanto valore avremmo potuto offrire agli utenti di Atoka, se invece che limitarci a poche decine di migliaia di siti Web avessimo trovato il sistema di “scoprire” i siti Web di molte più aziende.

Nei mesi successivi abbiamo lavorato sodo per costruire un sistema complesso di crawling del Corporate Web su larga scala, in sintesi, il sistema ci permette di:

  1. effettuare un crawling settimanale di centinaia di milioni di pagine del web italiano (attenzione, non soltanto i domini .it!);
  2. identificare siti web di oltre 500 mila aziende italiane per un totale oltre 800 mila siti web (sì, molte aziende hanno più di un sito web);
  3. estrarre informazioni utili dai siti web, come parole chiave e altro.

Naturalmente per il crawling e l’analisi di centinaia di milioni di pagine web i nostri semplici script python non erano più sufficienti e abbiamo dovuto realizzare una infrastruttura dedicata. Ecco, a grandi linee, come è fatta:

Infrastruttura SpazioDati

 

L’infrastruttura gira in cloud su un cluster AWS on-demand di circa 50 macchine (la dimensione esatta è variabile, a seconda di numerosi fattori) e per scaricare, analizzare e indicizzare circa 100 milioni di pagine web, impiega al momento poco più di 24 ore.

La pipeline è logicamente divisa in 4 fasi:

  1. CRAWLING
    Il crawler, basato su una versione pesantemente modificata di Apache Nutch, prende in input un seed di domini provenienti da varie fonti manuali e automatiche, dalle quali inizia a muoversi verso altri siti che vengono progressivamente visitati e scaricati. Utilizziamo una politica di “targeted crawling” in modo da evitare di restare intrappolati in siti spam e di limitare la dimensione del crawling (la cui dimensione è comunque di decine di terabytes): grazie a tale politica riusciamo a visitare “solo” poche centinaia di milioni di pagine web, che contengono comunque una buona porzione dei siti web aziendali;
  2. INDEXING
    In questa fase vengono compiute diverse operazioni di pulizia e analisi dei segment files (porzioni del crawl). L’analisi più significativa e computazionalmente dispendiosa – sono pur sempre centinaia di milioni di pagine web! – consiste nell’identificare i contenuti semanticamente rilevanti, scartando ad esempio l’advertising e altro, e nell’analizzarli utilizzando le Dandelion API e altri algoritmi di machine learning per estrarre features, come numeri di telefono, indirizzi, nomi di aziende, e in genere tutto quello che ci sarà utile nella fase successiva per determinare l’appartenenza o meno di un dato sito web ad una certa azienda.

    Le feature estratte, insieme ad alcuni dati strutturati e al testo significativo vengono poi memorizzati in un search index implementato sotto forma di cluster Elastic Search;

  3. LINKING
    E’ una delle fasi più complicate dell’intera pipeline e mira ad associare a ciascuna azienda uno o più dei siti web presenti nell’indice. L’associazione avviene confrontando da una parte i dati estratti nella fase precedente e dall’altra i dati strutturati su tutte le 6 milioni di aziende italiane che provengono dai database del nostro partner Cerved Group. Il sistema di matching si basa su una serie di algoritmi di machine learning e su una catena di regole, che lavorano simbioticamente per determinare uno score di “similarità” tra un’azienda e un sito web. Non potendo effettuare un confronto tra 6 milioni di aziende da una parte e centinaia di milioni di pagine web dall’altra, perché sarebbe troppo lungo e dispendioso, utilizziamo delle tecniche di dimensionality reduction per ridurre il numero di confronti necessari;

  4. SEMANTIC ANALYSIS
    L’ultima fase logica, che dal punto di vista implementativo è in realtà parzialmente fusa nelle fasi precedenti, mira ad estrarre le parole chiave (o meglio, le key entities) di cui abbiamo parlato all’inizio di questa storia e altri dati relativi al footprint delle aziende sul web. Anche questa fase è molto complessa e in sintesi consiste nell’applicare tecniche di analisi semantica dei contenuti, nell’applicare una serie di algoritmi di Machine Learning e Intelligenza Artificiale e nel compiere una pletora di operazioni di pulizia dei dati a posteriori, utilizzando metodologie statistiche.

Il risultato in uscita dalla pipeline sono una serie di nuovi dati collegati alle aziende, tra cui le famose parole chiave o entities di cui sopra. Questi dati provenienti dai siti web, vengono poi in fasi successive incrociati con dati provenienti da altre fonti, tra cui ad esempio i social media e le news, al fine di verificarne l’attendibilità.

Solo dopo aver compiuto questo lungo viaggio, i dati vengono infine resi disponibili agli utenti nell’interfaccia di ricerca di Atoka, che permette sia di effettuare ricerche per parola (entity!) chiave, sia di utilizzare Atoka come se fosse un mini-Google circoscritto al mondo aziendale e privo di tutto il rumore generato da contenuti non aziendali, effettuando ricerche full-text sui siti delle aziende (vedi il video tutorial per la ricerca su Atoka).

Buona ricerca!

Michele Barbera
CEO di SpazioDati

Michele BarberaBig Data per l’analisi del Corporate Web italiano
Share this post

1 comment

Join the conversation

Join the conversation

Related Posts