soggia lidia - e-Lite - Politecnico di Torino
Transcript
soggia lidia - e-Lite - Politecnico di Torino
POLITECNICO DI TORINO IV Facoltà di Organizzazione d’Impresa e Ingegneria Gestionale Laurea in Ingegneria dell’Organizzazione d’Impresa Tesi di Laurea Raccolta ed analisi di metadati per pubblicità contestualizzata: YouTube, un caso di studio Relatore: ing. Fulvio Corno Tutore aziendale: ing. Alberto Ciaramella Candidata: Lidia Soggia Marzo 2010 INDICE 1. Introduzione: contesto generale ........................................................................... 1 1.1 Social media ....................................................................................................... 1 - Storia recente ...................................................................................................... 1 - Diffusione e potenzialità ..................................................................................... 3 - Problematiche: sovraccarico informativo .......................................................... 3 2. Contesto specifico ................................................................................................... 5 2.1 Il content based advertising................................................................................ 6 2.2 Il software TraceSense: la semantica per classificare automaticamente i multimedia ................................................................................................................ 7 2.3 YouTube .............................................................................................................. 9 3. Obiettivi e requisiti della monografia ................................................................ 14 3.1 Obiettivi: ........................................................................................................... 14 - Realizzazione di un’applicazione per l’estrazione di dati da YouTube ............ 14 - Caratterizzazione della base dati ottenuta ....................................................... 14 3.2 Requisiti specifici.............................................................................................. 15 - Individuazione di un dataset reale per la validazione di TraceSense .............. 15 4. Tecnologie utilizzate ............................................................................................ 18 4.1 Strumenti di sviluppo per applicazioni web ..................................................... 18 - Java ................................................................................................................... 18 - Log4J: debug di applicazioni Java ................................................................... 19 - MySQL .............................................................................................................. 20 - AJAX ................................................................................................................. 20 - Servlet ............................................................................................................... 22 - JSON ................................................................................................................. 22 4.2 Web Services: API di Google in linguaggio Java ............................................ 23 5. Strategia di soluzione del problema ................................................................... 32 - Algoritmo utilizzato per estrarre dati dai web services .................................... 33 - Metodologia di spidering incrementale ............................................................ 35 - Interfaccia grafica come strumento di valutazione di TraceSense ................... 36 6. Caratterizzazione della base dati........................................................................ 40 6.1 Presentazione ed interpretazione dei risultati ottenuti dalle statistiche .......... 40 Percentuale del numero di video suddivisi per categoria ................................... 41 Statistiche su alcuni canali “ufficiali”................................................................ 42 Numero medio di video per utente ...................................................................... 44 Suddivisione in categorie dei video inseriti da ogni utente ................................ 44 Numero medio di tag per video e numero di video ............................................. 45 Numero di video suddivisi per anno di inserimento............................................ 46 Co-occorrenze ..................................................................................................... 47 6.2 prestazioni di database di grandi dimensioni .................................................. 49 Conclusioni ............................................................................................................... 51 APPENDICE ............................................................................................................ 54 Sitografia................................................................................................................... 58 1. Introduzione: contesto generale 1. Introduzione: contesto generale 1.1 Social media - Storia recente Sono lontani i tempi in cui il modo più usato per comunicare, in assoluto, era il telefono. Si assiste oggi alla imperante diffusione dei social network. Questo nuovo modo di comunicare si è diffuso inizialmente in ambiti informali, poichè ha rappresentato da subito un legante innovativo tra persone situate da parti opposte nel mondo, ma anche nella stessa via. Dopo un inizio poco strutturato, questo fenomeno si è affermato anche in ambiti formali, dall’editoria, alla politica, ai settori scientifici. La rapidità, economicità e le potenzialità di questi strumenti hanno contribuito a segnare l’inizio del cosiddetto Web 2.0. Il termine web 2.0, non comparso prima del 2003, è comunemente associato ad applicazioni web usate per lo scambio interattivo di informazioni, la collaborazione, la condivisione di esperienze e conoscenze all’interno di una community. L’antenato di questa espressione è il Web 1.0, generalmente considerato statico, poco reattivo ai cambiamenti, unidirezionale, con una gestione centralizzata. Nel vasto panorama dei social media si distinguono strumenti come: social network (Facebook, LinkedIn), microblog (Twitter), condivisione di file multimediali (Youtube, Flickr), discussione (Skype, Yahoo Messenger), blog (MySpace), social bookmarking (Delicious), wiki (Wikipedia) e molti altri (come raffigurato in Figura1). I siti web 2.0 permettono ai loro utenti di interagire con altri utenti o di cambiare i contenuti del sito web, in contrasto con i siti non interattivi in cui gli utenti si limitano ad una visualizzazione passiva delle informazioni che gli sono fornite. Questo fenomeno è destinato a modificare radicalmente il mondo dell’informazione e della conoscenza. Le informazioni, infatti, vengono costruite sempre più spesso in modo bottom-up, a partire da contributi individuali di persone comuni, una modalità opposta a quella tradizionale, definita top-down, in cui le informazioni sono diffuse da poche fonti (a partire dall’alto). Ne è conferma il fatto che la BBC ha creato all’interno delle sue redazioni la posizione di social media editor, un redattore che si occupa specificamente del social networking. Questa rappresenta una dimostrazione del maggiore impegno da parte non solo della BBC, ma di molte altre compagnie, oltre che istituzioni, nell’apertura verso i social media. È importante evidenziare che questa rivoluzione è prettamente sociale, e non si riferisce a nessun aggiornamento tecnico specifico, ma a cambiamenti cumulativi nel 1 1. Introduzione: contesto generale modo in cui sviluppatori di software e utenti finali usano il web. Infatti, parlare dei social media come strumenti completamente nuovi è fuorviante. In realtà, sin dal principio Internet era popolata da chat rooms, forum, blog e comunicazioni peer to peer. La rivoluzione sociale è rappresentata dal loro utilizzo di massa, guidato dalle moderne piattaforme di social networking. L’elemento di innovazione portato dal Web 2.0, indubbiamente più significativo nel contesto della presente tesi, è il tagging. Consiste nell’attribuire uno o più tags (parole chiave) ad una risorsa informativa, per descriverne il significato. Questo procedimento è usato abitualmente per permettere di archiviare fotografie, video, indirizzi internet e documenti, identificando velocemente l’argomento principale della risorsa. L’argomento è individuato dal punto di vista degli utenti, senza l’attribuzione a categorie predefinite, contrariamente ai classici metodi di caratterizzazione di contenuti. Figura 1. Panorama dei social media Fonte: fredcavazza.net L’uso esteso e sociale del tagging (il social tagging) costituisce una folksonomia, ovvero un’organizzazione delle risorse costruita dal basso con modalità emergente. Si oppone alla tassonomia che al contrario è costruita dall'alto attraverso strutture non modificabili dall'utente. La diffusione di questo metodo di caratterizzazione dei contenuti ha portato grandi vantaggi per quanto riguarda l’innovazione del vocabolario. È infatti possibile che vengano usati nuovi termini entrati nell’uso comune ma non ancora nei vocabolari, oppure è ancora più semplice che nomi di persone divenute famose da poco tempo siano usati ampiamente tra i tags. L’altro lato della medaglia è rappresentato 2 1. Introduzione: contesto generale dall’eccessiva libertà nella scrittura dei tags. Molto spesso per esprimere lo stesso significato si usano parole diverse, oppure anche le stesse parole ma con uno spelling diverso (l’uso o meno del trattino nei nomi composti, errori di spelling, caratteri speciali, ecc...). Per cui, se da un lato viene privilegiato l’aggiornamento, dall’altro si genera il problema della qualità dell’informazione, dovuto alla disomogeneità dei termini usati. - Diffusione e potenzialità Il punto di forza dei social media è sicuramente la distribuzione capillare che hanno avuto. Sono utilizzati da milioni di persone in tutto il mondo. È ampiamente risaputo il loro effetto di propagazione delle notizie; è sufficiente, infatti, che un video o un articolo siano inseriti in rete, perchè un meccanismo virale ne favorisca la diffusione a macchia d’olio. I social media si sono diffusi ovunque ci sia una connessione ad internet e, probabilmente, dovrebbero essere presi in considerazione da tutte le compagnie pubblicitarie, gli imprenditori e i produttori di contenuti come una parte fondamentale delle loro comunicazioni. Il web social oriented è oggi, un’opportunità interessante per molte compagnie, se condotta propriamente. Le piattaforme tecnologiche devono essere considerate come un mezzo e non un fine, nei confronti della nuova informazione prodotta e veicolata su internet. Non possono sostituirsi ai giornali, ma possono avere delle straordinarie potenzialità per contribuire a una più ampia diffusione dell'informazione a beneficio e vantaggio della stessa stampa tradizionale. L'importante è trovare il meccanismo che possa creare una relazione, anche in termini economici, che soddisfi sia chi produce contenuti come business, sia chi ne usufruisce. A questo proposito, alcune piattaforme si stanno occupando anche di monetizzare o valorizzare economicamente i sottoscrittori del servizio, un esempio concreto è YouTube, (di cui si tratterà più diffusamente nel paragrafo 2.3), che grazie ai proventi ottenuti dall’inserimento di inserti pubblicitari nei video, remunera gli utenti più popolari (quelli con più visualizzazioni e voti più alti). - Problematiche: sovraccarico informativo Un numero sempre crescente di persone si connettono ad Internet per condurre le loro ricerche. Le possibilità sia di fruire che di produrre contenuti hanno fatto crescere a dismisura il numero di siti web. Questo ha portato alla oggettiva difficoltà di reperire l’informazione realmente utile, tra una smisurata quantità di informazioni non attinenti a quelle cercate. Spesso i motori di ricerca non sono in grado di disambiguare i diversi significati dei termini ricercati. Tutto ciò conduce ad un onnipresente “rumore di fondo” rappresentato dalle informazioni superflue tra le quali si è costretti a districarsi nel Web, che in questo caso rappresenta una vera e propria ragnatela. La ricerca di informazioni contestualizzate è spesso rallentata da strumenti come feed RSS, e-mail, bookmarks, blog, ecc... Questa grande mole di informazioni, che più 3 1. Introduzione: contesto generale passa il tempo, più si accresce a dismisura, genera troppa scelta. È una quantità talmente vasta che non si riesce a gestire, se non impiegando moltissimo tempo. È avvenuto un passaggio da un numero di informazioni notevole, ma accettabile, fornite ogni 24 ore (i giornali), a una quantità di informazioni gigantesca, che approda in tempo reale e con qualunque mezzo. Si possono distinguere varie cause del sovraccarico informativo: • Un rapido tasso di incremento dell’informazione prodotta • La facilità di duplicazione e trasmissione dei dati su Internet • L’incremento di canali disponibili (es. telefono, e-mail, SMS, rss) • La presenza di informazioni obsolete tra cui cercare • Contraddizioni e inesattezze nell’informazione disponibile • La mancanza di un metodo per confrontare e processare diversi tipi di informazioni • la progressiva trasformazione degli utenti da passivi ad attivi Un’ ulteriore difficoltà può essere considerata la configurazione intricata con cui si presentano molti siti. Una miriade di link tra cui scegliere, che compaiono sullo schermo. In aggiunta, generalmente alle persone non piace dover scegliere, poichè scegliere rallenta, fa perdere tempo, e lascia sempre il dubbio di aver preferito l’opzione peggiore, senza considerare il fatto che non si può conoscere la validità di molte informazioni. Sorge dunque, anche il rischio di disinformazione. 4 2. Contesto specifico 2. Contesto specifico La crescita esponenziale delle applicazioni basate sugli utenti, come blog, sistemi di social tagging e simili, ha sicuramente contribuito alla generazione di copiose quantità di metadati non strutturati. Per esplorare, analizzare ed interrogare queste raccolte di testi, anche molto vasti, in continua evoluzione come forum, blog, newsgroup e interviste, si rendono necessarie delle tecniche di ausilio alla ricerca. Molti dei termini che vengono usati in questi contesti sono “moderni”, o gergali, o nomi propri; parole non presenti nei vocabolari, ad esempio perchè sono entrate nel lessico collettivo a seguito dell’uscita di un film (attori, registi) o in seguito all’introduzione di un’innovazione, o un marchio commerciale, ecc... Come accennato in precedenza, grazie al social tagging è possibile creare un’organizzazione delle risorse costruita dal basso attraverso il contributo delle persone, chiamata folksonomia. In rete è quindi presente una grande fonte di sapere popolare che però è difficilmente strutturabile, per la grande quantità e disomogeneità dei dati. Sono attualmente in corso degli studi e dei progetti che si propongono di raccogliere ed elaborare le informazioni presenti nei social media, poichè queste costituiscono una sorta vocabolario “sociale”, ovvero il reale lessico usato dagli utenti del web. Per poter strutturare questa immensa mole di informazioni è necessario effettuare delle operazioni di data mining. Questo termine indica un processo automatico di raccolta di dati, al fine di estrarre delle informazioni significative di conoscenza, delle strutture e delle relazioni, chiamati pattern, attraverso degli algoritmi, da un vasto insieme di dati. L’uso di questi particolari algoritmi rende possibile utilizzare l’informazione a scopo descrittivo o previsivo, per usarla come un valido strumento di supporto alle decisioni. Per cui, è possibile estrarre elementi di conoscenza a partire da dati privi di una struttura, attraverso i quali si può pensare di costruire dei tesauri sempre aggiornati, grazie al continuo apporto di informazioni recenti. Per tesauro si intende una lista di termini tra i quali sono definite relazioni semantiche, come gerarchia, preferenza, equivalenza. Per fare un semplice esempio di come sia possibile attribuire queste relazioni, si può considerare l'analisi delle co-occorrenze (la frequenza con cui coppie di termini compaiono in un testo), che consente di studiare le associazioni tra parole, individuando quelle parole che compaiono più spesso vicine tra loro. Questa analisi, insieme a molte altre può essere utile alla disambiguazione del significato di alcuni 5 2. Contesto specifico termini nel contesto in cui sono inseriti, e a tracciare una mappa concettuale tra parole e temi affrontati. I fattori principali che hanno contribuito allo sviluppo del data mining sono: • la grande quantità di dati accumulati in formato elettronico, • il basso costo dell’immagazzinamento di dati, • i nuovi metodi e tecniche di analisi (come apprendimento automatico, riconoscimento di pattern). Il data mining in ambito sociale è un settore in rapido sviluppo. Le interazioni tra gli individui sono analizzate per conoscere e comprendere le innovazioni, le decisioni e la risoluzione dei problemi in modo cooperativo. Si cerca anche di interpretare il modo in cui la struttura delle organizzazioni impatta su questi processi. Questo tipo di analisi sono attualmente applicate in numerose aree, ad esempio: • • • nell’e-commerce, per guidare i meccanismi di suggerimento agli acquisti dalle forze dell’ordine, per comprendere la struttura delle organizzazioni criminali e terroristiche nella bibliometria, per analizzare i modelli di distribuzione delle pubblicazioni scientifiche, per determinarne il loro impatto e l’influenza di specifici individui Altre applicazioni specifiche potrebbero riguardare: • • • • • • • • l’individuazione di gruppi di acquirenti interessati ad un prodotto commerciale e la loro profilazione per potere personalizzare le offerte per ogni cliente competitive intelligence: estrazione di documenti da banche dati internazionali di tipo tecnico-scientifico per individuare le tecnologie emergenti, le loro relazioni e l’evoluzione temporale analisi testuale: individuare gli argomenti trattati da un insieme di documenti e le relazioni che intercorrono tra gli argomenti. Si rivela particolarmente utile quando si deve analizzare il contenuto di una collezione di documenti provenienti da fonti eterogenee apprendimento e analisi di folksonomie e altre strutture dati del Web 2.0 invio personalizzato di news analisi di blog previsione del comportamento degli utenti esplorazione delle strutture sociali nelle community di utenti 2.1 Il content based advertising Sono definiti content based advertising, o anche pubblicità contestualizzate, quei messaggi promozionali presenti nelle pagine web, il cui contenuto è connesso a quello della risorsa informativa a cui sono affiancati. L’obiettivo che si prefigge questo sistema, è proporre la pubblicità più coerente con il contenuto della pagina web. 6 2. Contesto specifico Questo tipo di pubblicità si suddivide in due tipologie: • Search-based La pubblicità è associata ai motori di ricerca, un esempio pratico potrebbe essere rappresentato da una ricerca: digitando le parole “viaggio a Londra” su un motore di ricerca si otterrebbero, accanto ai risultati, alcuni link sponsorizzati riguardanti offerte di voli aerei dall’Italia a Londra. • Content-based Questa pubblicità, è invece associata ai siti di contenuti. Proponendo un esempio simile al precedente, si potrebbe pensare ad un sito, dedicato alle attrazioni turistiche di Londra, che propone offerte a prezzi scontati di compagnie aeree che coprono la tratta Italia-Inghilterra. Alla base del successo della pubblicità contestuale c'è, nella maggior parte dei casi, la tecnologia sviluppata dai grandi player del settore, quali Google (AdSense), Overture (Content Match) e Sprinks (ContentSprinks), i quali hanno sviluppato software che, sfruttando sofisticati algoritmi semantici, sono in grado di analizzare le parole chiave presenti all'interno di una pagina Web (e la loro rilevanza), per proporre, di conseguenza, il messaggio pubblicitario più appropriato al contesto, grazie all’identificazione in modo automatico dell’argomento dei contenuti e del loro significato. Il vantaggio della pubblicità contestuale, risiede dunque nel fatto che presenta il messaggio di marketing proprio nel momento in cui l'utente dimostra un attivo interesse a riceverlo. L’approccio di queste tecnologie tende ad essere poco invasivo rispetto alla massa dominante di messaggi promozionali (pop-up e pop-under) colorati, fluttuanti, animati, sonori, ecc.. che popolano il Web da qualche anno a questa parte. Queste inserzioni promozionali non sono appannaggio di grandi portali ma sono usate comunemente soprattutto da quelli di piccole e medie dimensioni, che sfruttano principalmente il programma AdSense di Google. 2.2 Il software TraceSense: la semantica per classificare automaticamente i multimedia Nell’ambito del content based advertising semantico si inserisce il progetto TraceSense. TraceSense è un’applicazione (preesistente allo sviluppo di questo lavoro), sviluppata e brevettata da IntelliSemantic, che interpreta semanticamente e classifica automaticamente video, foto, podcast o altri contenuti multimediali basandosi sull’informazione testuale ad essi associata, ad esempio i tags indicati dall’autore o dai visitatori. Gli utenti dei fenomeni più popolari del cosiddetto Web 2.0, come YouTube, Flickr, Delicious, Amazon, utilizzano queste etichette come parole chiave per descrivere i contenuti che producono e condividono sul web. I tags generati dagli utenti dovrebbero facilitare quindi la reperibilità delle risorse, tuttavia la libertà lasciata agli 7 2. Contesto specifico utenti che generano i tags porta, insieme alla ricchezza dei molteplici punti di vista, anche una notevole ambiguità impedendo il pieno riutilizzo di queste informazioni. Il tirocinio su cui si basa la presente monografia è legato al software TraceSense, in quanto si prefigge di creare una base dati per la validazione della suddetta applicazione. Nonostante questo stretto legame, l’interazione con il programma è stata esigua, fatta eccezione per la fase di testing iniziale del sito web dimostrativo del software, in cui si è rivelato utile conoscere il funzionamento basilare dell’algoritmo di interpretazione semantica. Funzionamento e ambiti di utilizzo TraceSense permette l’interpretazione e la classificazione semantica dei metadati associati ai contenuti multimediali tramite un sistema di estrazione, riconoscimento ed organizzazione degli stessi in domini di conoscenza. Il software, interpretando tutti i tags utilizzati per descrivere una risorsa, la associa ad una o più categorie target che ne indicano il significato prevalente, come ad esempio ‘Politica e Sport’, ‘Celebrità e Moda’, ‘Benessere’ e così via, in molteplici combinazioni. Le categorie target dipendono dal dominio dell’applicazione; pertanto diversi domini avranno diverse categorie target costruite intorno a specifici sensi. In tal senso, Tracesense può adattarsi a qualsiasi dominio della conoscenza. TraceSense potrebbe essere impiegato in un’ampia gamma di utilizzazioni. Viene di seguito proposto qualche esempio. • TraceSense, classificando i contenuti secondo argomenti specifici, può fornire in modo totalmente automatico ai media planner indicazioni preziose per associare la pubblicità adatta ad un determinato target-audience con sofisticate possibilità di segmentazione del mercato • TraceSense potrebbe coadiuvare il lavoro di produttori e distributori di contenuti multimediali, per classificare l’enorme mole di prodotti immateriali veicolati, ottenendo in automatico la loro organizzazione, utile per fornire contenuti adatti ad un certo target o profilare il target secondo specifiche preferenze • TraceSense potrebbe supportare l’auto-organizzazione dei social network mettendo in relazione persone con interessi comuni Attualmente l’applicazione funziona con tags in lingua inglese, ma a seconda degli ambiti di utilizzo è possibile la sua personalizzazione rispetto a categorie o nuovi sensi che si desiderano individuare. IntelliSemantic IntelliSemantic è stata fondata nel 2005. Dal 2005 al 2007 è stata ospitata dall’I3p, incubatore delle imprese innovative del Politecnico di Torino. Il core business dell’azienda è concentrato sulla produzione e fornitura di strumenti per semplificare la ricerca, la navigazione e il ri-utilizzo dell’informazione e della 8 2. Contesto specifico documentazione, a tutti coloro che considerano le basi di dati e le informazioni una risorsa strategica. I prodotti sono principalmente studiati per aziende, information provider, studi professionali e società di e-commerce, in un’ottica di sfruttamento delle potenzialità delle applicazioni web, quali portali, knowledge management systems e sistemi di business intelligence. L’azienda si avvale di tecnologie relative alla web search e database search, conoscenze delle metodologie per la costruzione di ontologie e applicazioni semantiche, capacità nell’implementazione e integrazione dei web service, e nell’analisi funzionale, conoscenza dei principi di progettazione basata sull’utente e dei modelli di e-business. Fin dalla costituzione della società, IntelliSemantic collabora attivamente nel campo del web semantico con il gruppo e-Lite del Politecnico di Torino, la cui attività di ricerca è riconosciuta a livello internazionale. 2.3 YouTube YouTube è un portale internet di video sharing in cui gli utenti possono guardare, caricare e condividere video. La compagnia ha sede a San Bruno, in California ed è stata fondata nel 2005 da tre giovani impiegati di PayPal; Chad Hurley, Steve Chen e Jawed Karim. YouTube è l’indiscusso leader dei video online. Utilizza Adobe Flash Video, come tecnologia per la visualizzazione di una grande varietà di contenuti video generati dai suoi utenti, tra cui film, spezzoni televisivi, video musicali e video blog. La maggior parte dei contenuti sono caricati dai singoli utenti, ma sono presenti anche media importanti come CBS, BBC, Universal Music Group, Sony Music Group e altre organizzazioni che offrono parte del loro materiale online, all’interno del programma ‘partnership’ di YouTube (esposto nel seguito del paragrafo). Nel novembre del 2006, ad un anno dal suo lancio, YouTube è stato acquistato da Google per 1.65 bilioni di dollari. Alcune aziende televisive hanno intentato cause contro Google per impedire all’azienda di continuare a guadagnare denaro dalla pubblicazione di video protetti da copyright. Il risultato di queste azioni legali è stato l’ordine alla compagnia di rimuovere più di 100.000 clip dalla rete. A seguito di queste azioni, Youtube ha sviluppato un servizio chiamato “Youtube Video Identification” che permette di aiutare i detentori di copyright a proteggere i propri contenuti. Complessi algoritmi sono applicati alla libreria di clip di Youtube per verificare se qualcuno corrisponde a quelli protetti da copyright, al fine di ridurre le violazioni. A fine 2008, YouTube ha raggiunto un accordo con MGM, Lions Gate Entertainment e CBS che permette alle compagnie di caricare film e show televisivi sul sito, accompagnate dalla pubblicità. YouTube ha inoltre intrapreso un programma chiamato “Partners Program” (nel maggio del 2007) che consiste nella retribuzione degli utenti più popolari sul portale, grazie ai proventi della pubblicità aggiunta da Google AdSense sui video. È stato quindi il primo social network a consentire agli utenti di guadagnare, ad alcuni persino migliaia di dollari al mese. 9 2. Contesto specifico Alcuni paesi hanno bloccato l’accesso a YouTube; come la Repubblica Popolare Cinese, il Marocco, Thailandia e altri paesi, spinti dal timore di non poter controllare l’afflusso di notizie nel proprio paese. Statistiche sull’analisi del traffico La quantità di visitatori del sito è sicuramente sbalorditiva; di seguito si riportano alcune stime (figura 2) sul numero di visitatori (su base mensile) provenienti dagli USA. In figura 3 sono fornite anche stime più ampie, che mostrano chiaramente il rapido incremento della numerosità di visitatori. Le stime iniziali risalenti all’aprile 2007 sono di circa 57 milioni, mentre quelle di due anni dopo (aprile 2009) si aggirano sui 70-80 milioni. Quindi l’incremento raggiunto è del 30% in due anni. Queste sono solo stime, e non dati misurati direttamente, bisogna perciò tener conto dei loro limiti. Ciò nonostante si può affermare che il successo di questo notissimo sito è il frutto del contributo dei singoli individui sommato, sicuramente, anche alla redditività di alcuni contenuti che violano di fatto le norme sul copyright (a cui perlomeno la compagnia sta cercando di porre rimedio con alcune azioni come quelle descritte precedentemente). Figura 2. Visitatori mensili Youtube (USA) dal 05/07/09 al 31/12/09. Fonte: quantcast.com A tutto questo si aggiunge ovviamente il contributo di Google AdSense, che offrendo la possibilità di guadagno agli utenti, ne ha incrementato maggiormente lo spirito di iniziativa, in un’ottica di miglioramento dei contenuti dei propri canali e soprattutto di numerosità dei video per ogni utente (ogni utente può caricare un numero 10 2. Contesto specifico illimitato di video). Si può infatti notare nella figura 3 come nell’estate del 2007 (in seguito all’introduzione del programma Partnership) il numero di visitatori sia aumentato in maniera quasi esponenziale, segno che un giusto equilibrio, anche economico, tra creatori del servizio di video sharing, e i sottoscrittori, porta a vantaggi per entrambe le parti. Maggior visibilità per il sito, ed anche un guadagno per gli utenti attivi. La grande varietà di temi trattati e la possibilità di accedere semplicemente e gratuitamente a contenuti su argomenti di nicchia, hanno concorso allo sviluppo di questo grande successo. Grazie alla sua grande popolarità YouTube ha condotto il video sharing a rappresentare un elemento fondamentale della cultura internet. Figura 3. Visitatori mensili Youtube (USA) dal 04/03/07 al 31/12/09. Fonte: quantcast.com YouTube è stato riconosciuto come il quarto sito web più frequentato al mondo, dopo Google, Yahoo! e Facebook. Viene proposto qualche numero statistico significativo: • #1 sito di video più visto sul web • #4 sito internet più frequentato • 300 milioni di visitatori mondiali al mese • 15 ore di video caricati ogni minuto • Tre quarti del materiale proviene dal di fuori degli Stati Uniti • La durata media dei video online è di 3.5 minuti • Il 77% degli utenti che accedono per guardare un video continuano a guardarne molti di più 11 2. Contesto specifico Il sito stesso è ottimizzato per catturare l’attenzione dell’utente e indurlo a guardare più video possibile, grazie soprattutto alla presenza in ogni video di altri video correlati per argomento. Il concetto sostanziale è quello di avere il pieno controllo su una televisione completamente gratuita. Tabella 1. Proprietà dei video, gennaio 2009 (in base al numero di video visti da utenti USA) Fonte: comScore Video Metrix Proprietà Video (000) Percentuale di video (%) 14.831.607 100,0 6.367.638 42,9 Fox interactive Media 551.991 3,7 Yahoo! 374.161 2,5 Viacom Digital 287.615 1,9 Microsoft 267.475 1,8 HULU.com 250.473 1,7 Turner Network 195.983 1,3 AOL LLC 184.808 1,2 Disney Online 141.452 1,0 MEGAVIDEO.COM 102.857 0,7 Totale Internet Youtube API Un’altra grande opportunità offerta da Google, e conseguentemente da YouTube, sono le API. Le API, acronimo di ‘application programming interface’ permettono di interagire con dei web services. Nel caso di YouTube offrono la possibilità di integrare nel proprio sito personale molte delle funzionalità offerte dal portale, come la visualizzazione di video con un’interfaccia personalizzata e, funzionalità più rilevante per lo svolgimento di questa monografia, l’accesso al database di contenuti. La disponibilità di contenuti offerta non è ovviamente illimitata, questo aspetto verrà analizzato, in seguito, nel paragrafo 4.2. Queste possibilità sono riservate a programmatori ed appassionati di informatica, e non a qualsiasi utente della rete, in quanto si tratta di gestire e modificare del codice in linguaggi di programmazione (come Java, .NET, PHP o Phyton), e non semplicemente di copiare e incollare del codice su un sito web o un blog. 12 2. Contesto specifico Ovviamente il colosso statunitense non ha fornito le API per mero altruismo, ma perchè è sua intenzione (o speranza) confidare nella creatività degli sviluppatori, da cui si attende qualcosa che sia fruibile da molte persone. Per cui, questa decisione di rendere più aperto il portale video non è dettata da uno slancio di generosità ma dalla volontà che ogni video caricato su Internet sia di loro proprietà, in un’ottica di raggiungimento dell’egemonia totale del settore. 13 3. Obiettivi e requisiti della monografia 3. Obiettivi e requisiti della monografia 3.1 Obiettivi: - Realizzazione di un’applicazione per l’estrazione di dati da YouTube L’obiettivo principale che ci si è proposti di raggiungere è stato creare un database che contenesse metadati relativi ad alcuni contenuti multimediali. Pertanto si è presentato il problema di trovare una modalità per la creazione di questa base dati. I contenuti multimediali a cui si è deciso di attingere sono quelli contenuti nei portali web, che non sono ovviamente distribuiti gratuitamente ai fruitori del servizio. Vengono però talvolta messe a disposizione delle interfaccie attraverso le quali è possibile richiedere delle piccole porzioni dei loro contenuti. Per cui si è scelto di servirsi di una metodologia di spidering incrementale, poichè non è possibile accedere a tutte le informazioni desiderate, scaricandole “in blocco”. È necessario interfacciarsi con questi portali, attraverso le loro API, con applicazioni che non funzionino per un tempo infinito, ma che compiano cicli di start/stop per tenere traccia delle informazioni che hanno già preso in considerazione. Questo problema, che può essere applicato a diversi portali web, in questa sede è stato applicato al caso specifico di contenuti video. Il primo posto che viene in mente se si cerca un vasto insieme di video non può che essere Youtube, per cui ci si è indirizzati verso questo famoso portale di contenuti video. In YouTube, ad ogni video sono associati dei tags (parole) di identificazione del contenuto. Sono proprio questi tags che vengono “dati in pasto” all’algoritmo TraceSense come dati di input. L’output atteso è una classificazione nelle categorie considerate maggiormente inerenti all’argomento del video. Inizialmente ci si è riferiti alla “Reference guide” delle API di Youtube, nella quale sono contenuti alcuni esempi di applicazioni Java per l’interrogazione dei web services. Sulla base di questi esempi si è è preso spunto per iniziare a scrivere il codice per l’applicazione di nostro interesse. - Caratterizzazione della base dati ottenuta Una fase molto importante è stata quella di caratterizzazione della base dati ottenuta. L’intento era capire che tipo di dati vi erano contenuti; ad esempio se il campione di dati era stato estratto in modo omogeneo per categoria, la distribuzione del numero di tags trovati per ogni categoria, quanti video dello stesso utente erano stati presi, quanti di questi video appartenevano a canali “ufficiali”. Per i dati ottenuti si veda il paragrafo 6.1. Inoltre sono state fatte delle statistiche sulle co-occorrenze (tutte le possibili coppie di tags presenti in ogni video). Queste possono essere usate per fare il tuning (o taratura) del dizionario. Ovvero, qualora si decidesse di rendere l’algoritmo più 14 3. Obiettivi e requisiti della monografia specialistico in un qualche settore di interesse, si potrebbero analizzare le cooccorrenze della categoria più affine a questo settore, ed aumentare la focalizzazione del dizionario usato dall’algoritmo sulle co-occorrenze più frequenti. Un secondo passo è stato quello di interpretare i risultati osservati in queste statistiche tramite un’analisi critica. 3.2 Requisiti specifici Gli obbiettivi principali che si è prestabilito di raggiungere, e comuni allo sviluppo di applicazioni basate su social media, sono: • • un database di metadati relativi ai video una metodologia di estrazione del database Questi due obiettivi sono stati realizzati, nel caso specifico, per interagire con il software TraceSense. Sono stati infatti utili come supporto al testing di questa applicazione, presentata nel paragrafo 2.2. - Individuazione di un dataset reale per la validazione di TraceSense Nel contesto del content based advertising si inserisce il progetto TraceSense, realizzato da IntelliSemantic in collaborazione con il Politecnico di Torino, il cui obiettivo è estrapolare il contenuto da una risorsa telematica attraverso una sua descrizione, ovvero tramite i suoi tags. Come è noto la realizzazione di un software, passa attraverso diverse fasi. Il primo passo consiste nell’analisi dei requisiti e delle funzionalità che il programma dovrà rendere disponibili. Si passa quindi alla definizione della base dati e alla progettazione degli algoritmi necessari. Terminate queste attività è possibile iniziare con la fase di implementazione che, finalmente, comporta la scrittura del codice sorgente. L’ultima fase, ma non per questo meno importante, è quella del testing e del tuning dell’applicativo realizzato. Poichè, allo stato attuale, lo sviluppo di TraceSense si trova in uno stadio stabile, la maggior parte del lavoro dei suoi sviluppatori si concentra proprio sulle attività di test e di messa a punto. È di fondamentale importanza non confondere l’attività di debugging del software con quella di testing. Il debugging, in genere, viene svolto contestualmente allo sviluppo del codice sorgente, in modo da individuare quanto prima i difetti (bug) che inficiano il buon funzionamento dell’applicazione. Per rendere più agevole il debugging (si pensi ad esempio che durante le fasi di sviluppo non tutte le funzionalità richieste sono ancora disponibili), i dati utilizzati non sono dati reali bensì dati di prova. Non sono rari i casi in cui, al fine di testare un determinato comportamento dell’applicazione, lo sviluppatore che sta eseguendo il debugging abbia la necessità di inserire dati creati ‘ad hoc’, spesso molto differenti dai dati che potrebbe estrarre da un ambiente reale. 15 3. Obiettivi e requisiti della monografia Lo scopo del testing, a differenza del debugging, è quello di collaudare l’applicazione nella sua interezza e di verificarne il funzionamento in un ambiente reale. L’ottica in cui viene svolta tale attività è quindi molto più vicina a quella che sarà l’esperienza dell’utente finale. È di fondamentale importanza, per tale motivo, utilizzare un dataset di buona qualità, quanto più possibile variegato e voluminoso. Così facendo risulta più semplice rendersi conto e venire a capo di eventuali criticità che difficilmente si sarebbero potute notare in fase di debugging. Nel caso di TraceSense, poichè è un’applicazione basata su algoritmi semantici, la qualità dei dati utilizzati nel testing, non solo è più importante che in altri casi, ma è addirittura fondamentale per verificare il buon funzionamento del software. Per questo motivo il primo requisito alla base del presente lavoro è stato l’individuazione di un dataset reale che rendesse quanto più possibile agevole la validazione di TraceSence. Fase 1 Gli sviluppatori di TraceSense hanno focalizzato la loro attenzione sull’identificazione del contenuto di video. Dopo aver sviluppato l’algoritmo che si occupa della classificazione semantica di un gruppo di tags, si è passati alla fase di test. Sono stati effettuato dei test per verificare il comportamento dell’algoritmo su alcuni video di prova, estratti dal sito internet YouTube. I test sono stati svolti tramite la visione dei video e la loro classificazione manuale da parte di una persona, che assegnava ad ognuno una categoria target, senza essere influenzata da nessun elemento diverso dal video stesso. Le classificazioni assegnate manualmente ad ogni video sono state poi confrontate con la classificazione elaborata dall’algoritmo. I test fatti sono stati finalizzati al confronto tra la classificazione fornita da TraceSense e l’argomento effettivamente identificativo del video, indipendentemente dalla categoria con cui l’autore del video lo ha classificato al momento della pubblicazione. Si è pertanto reso necessario avere a disposizione un database più vasto (e di conseguenza più variegato dal punto di vista delle tematiche dei contenuti) per poter valutare il funzionamento dell’algoritmo su un range più esteso di tipologie di argomenti. Fase 2 In secondo luogo è sorta la necessità di creare un sito web dimostrativo (chiamato “Video Content Discovery Demo”) delle funzionalità del sopraccitato algoritmo. Il sito web è stato ideato per rendere possibile ad un qualsiasi utente di utilizzare l’algoritmo in modo completamente trasparente, senza doverne conoscere il procedimento operativo. L’utente, non deve infatti far altro che scegliere un video di suo interesse tra una “vetrina” di video proposti, a quel punto può guardare il video ed inoltre ha a disposizione le categorie (ordinate secondo la percentuale di rilevanza) che sono state determinate per quel video dall’algoritmo. 16 3. Obiettivi e requisiti della monografia La realizzazione dell’interfaccia grafica del sito web Video Content Discovery Demo ha comportato inizialmente un’analisi delle funzionalità che si volevano mettere a disposizione degli utenti, e dell’organizzazione operativa del sito web. L’accessibilità non è rivolta al grande pubblico, ma solamente a chi ne fa richiesta a IntelliSemantic, che fornisce, di conseguenza, alle persone interessate username e password. Questa scelta è stata fatta per permettere l’accesso solamente a chi è realmente interessato al progetto. Ovviamente, prima di essere rilasciata, questa demo è servita come utile strumento di test interno all’azienda, poichè permette di utilizzare in modo più semplice e veloce l’applicazione TraceSense. Il fine ultimo di questo dimostrativo è permettere ai soggetti interessati al progetto Tracesense di potervi interagire, valutarne le potenzialità e proporre nuove idee per sue future specializzazioni rispetto ad argomenti più ristretti, rispetto a quelli contenuti nel più grande portale di video esistente, così da incanalare questo progetto in applicazioni focalizzate su specifici domini della conoscenza. Fase 3 Come ultimo intento si è voluto caratterizzare la base dati ottenuta nella Fase 1. La metodologia di popolamento del database non assicura infatti una copertura omogenea (da un punto di vista degli argomenti oggetto dei contenuti) di tutti i video presenti su Youtube. Difatti il portale non fornisce la possibilità di accedere globalmente ai dati. Effettivamente non sarebbe una politica molto conveniente per l’azienda permettere a qualche altro concorrente di avere una copia di tutti i loro contenuti. Il portale offre solamente l’acceso a piccole porzioni di dati, pochi video, per volta. Per conoscere la tipologia di dati estratti si rende pertanto utile eseguire delle statistiche che mettano a conoscenza non solo dei dati che si posseggono, ma che fungano anche da specchio dell’enorme contenuto di YouTube. Ci viene data quindi la possibilità di osservare come dallo spioncino di una porta, una piccola parte di quel grande universo che è YouTube. 17 4. Tecnologie utilizzate 4. Tecnologie utilizzate Per sviluppare i requisiti esposti nel capitolo 3 è stata realizzata un’idonea applicazione per l’interazione con i web services di YouTube. L’applicazione è basata sul linguaggio Java e fa largo uso delle YouTube API. Per la realizzazione del sito web si è fatto uso della tecnologia Ajax. Pertanto, nel seguito di questo capitolo verranno illustrati brevemente i principali strumenti usati per lo sviluppo di applicazioni web, mentre una sezione più ampia verrà dedicata alle YouTube API. 4.1 Strumenti di sviluppo per applicazioni web - Java Java è un linguaggio di programmazione orientato agli oggetti. La piattaforma di programmazione Java è fondata sul linguaggio stesso, sulla Macchina virtuale Java (Java Virtual Machine o JVM) e sulle API Java. Java è un marchio registrato di Sun Microsystems. Le principali caratteristiche di Java sono: 1. essere completamente orientato agli oggetti 2. essere indipendente dalla piattaforma Per facilitare il passaggio a Java ai programmatori old-fashioned, legati in particolare a linguaggi come il C, la sintassi di base (strutture di controllo, operatori e così via) è stata mantenuta pressoché identica a quella del C. L'idea alla base della programmazione orientata agli oggetti è di rappresentare, nella progettazione del software, le entità reali o astratte che compongono il problema sotto forma di oggetti. Gli oggetti sono caratterizzati da proprietà (definite variabili o attributi) e da metodi applicabili sugli oggetti stessi, che possono ad esempio modificarne lo stato o estrarne informazioni. L'ereditarietà in Java è implementata mediante la parola chiave ‘extends’, applicata nella dichiarazione di una classe. Ad esempio una classe Quadrilatero può definire alcuni comportamenti generali per tutte le figure geometriche con 4 lati, tuttavia si può presentare la necessità di aver bisogno di caratteristiche più specifiche per i nostri oggetti, quindi si creerà una classe Quadrato che estende la classe Quadrilatero da cui deriva tutti gli attributi e tutti i comportamenti (i metodi). Come ambiente di sviluppo, durante il tirocinio, si è utilizzata la piattaforma Eclipse, con cui è possibile programmare in Java, usufruendo di comode funzioni di aiuto quali: completamento automatico, suggerimento dei tipi di parametri dei metodi, 18 4. Tecnologie utilizzate possibilità di accesso diretto a CVS e riscrittura automatica del codice (funzionalità questa detta di refactoring) in caso di cambiamenti nelle classi. - Log4J: debug di applicazioni Java Log4j è una libreria java, che permette di utilizzare il meccanismo dei log all'interno di un’applicazione in modo semplice, ma potente. È distribuita sotto licenza della Apache Fundation ed è completamente open source, anche grazie a questo è divenuta il più popolare sistema di logging tra gli sviluppatori Java. Durante il ciclo di sviluppo, test e utilizzo di un componente software, è importante controllare, a vario livello, il funzionamento dello stesso, per cui risulta utile avere uno strumento che permetta di sapere, in un determinato istante, in quale stato è il sistema o, per esempio, quale è il valore di una specifica variabile. Il fattore probabilmente più importante di Log4j è la capacità di configurare e modificare dinamicamente il comportamento del sistema di log semplicemente modificando un file di configurazione esterno all’applicazione, senza la necessità di riscrivere o ricompilare il codice. In generale, durante lo sviluppo e il test è utile essere informati sull’intero flusso applicativo, mentre quando il sistema è stato completamente messo in produzione, è opportuno monitorare solamente gli eventi più gravi ed imprevisti (le eccezioni o i fatal error). Per questo motivo Log4j offre la possibilità di attivare o disattivare, comodamente, il log dei messaggi. Combinando questa funzionalità con la possibilità di redirigere in modo dinamico e composito messaggi verso una o più destinazione appare chiaro quanto sia potente questo strumento. Ci sono vari livelli, a cui corrisponde la soglia massima entro cui vengono filtrate le richieste di log, che vengono presentati di seguito, in ordine decrescente di severità: • • • • • • • FATAL: è un livello usato molto raramente e indica errori gravi come il ‘crash’ dell’applicazione ERROR: è il livello che solitamente è associato alle eccezioni di Java. In questo livello rientrano gli errori che non creano il ‘crash’ dell’intera applicazione WARN: è il livello che indica problemi di minore gravità come la mancanza o l’inconsistenza di parametri di input. In generale si associano i messaggi di warning di Java INFO: è associato agli eventi significativi nel ciclo di esecuzione dell’applicazione. Solitamente è usato per segnalare eventi di esecuzione (esempio: startup/shutdown), che devono essere segnalati ma poi non memorizzati per tanto tempo DEBUG: è associato agli eventi che accadono in maniera meno frequente ma comunque utili per eventuali fasi di debugging. È quindi comunemente usato nella fase di debug del programma TRACE: Registra alcune informazioni dettagliate. È stato aggiunto nella versione 1.2.12 ALL: disattiva il tutti i filtri 19 4. Tecnologie utilizzate • OFF: disabilita LOG4j Per fare un esempio, se si sceglie di mettere come soglia il livello INFO, verranno disabilitate tutte le richieste di DEBUG. È anche possibile implementare nuovi livelli personalizzati ma, in genere, sono sufficienti quelli preimpostati. Mentre con i sistemi tradizionali c’è la possibilità di effettuare il logging solo verso la console, con Log4j le destinazioni (o appender) possono essere molteplici, come ad esempio la console dell’applicazione, un file e altro ancora. - MySQL Come database si è fatto uso di MySQL, che è un relational database management system (RDBMS) open source, composto da un client con interfaccia a caratteri e un server. La versione utilizzata è quella attualmente stabile, la 5.1. Il codice di MySQL è stato sviluppato fin dal 1979 dalla ditta TcX ataconsult, adesso MySQL AB, ma è solo dal 1996 che è stata distribuita una versione che supporta SQL. Essendo scritto in linguaggio C e C++, MySQL è disponibile su molti differenti sistemi operativi. Infine, il linguaggio SQL di MySQL comprende numerose estensioni che sono tipiche di altri DBMS, quali PostgreSQL, Oracle e Sybase. In questo modo le query non standard scritte per altri DBMS in alcuni casi funzionano senza problemi. Nello svolgimento del tirocinio sono stati utilizzati altri due validi strumenti grafici forniti da MySQL; MySQL Administrator per l’amministrazione del database, e MySQL Query Browser per la creazione e l’esecuzione delle query. Un altro dei programmi più popolari per amministrare i database MySQL è phpMyAdmin (richiede un server web come Apache HTTP Server ed il supporto del linguaggio PHP). Si può utilizzare facilmente tramite un qualsiasi browser. - AJAX AJAX, acronimo di Asynchronous JavaScript and XML, è una tecnica di sviluppo per la realizzazione di applicazioni web interattive. Ajax non è una tecnologia individuale, quanto invece un gruppo di tecnologie utilizzate insieme. Lo sviluppo di applicazioni HTML con Ajax si basa su uno scambio di dati in background fra web browser e server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente. Ajax è asincrono nel senso che i dati extra sono richiesti al server e caricati in background senza interferire con il comportamento della pagina esistente. Normalmente le funzioni richiamate sono scritte con il linguaggio JavaScript. Tuttavia, e a dispetto del nome, l'uso di JavaScript e di XML non è obbligatorio. La tecnica Ajax utilizza una combinazione di: • HTML (o XHTML) e CSS per il markup e lo stile; • DOM (Document Object Model) manipolato attraverso un linguaggio come JavaScript o JScript per mostrare le informazioni ed interagirvi; • l'oggetto ‘XMLHttpRequest’ per l'interscambio asincrono dei dati tra il browser dell'utente e il web server; 20 4. Tecnologie utilizzate • in genere viene usato XML come formato di scambio dei dati, anche se di fatto qualunque formato può essere utilizzato, incluso testo semplice, HTML preformattato, JSON. Confronto con applicazioni tradizionali Le applicazioni web tradizionali consentono agli utenti di compilare moduli e, quando questi moduli vengono inviati, viene inviata una richiesta al web-server. Il web server agisce in base a ciò che è stato trasmesso dal modulo e risponde bloccando o mostrando una nuova pagina. Poichè molto codice HTML della prima pagina è identico a quello della seconda, viene sprecata moltissima banda. Dato che una richiesta fatta al web server deve essere trasmessa su ogni interazione con l'applicazione, il tempo di reazione dell'applicazione dipende dal tempo di reazione del web server. Questo comporta una maggiore lentezza dell'interfaccia utente. Le applicazioni Ajax, d'altra parte, possono inviare richieste al web server per ottenere solo i dati che sono necessari. Come risultato si ottengono applicazioni più veloci (dato che la quantità di dati interscambiati fra il browser ed il server si riduce). Anche il tempo di elaborazione da parte del web server si riduce poiché la maggior parte dei dati della richiesta sono già stati elaborati. Inoltre, per il corretto funzionamento di Ajax è richiesto che nel client sia attivato Javascript. Il grande vantaggio di usare Ajax è la grande velocità alla quale un'applicazione risponde agli input dell'utente. Nella seguente immagine (figura 4) è presentata una schematizzazione del modo in cui un'applicazione web tradizionale elabora l'interazione dell'utente sulla sinistra, e sulla destra viene presentato il modo usato da un’applicazione Ajax. Figura 4. Confronto nell'elaborazione dell'informazione tra modelli di applicazioni web tradizionali e applicazioni web Ajax. Fonte: adaptivepath.com 21 4. Tecnologie utilizzate - Servlet La parola servlet deriva da una precedente, applet, che si riferisce a piccoli programmi scritti in linguaggio Java che si eseguono all'interno di un browser. Per contrapposizione, una servlet è un programma che si esegue in un server web. L'uso più frequente delle servlet è generare pagine web in forma dinamica a seconda dei parametri della richiesta spedita dal browser. Una servlet è un programma, che risiede su un server, in grado di gestire le richieste HTTP generate da uno o più client, rispettando determinate regole. Tipicamente le servlet sono collocate all’interno di Application Server o Web Application Server come, ad esempio, Tomcat. All'interno dello stesso server web possono funzionare più servlet associate ad URL diversi; ognuna di queste servlet può fare elaborazioni diverse ed estenderà le funzionalità del server web. Un esempio pratico di utilizzo potrebbe essere un meccanismo di riconoscimento dell’utente. Digitando un URL viene invocata una servlet, che verifica la correttezza dei dati inseriti e successivamente indirizza ad una pagina di conferma o di errore, a seconda del risultato. È possibile costruire una servlet scrivendo una classe Java (come è stato fatto per la realizzazione del sito Video Content Discovery Demo) che erediti le caratteristiche della classe ‘HttpServlet’. Questa può essere richiamata da una pagina Jsp per effettuare lavori come calcoli, ricerche, elaborazioni di vario genere. - JSON Acronimo di JavaScript Object Notation, il JSON è un formato adatto per lo scambio dei dati in applicazioni client-server. Viene solitamente usato in AJAX come alternativa a XML. La sua semplicità d’uso ne ha decretato un diffuso utilizzo. Un esempio di JSON Viene qui proposto un esempio di utilizzo di JSON all’interno della demo di TraceSense, per illustrare la strutturazione dei dati. I dati sono composti da una lista di 2 video (‘videolist’). Per ogni video nella lista sono indicati i dati relativi, come id, titolo, link all’immagine thumbnail, ed altri. { "videolist":[ {"id": "AFtnPrM5iGs", "title": "SBK 2009 - Portimao Race 1", "thumb": "http://i1.ytimg.com/vi/LkKQ3wnhZtQ/default.jpg", "tags": "sbk, biaggi", superbike, portimao, spies, haga, rea, "description": "SBK 2009 - Portimao Race 1 Highlights", "category": "Sport"}, 22 4. Tecnologie utilizzate {"id": "Rc9073pxyzk", "title": "Digger Phelps Dancing Clemson Official HD", "thumb": "http://i3.ytimg.com/vi/n94UOSiTbbc/default.jpg", "tags": "Digger, Gameday", Phelps, Dancing, Clemson, ESPN, "description": "Digger Phelps Dancing at Clemson on ESPN college gameday.", "category": "Sport"} ] } Confronto con XML e altri linguaggi di markup XML è un linguaggio di marcatura dalle proprietà mentre JSON non lo è: JSON è un formato di interscambio di dati. JSON viene considerato più semplice di XML, perchè ha meno grammatica e riesce più rapidamente, a delineare uno schema della struttura dati usata nei moderni linguaggi di programmazione. JSON non è estensibile, e non ha bisogno di definizione di nuovi tags o attibuti per rappresentare i dati, perchè non è un linguaggio di markup dei dati. 4.2 Web Services: API di Google in linguaggio Java Le API di YouTube forniscono liste di video, chiamate ‘video feeds’ in base ai parametri scelti nelle richieste. Molti feeds consistono in una serie di ‘video entries’ (dati relativi ad ogni video). Dunque, le API restituiscono degli oggetti ‘VideoFeed’, che sono un insieme di oggetti ‘VideoEntry’. Ogni ‘video entry’ corrisponde esattamente ad un video e contiene le informazioni su quel video. Estrarre una video entry specifica Ogni entry presente in un feed contiene un link, che identifica la URL corrispondente al feed di informazioni su quel particolare video. La URL ha il seguente formato: http://gdata.youtube.com/feeds/api/videos/videoID Estrarre gli standard feeds Le API forniscono anche degli ‘standard feeds’, che rappresentano liste di video scelte in base ad un insieme di criteri. La URL per gli standard feeds è composta nel seguente modo: http://gdata.youtube.com/feeds/api/standardfeeds/FEED_IDENTIFIER La lista seguente illustra i criteri utilizzabili (e il loro identificativo) 23 4. Tecnologie utilizzate Nome del feed Feed Identifier Most Viewed most_viewed Top Rated top_rated Recently Featured recently_featured Watch On Mobile watch_on_mobile Most Discussed most_discussed Top Favorites top_favorites Most Responded most_responded Most Recent most_recent È possibile estrarre standard feeds in base alla regione geografica e alla categoria, specificando nei parametri sia l’ID della zona, sia il nome della categoria di interesse. Si può utilizzare il seguente formato: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID_Category_name Si propone un esempio che mostra il feed URL per la lista dei video divertenti più votati in Giappone: http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated_Comedy Video caricati da uno specifico utente Per ogni utente di YouTube, le API definiscono un video feed che elenca i video che l’utente ha pubblicato. La URL per il video feed dei video caricati da un utente può essere creato come nell’esempio: http://gdata.youtube.com/feeds/api/users/username/uploads Ricercare dei video Si può richiedere un insieme di video che corrispondono ad un particolare termine di ricerca. Le API di YouTube supportano molti dei parametri usati nelle query standard di Google, ed inoltre anche dei parametri specificamente legati alla ricerca nei video. Per esempio, si possono cercare i video pubblicati da un particolare autore o i video associati ad una specifica categoria di YouTube Cercare video usando categorie e parole chiave Si può restringere la ricerca, mostrando solo i video che appartengono ad un dato set di categorie e/o parole chiave. Bisogna prestare attenzione all’uso di alcune parole, come ‘comedy’, che possono rappresentare sia una categoria che una parola chiave. Per distinguere tra categorie e parole chiave, le API usano la convenzione in base alla quale le parole scritte con l’iniziale maiuscola (es. ‘Comedy’) denotano categorie 24 4. Tecnologie utilizzate YouTube, mentre le parole scritte in minuscolo (es. ‘comedy’) indicano parole chiave. Le API permettono di ottenere diversi tipi di video feeds: • Videos feed • Related videos feed • Video responses feed • Standard feeds • User favorites feed • Playlist feed Video feed Le risposte restituiscono video feeds che contengono al massimo 999 video entries. Le ricerche possono fare uso di qualsiasi parametro standard delle API di Google o di parametri personalizzati. Per esempio, la URL seguente richiede tutti i video correlati alla query "skateboarding dog", ad iniziare dal 21esimo risultato della ricerca, per un totale di 10 risultati: http://gdata.youtube.com/feeds/api/videos? q=skateboarding+dog &start-index=21 &max-results=10 &v=2 Related videos feed Il related videos feed contiene una lista di video connessi ad un altro video. Tramite degli algoritmi YouTube seleziona l’insieme di video correlati. Questo tipo di feed può contenere un massimo di 100 video. Video responses feed Questo feed contiene video che sono stati esplicitamente proposti come video di risposta ad un altro video. Ogni video può essere inserito come video di risposta ad un unico altro video, e alcuni video possono non avere video di risposta. Standard feeds Gli standard feeds contengono una lista di video che riflette sia il comportamento degli utenti di YouTube (come video più votati o più visti), sia quello del personale di YouTube (che seleziona alcuni video, come i video in primo piano e i video adatti ad essere riprodotti su dispositivi portatili). Molti di questi video sono proposti nella home page del sito web. Sebbene la società dichiari che gli standard feeds siano 25 4. Tecnologie utilizzate aggiornati ogni pochi minuti, da evidenze pratiche durante lo sviluppo della demo del software TraceSense si è avuta l’impressione opposta, ovvero che, diversamente da quanto avviene sulla sito web, gli standard feeds non variano anche per diversi giorni. Per ottenere uno standard feed è necessario inviare una richiesta HTTP GET alla URL associata a quel feed. La seguente tabella elenca le URL associate ad ogni standard feed: Name Feed Id Top rated top_rated URL e Descrizione URL: http://gdata.youtube.com/feeds/api/stand ardfeeds/top_rated Descrizione: Questo feed contiene i video votati maggiormente Top favorites top_favorites URL: http://gdata.youtube.com/feeds/api/standard feeds/top_favorites Descrizione: Questo feed contiene i video più scelti come preferiti Most viewed most_viewed URL: http://gdata.youtube.com/feeds/api/standard feeds/most_viewed Descrizione: Questo feed contiene i video guardati più frequentemente Most popular most_popular URL: http://gdata.youtube.com/feeds/api/standard feeds/most_popular Descrizione: Questo feed contiene i video più popolari su YouTube, selezionati usando un algoritmo che tiene conto di molti fattori per determinare la popolarità generale Most recent most_recent URL: http://gdata.youtube.com/feeds/api/standard feeds/most_recent Descrizione: Questo feed contiene i video pubblicati più recentemente su YouTube. Most discussed most_discussed URL: http://gdata.youtube.com/feeds/api/standard feeds/most_discussed Description: Questo feed contiene i video che hanno ricevuto più commenti Most responded most_responded URL: http://gdata.youtube.com/feeds/api/standard feeds/most_responded Description: Questo feed contiene i video che hanno ricevuto il maggior numero di video di risposta 26 4. Tecnologie utilizzate Recently featured recently_featured URL: http://gdata.youtube.com/feeds/api/standard feeds/recently_featured Description: Questo feed contiene i video in primo piano nella home page di YouTube Videos for mobile phones watch_on_mobile URL: http://gdata.youtube.com/feeds/api/standard feeds/watch_on_mobile Description: Questo feed contiene i video adatti ad essere riprodotti sui dispositivi mobili Estrarre standard feeds in base alla collocazione geografica La seguente tabella identifica i paesi per cui le YouTube Data API supportano feeds localizzati e l’ID della regione associato a ciascuno paese Country Region ID Australia AU Brazil BR Canada CA Czech Republic CZ France FR Germany DE Great Britain GB Holland NL Hong Kong HK India IN Ireland IE Israel IL Italy IT Japan JP Mexico MX New Zealand NZ Poland PL Russia RU 27 4. Tecnologie utilizzate South Korea KR Spain ES Sweden SE Taiwan TW United States US Le API permettono di estrarre standard feeds relativi ad una regione specifica inserendo l’ID della regione di interesse nella URL dello standard feed. Il seguente URL dimostra il formato da usare per il suddetto scopo: http://gdata.youtube.com/feeds/api/standardfeeds/regionID/feedID?v=2 Per esempio, per ottenere una lista dei video più votati in Giappone, bisogna inviare una richiesta HTTP GET alla seguente URL: http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?v=2 Usare il parametro tempo con gli standard feeds Si deve far notare che molti di questi feeds supportano il parametro tempo nelle query, che permette di restringere la ricerca solamente ai risultati rilevanti per il giorno, la settimana o il mese precedenti. Per esempio, per cercare i video più votati nell’ultimo giorno, si può inviare una richiesta HTTP GET alla seguente URL: http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?time=today È anche possibile, tramite API, l’esecuzione dell’upload dei video e le relative modifiche riguardanti i video caricati, ma l’argomento non verrà trattato in quanto non è stato oggetto di interesse durante il lavoro svolto nel tirocinio. Definizione dei parametri delle query Le API di Youtube supportano i seguenti parametri standard di Google Data Nome Definizione maxresults Il parametro max-results specifica il massimo numero di risultati che devono essere inclusi nell’insieme di risposta. Questo parametro lavora in connessione con il parametro start-index per determinare quali risultati restituire. Per esempio, per richiedere il secondo set di 10 risultati, ovverosia i risultati da 11 a 20, bisogna settare il parametro max-results a 10 e il parametro start-index a 11. Il valore di default per questo parametro è 25, e il valore massimo è 50. Viene raccomandato di assegnare il valore 10 a max-results se si vuole visualizzare una lista di video sullo schermo, ad esempio in un blog. 28 4. Tecnologie utilizzate start-index Il parametro start-index specifica l’indice del primo risultato che soddisfa i criteri di ricerca incluso nel set di risposta. L’indice di partenza è 1, cioè il primo risultato è 1, il secondo risultato è 2, e così via. Questo parametro lavora in connessione con il parametro maxresults per determinare quali risultati restituire. v Il parametro v specifica la versione delle API a cui YouTube deve fare riferimento per gestire le richieste. Parametri specifici per le YouTube Data API orderby Il parametro orderby, specifica il valore che deve essere usato per ordinare i video nel set di risultati della ricerca. Dei valori validi sono relevance (importanza attributa da YouTube), published (data di pubblicazione), viewCount (numero di visite degli utenti) e rating (voti degli utenti). Inoltre, è possibile richiedere risultati più rilevanti in un linguaggio specifico assegnando al parametro il valore relevance_lang_languageCode, in cui languageCode è un codice che rappresenta il linguaggio in due lettere nello standard ISO 639-1. Bisogna notare che i risultati in altri linguaggi verranno visualizzati ugualmente se sono molto rilevanti per i termini di ricerca. Il valore di default per questo parametro è relevance. q Il parametro q specifica il termine per la ricerca. La ricerca verrà effettuata su tutti i metadati dei video che corrispondono alla parola chiave cercata. I metadati dei video includono il titolo, le parole chiave, la descrizione, lo username dell’autore, e la categoria di appartenenza. Nelle richieste si possono anche usare gli operatori booleani NOT (-) e OR (|) per escludere o cercare video che sono associati con uno o più termini di ricerca. time Il parametro time restringe la ricerca di video pubblicati all’interno di un determinato periodo di tempo. Valori validi per questo parametro sono: today (1 giorno), this_week (7 giorni), this_month (1 mese) e all_time. Il valore di default per questo parametro è all_time. Questo parametro è supportato nelle ricerche di standard feeds; top_rated, top_favorites, most_viewed, most_popular, most_discussed e most_responded. uploader Il parametro uploader permette di restringere la ricerca ai video degli affiliati al programma partner di YouTube. Un partner di YouTube è una persona o un’organizzazione che è stata accettata e partecipa allo YouTube Partner Program. Il valore del parametro uploader deve essere partner. In una risposta API, un feed contiene un video di un partner se la video entry contiene un tag <media:credit> in cui il valore dell’attributo yt:type è partner. 29 4. Tecnologie utilizzate Riferimenti ad alcuni elementi di YouTube usati nell’applicazione Il tag <yt:statistics> fornisce delle statistiche che riguardano un video o un utente. Questo tag non è fornito se in una video entry il valore di ‘viewCount’ è 0. Nome attributo Formato Descrizione Integer Quando l’attributo viewCount si riferisce ad una video entry, specifica il numero di volte che un video è stato visualizzato. Quando l’attributo viewCount si riferisce ad un profilo utente, specifica il numero di volte che il profilo utente è stato visitato. videoWatchCount Integer L’attributo videoWatchCount specifica il numero di video che un utente ha guardato su YouTube. Questo attributo è presente solamente quando il tag <yt:statistics> appare nella entry del profilo di un utente. subscriberCount Integer L’atributo subscriberCount specifica il numero di utenti di YouTube che si sono iscritti ad un particolare canale di un utente. Questo attributo è specificato solamente quando il tag <yt:statistics> appare nella entry del profilo di un utente. DateTime L’attributo lastWebAccess indica la data più recente in cui un particolare utente si è connesso a YouTube. Integer L’attributo favoriteCount specifica il numero di utenti di YouTube che hanno aggiunto un video alla loro lista di preferiti. Questo attributo è specificato soltanto quando il tag <yt:statistics> appare nella entry del profilo di un utente. viewCount lastWebAccess favoriteCount Il tag <media:keywords> contiene una lista (separata da virgole) di parole associate ad un video. La lista è composta al minimo da una parola chiave. Questo campo può contenere tutti i caratteri UTF-8 validi tranne ‘<’ e ‘>’. Inoltre, ogni parola chiave può essere lunga al minimo due caratteri e non può superare i 25 caratteri. Le parole chiave possono contenere spazi, a significare che un termine chiave può essere più lungo di una singola parola. Per esempio, “crazy,surfing,stunts” e “crazy, surfing stunts” sono entrambi valori validi per questo tag, ma il primo valore contiene tre parole chiave, mentre l’ultimo ne contiene solo due ("crazy" e "surfing stunts"). 30 4. Tecnologie utilizzate Limiti nel numero di elementi di un feed Le API di YouTube hanno alcuni vincoli sul numero di video forniti come risultato di una richiesta. Per gli standard feeds questo limite è 100, mentre per le ricerche tramite parole chiave il limite aumenta a 1000. Questi limiti sono stati predisposti, a detta dalla compagnia, perchè loro ritengono che una persona interessata alla ricerca di un particolare video su un argomento non arrivi mai a desidare di ottenere più di 1000 risultati. Questo ragionamento può essere considerato plausibile per quanto riguarda l’interfaccia del sito, mentre per l’uso delle API il discorso probabilmente potrebbe essere diverso. Ovviamente è la compagnia che mette a disposizione gratuitamente questi web services, e non essendo un organizzazione no profit ha tutto l’interesse a non perdere il suo monopolio nel video-sharing, evitatando di mettersi nella situazione di avere dei concorrenti. 31 5. Strategia di soluzione del problema 5. Strategia di soluzione del problema Il risultato che si è voluto ottenere è un database con un vastissimo insieme di metadati relativi a milioni di video. I dati memorizzati per ciascun video sono stati registrati in una tabella, di nome video, che contiene i seguenti campi: Si sono presentati alcuni problemi durante lo sviluppo della soluzione applicativa. Le politiche di YouTube non permettono di accedere ai dati globalmente, pertanto si è pensato di implementare una soluzione che, dato il numero immenso di video presenti sul portale, facesse uso di un approccio di tipo incrementale. Per superare l’ostacolo dei limiti nel numero di risultati forniti dalle API, sono stati valutati diversi modi per navigare tra i dati ed espandere via via la ricerca, che vengono esposti nel seguito del capitolo. Inoltre, le API non permettono di decidere tra quali campi una ricerca debba essere fatta; le parole chiave sono ricercate indistintamente tra tutti i metadati (titolo, descrizione, tags, autore, ecc...). Nei risultati forniti si trovano molti duplicati, che rallentano la ricerca, perchè creano delle ridondanze. Per l’estrazione di un set di dati relativi ai video si è fatto riferimento alla reference guide delle API di YouTube, in cui sono forniti alcuni esempi di codice (sia in Java che in altri linguaggi). Si è scelto di partire da uno di questi esempi, scaricando il file relativo: gdatasrc.java-1.33.0.zip (dal seguente link: http://code.google.com/p/gdata-javaclient/downloads/list), che è stato rilasciato l’8 giugno 2009. Questo codice fornisce una dimostrazione delle funzioni basilari delle API di YouTube, facendo uso della Java client library. L’intenzione di partenza è stata di usare questo codice per iniziare a conoscere e comprendere l’utilizzo dei web services tramite la programmazione Java, e sperimentare il funzionamento dei metodi forniti. Grazie a questo approccio, la successiva fase di personalizzazione per l’ottenimento delle informazioni utili al presente lavoro è risultata più semplice, rispetto al dover partire completamente da zero. L’esempio contiene dei metodi che permettono di: 32 5. Strategia di soluzione del problema - Estrarre gli standard feeds - Cercare un feed - Cercare un feed usando categorie e parole chiave - Estrarre i video caricati da un utente - Estrarre i video preferiti di un utente - Estrarre i video di risposta ad un video - Estrarre i commenti di un video - Estrarre la lista di playlist di un utente - Estrarre una playlist - Estrarre la lista di iscrizioni di un utente - Estrarre il profilo di un utente Inizialmente, si è provato proprio a compilare il codice dell’esempio, ma ciò non era possibile, perchè si generava un errore durante il run-time (con la seguente dicitura “Invalid value for attribute 'name' ”). Questo inconveniente è sorto per un problema preesistente nel codice dell’esempio che, probabilmente, non era aggiornato agli ultimi sviluppi di YouTube. Infatti, nell’elenco dei possibili stati in cui si può trovare un video quando non è riproducibile, indicati dal tag <yt:state>, (INCOMPLETE, PROCESSING, REJECTED, FAILED, DELETED) mancava l’opzione RESTRICTED. La soluzione al problema è stata trovata consultando lo YouTube APIs Developer Forum, si è pertanto riusciti a risolvere il problema modificando il codice fornito ed aggiungendoci l’opzione RESTRICTED tra i valori possibili per lo stato di un video. In seguito al corretto funzionamento del codice di esempio si è potuti entrare in contatto più stretto con i metodi necessari per recuperare i dati desiderati. Si è creata una nuova applicazione Java, che su modello dell’esempio attingesse ai dati del portale. Inizialmente si è tentato di scaricare i video più visti, però si sono subito riscontrati dei problemi, in quanto le API fornite non permettono di ricevere più di 100 risultati (non più di 50 per singola richiesta, per un massimo di 2 richieste) per gli standard feeds. Quindi si è posto il problema di estrarre un gran numero di video, tra i più visti, scavalcando quest’ostacolo. - Algoritmo utilizzato per estrarre dati dai web services Sono state fatte delle valutazioni per decidere come aggirare il problema dei limiti, sperimentando diversi criteri di ricerca. Si è notato che con la ricerca per parola chiave o per categoria questo limite si estendeva a 1000 risultati (sempre con un massimo di 50 risultati per richiesta, per cui un massimo di 20 richieste), quindi già un miglioramento rispetto agli standard feeds. Si è inoltre pensato di realizzare un parser, ovvero un algoritmo di riconoscimento sintattico del contenuto di una pagina web, però, andando ad analizzare i risultati 33 5. Strategia di soluzione del problema forniti da Youtube per una ricerca sui video più visti in generale, ci si è imbattuti all’incirca negli stessi limiti. Un massimo di 115 risultati per gli standard feeds (invece di 100 con le API), e sempre 1000 risultati per le ricerche con parole chiave. Quindi, considerando che un parser non avrebbe avuto una durata lunga nel tempo (a causa della continua variazione della struttura di un sito web), come nel caso dell’uso delle API, e la pressochè identica granularità dei risultati forniti tra interfaccia del sito web e API, si è scartata questa ipotesi. La procedura di spidering usata è illustrata in Figura 5. Figura 5. Schema della procedura di spidering Per creare una base dati di partenza composta da argomenti variegati si è iniziato quindi, estraendo i 1000 risultati di video più visti per ognuna delle 13 categorie in cui sono classificati i video in YouTube: - All - Autos & Vehicles - Comedy - Education - Entertainment - Film & Animation - Gaming 34 5. Strategia di soluzione del problema - Howto & Style - Music - News & Politics - Nonprofits & Activism - People & Blogs - Pets & Animals - Science & Technology - Sports - Travel & Events Non si sono ottenuti esattamente 16.000 video perchè, in primo luogo la categoria ‘All’ contiene video di tutte le categorie e, inoltre, come è stato più volte verificato, nei risultati di una richiesta spesso lo stesso video compare più volte, anche se questo in teoria non dovrebbe succedere. Si sono ottenuti un totale di circa 13.000 risultati diversi. - Metodologia di spidering incrementale I risultati ottenuti al punto precedente sono stati la base sulla quale si è costruito il resto del database. Questi video sono stati salvati in una base dati. La tabella che li contiene, chiamata ‘video’, ha diversi attributi; ID, titolo, URL, autore, categoria, descrizione, numero di visualizzazioni e i tags. Inoltre ognuno di questi tag è stato inserito in una tabella (‘tags’) a parte contenente tutti i tags trovati. Per cercare di espandere la base dati si è cominciato a fare delle ricerche per tag (quelli contenuti nell’apposita tabella ‘tags’). Quindi per ogni tag usato come parola chiave nella ricerca si ottengono al più 1000 risultati (non sempre 1000 perchè alcuni tag possono essere presenti di rado su YouTube, o nessun risultato quando un tag è stato inserito da un utente, memorizzato nel nostro database, e poi quel video è stato rimosso dall’utente o da YouTube). Ogni tag già usato viene segnato tramite un flag nella tabella ‘tags’ e quindi non viene più cercato. Inizialmente la selezione dei tags da usare veniva fatta in ordine alfabetico (ad esempio si prendevano dal database i 100 tag non ancora usati, ed essendo i tag memorizzati in ordine alfabetico si ricadeva sempre nelle prime posizioni dell’alfabeto). Successivamente, per ovviare a questo problema è stato implementato un algoritmo di ricerca random tra le posizioni dei tags nel database, e in questo modo il campionamento viene effettuato in modo più omogeneo tra le lettere dell’alfabeto. I video trovati in questo modo sono salvati successivamente nella tabella dei video e i relativi tags nella tabella dei tags. Sono state valutate anche altre opzioni, per esempio, considerare i video correlati (ovvero sullo stesso argomento) ad ognuno dei video presenti nella base dati, ma in questo modo si rischierebbe di ricadere sempre su video dello stesso argomento e 35 5. Strategia di soluzione del problema non avere quindi un campione omogeneo di video sulle categorie. Per questo motivo questa scelta non è stata attuata. Altre possibilità prese in esame sono state: • acquisire i video preferiti di un utente (rischiando nuovamente di ricadere sempre nel problema precedente, ovvero avere un campione di video monotematico). • Considerare i video degli utenti che hanno commentato quel video. In questo caso però si rischierebbe di andare molto lenti perchè non tutti gli iscritti a YouTube sono attivi, nel senso di pubblicare dei video. • Fare le ricerche in base a tutti i video pubblicati dagli utenti (in modo simile a ciò che si è fatto per i tags), ovvero per ogni utente acquisire i video da lui caricati. Questo ultima idea è sopraggiunta dopo le statistiche effettuate sulla base dati, in cui si è rilevato che nel campione estratto erano presenti circa 2,43 video per utente. Un numero abbastanza basso, in quanto ogni utente attivo ha molto probabilmente caricato più di 2 video. Per di più l’utente che si sta usando per fare la ricerca è sicuramente attivo (infatti ha pubblicato almeno un video dal quale è stata estratto estratto il suo nickname ed è stato salvato nel database). Questa opzione è stata presa in considerazione verso il termine del tirocinio ed è stato implementato nell’applicazione un metodo che permette di avvalersi anche di questo algoritmo di spidering incrementale. Sono state fatte delle prove e si è notata una buona velocità di accrescimento della base dati con questo metodo, che potrà essere usato in futuro se lo si riterrà opportuno. - Interfaccia grafica come strumento di valutazione di TraceSense Al termine della realizzazione dell’applicazione si è deciso di creare l’interfaccia grafica per il sito dimostrativo di Tracesense. L’obiettivo del sito era dimostrare il funzionamento dell’algoritmo sotto una veste grafica intuitiva e accattivante. Si è deciso di organizzarlo nel seguente modo: - una homepage, che serve da filtro per gli utenti che non possono accedervi. In questa pagina si inseriscono i dati per fare il login; una volta verificati, dal sistema, username e password si può accedere al sito vero e proprio. - una seconda pagina (Figura 6) in cui è presente un elenco di video di default, i 100 video più visti. Questi ultimi sono estratti, attraverso l’applicazione Java creata, che interroga le API di YouTube. La scelta del tipo di feeds può essere facilmente cambiata in funzione di altri tipi di standard feeds (descritti nel paragrafo 4.2). Oltre ai video proposti di default è inoltre possibile fare una ricerca per parole chiave tra tutti i video di YouTube ed ottenere i risultati direttamente nella pagina. Questo è possibile perchè è stata usata la tecnologia Ajax, che permette di far cambiare solo parte della pagina dinamicamente, e lasciarne un’altra parte statica (questa tecnologia è stata approfondita meglio nel paragrafo 4.1). La ricerca di video per parola chiave viene fatta interfacciando il codice HTML con una servlet Java. 36 5. Strategia di soluzione del problema Figura 6. Pagina web con l'elenco dei video Ogni volta che viene premuto il tasto ‘Invio’ sulla casella di testo della ricerca o che viene premuto il pulsante ‘Search’, il codice richiama una servlet. Questa si interfaccia con l’applicazione java, richiamando i metodi di quest’ultima, (lo scambio di dati è fatto in formato json, formato che è stato descritto più dettagliatamente nel paragrafo 4.1). Viene pertanto aggiornato l’elenco dei video. Se nella casella di testo non è presente nessun testo, la ricerca viene inizializzata come avviene al caricamento della pagina, ovvero vengono visualizzati i video di default. Figura 7. Tooltip Per evitare che titoli troppo lunghi non vengano visualizzati nella loro totalità sotto l’immagine, si è inserito il tooltip, grazie al quale passando il mouse su una delle immagini anteprima dei video, si può visualizzare il titolo completo di quel video (Figura 7). 37 5. Strategia di soluzione del problema È a questo punto possibile cliccare su un’immagine per selezionare un video da analizzare. Dopo questo click si viene condotti nella pagina di analisi dettagliata dei contenuti del video. Figura 8. Pagina web con l'analisi del singolo video - un’ultima pagina (Figura 8) in cui sono presentati i dettagli di un singolo video selezionato. La pagina è divisa in due sezioni (destra e sinistra) per mettere a confronto i dati forniti dal portale con quelli forniti come risultato dall’algoritmo: - Sulla sinistra sono presenti i YouTube Data: i dati ottenuti dal portale, ovvero il titolo, i tags e il video. - Sulla destra si trovano le Tracesense Categories: è visualizzato il risultato ottenuto da TraceSense, ovvero le prime tre categorie con maggiore rilevanza. Nel caso in cui più categorie siano a pari merito, in ognuna delle tre righe vengono visualizzate tutte le categorie che hanno la stessa importanza. In questa sezione c’è anche un’altra parte, molto interessante, in cui viene chiesto un giudizio all’utente che, dopo aver preso visione del video, del titolo e dei tags deve esprimere il suo giudizio sulla qualità dei risultati ottenuti da Tracesense, tra le seguenti opzioni: 1. ‘Great, I agree completely with the first definition’ 2. ‘Good, I agree with some definition’ 3. ‘Bad, completely off the topic’ Questa valutazione è obbligatoriamente fatta a prescindere dalla descrizione del video, che infatti non è visualizzata, proprio perchè il funzionamento dell’algoritmo si basa esclusivamente sui tags, e non su altre fonti. Inoltre l’utente potrebbe leggere solamente la descrizione e non vedere il video, se questa gli fosse fornita. 38 5. Strategia di soluzione del problema Non viene neanche fornita la categoria originaria del video, assegnata da chi ha pubblicato il video, perchè potrebbe fuorviare l’utente, ed oltre a non fargli venir voglia di vedere il video, questa categoria potrebbe non essere realmente quella che identifica il video. Una volta dato il giudizio, nella pagina compaiono anche la categoria assegnata dall’uploader del video (utente che lo ha inserito su YouTube) e la descrizione che questi ne ha dato. La comparsa di questi elementi è gestita con gli attributi riguardanti la visibilità, di HTML e CSS. A questo punto l’utente della demo può porre a confronto la categoria originaria con quelle attribuite dall’algoritmo e trarre le sue conclusioni. Inizialmente non venivano visualizzati tutti i video nella pagina, ma rimanevano frequentemente alcuni spazi vuoti sparsi nella griglia, tra gli altri video. Dopo alcune ricerche si è compreso il problema. Non tutti i video presenti su YouTube possono essere inseriti all’interno di altre pagine web (come embedded video). Difatti quando si pubblica un video si può decidere di impedirgli di diventare un “embedded video”, e quando si prova a farlo viene visualizzato un messaggio "Embedding disabled by request". Si può facilmente ovviare a questo problema aggiungendo ‘&format=5’ alle query di ricerca per restringere i risultati ai video che possono essere inseriti all’interno di altre pagine web. In questo modo la griglia di presentazione delle thumbnail dei video non presenta immagini mancanti. 39 6. Caratterizzazione della base dati 6. Caratterizzazione della base dati 6.1 Presentazione ed interpretazione dei risultati ottenuti dalle statistiche Sono state effettuate numerose statistiche sulla base dati ottenuta, e vengono di seguito presentate le più interessanti. Altri dati raccolti sono riportati in APPENDICE. Milioni di video 10 9 5° settimana 8 7 4° settimana 6 3° settimana 5 2° settimana 4 3 1° settimana 2 1 0 0 10 20 30 40 50 60 70 80 Migliaia di tags Grafico 1. Numero di video (in milioni) e numero di tags (in migliaia) raccolti durante la creazione della base dati Nel grafico 1 è riportata l’evoluzione della base dati per quanto riguarda la numerosità di video e tags. Si è calcolato che vengono memorizzati nel database circa 160 nuovi video al minuto, che sono più di un milione e mezzo di video a settimana. Dall’andamento del grafico si nota che il numero di video scaricati inizialmente cresce con una velocità maggiore, mentre successivamente la pendenza della retta diminuisce, molto probabilmente perchè vengono trovati video che sono già presenti nella base dati. I dati sono stati registrati nei giorni lavorativi, in un arco di 5 settimane, durante le quali si è creata una base dati di più di 9 milioni di video diversi. 40 6.. Caratterizzazione della base dati Percentuale del numero umero di video suddivisi per categoria Tech Travel 1% 2% Animals 1% Autos 4% Sports 7% Nonprofit 1% Comedy 7% Education 2% People 10% Autos Comedy Education Entertainment 18% News 4% Animals Entertainment Film Games Music 31% Film 7% Games How to 3% 2% How to Music News Grafico 2. Percentuale del numero umero di video suddivisi per categoria Questa statistica è stata fatta sull’intera base dati acquisita fino al momento dell’analisi, che comprendeva un totale di 5.200.463 video. Nel grafico a torta è raffigurata la suddivisione in categorie YouTube del campione di video analizzati. Ogni spicchio della torta rappresenta una percentuale più o meno vasta, in base alla numerosità dei video. Questa rappresentazione è interessante per conoscere la distribuzione dei video in domini di conoscenza. Si può notare che la percentuale maggiore è detenuta dalla categoria Music, che rappresenta quasi un terzo del totale. Come si può constatare, constatare anche dalle parole più popolari tra i tags dei video di YouTube (rappresentate ( in Figura 9), la categoria musicale è sicuramente quella dominante. Una possibile interpretazione di questo comportamento sociale potrebbe riguardare sicuramente l’utilizzo che viene fatto principalmente dalle persone di YouTube, ovvero il sito web è usato in particolar modo per finalità di svago, come fonte di intrattenimento. ento. Inoltre, i video musicali sono quelli che si prestano meglio ad essere riprodotti anche in background sul computer mentre si esercitano altre attività. Non ultima è da citare l’importanza pubblicitaria che questi contenuti rivestono, poichè i video musicali usicali protetti da copyright molto spesso sono correlati a pubblicità per la vendita della musica proposte da iTunes di Apple. Quindi, il giro d’affari che costituiscono deve essere abbastanza importante da spingere tutte le case discografiche a proporre loro stesse i contenuti dei video musicali sul web. web Se si considerano insieme le due categorie Film (in cui convergono film e cartoni animati) e Entertainment (che riguarda soprattutto programmi televisivi e spettacoli), che sono molto simili per contenuti, contenuti, si ottiene l’altra grande “fetta” della torta che racchiude il 25% di video. 41 6. Caratterizzazione della base dati La popolarità di questo segmento è ovviamente dovuta al suo aspetto di intrattenimento, come osservato per la categoria musicale. Probabilmente la maggior parte di questi video riproduce serie televisive, film, tra cui anche alcuni contenuti protetti da copyright. Delucidazioni sulla politica che Youtube adotta riguardo a questo tipo di violazioni sono esposte nel paragrafo 2.3. I contenuti protetti da copyright sono ovviamente visti da moltissime persone e questo ne decreta la loro popolarità. Le serie televisive per di più, hanno un pubblico “abituale”, ovvero che è costante nel tempo; persone che magari non hanno il tempo di guardare queste serie in televisione, possono guardarle su YouTube esattamente nel momento in cui vogliono, e anche mettere in pausa, saltare delle scene, ecc...Questo è sicuramente uno degli aspetti che hanno decretato il successo di questa piattaforma multimediale. La categorie Sports e Comedy occupano entrambe il 7%, e si possono fare considerazioni analoghe a quelle fatte per le altre forme di intrattenimento, mentre l’unica altra categoria con un certo peso, circa il 10%, è People. Questa categoria è solitamente composta da video cosiddetti vlog, ovvero blog accompagnati dal video di persone che parlano delle proprie esperienze personali o altri argomenti simili. Considerato il grande numero di utenti del portale non c’è da stupirsi che molti di questi oltre a guardare filmati partecipino attivamente con contenuti personali o eventi speciali della propria vita. Questa è esattamente la filosofia del web 2.0, un luogo in cui si può trasmettere ed apprendere allo stesso tempo. Le altre categorie hanno percentuali meno consistenti, tra queste è inclusa anche la categoria News, ad ulteriore dimostrazione che in questo nuovo paradigma l’attualità non proviene prevalentemente da fonti “ufficiali”, come testate giornalistiche o gruppi editoriali, ma sta iniziando la diffusione (bottom-up) delle informazioni a partire dal basso, dalle persone comuni che documentano ciò che le circonda. Statistiche su alcuni canali “ufficiali” Tabella 2. Numero di video pubblicati per i canali "ufficiali" Canale Numero di video pubblicati 1 AlJazeeraEnglish 10652 2 istreamnews 3446 3 BBCWorldwide 4028 4 AssociatedPress 23226 5 Bloomberg 15553 6 itnnews 7 FoxNewsChannel 8 NationalGeographic 1050 756 1185 42 6. Caratterizzazione della base dati 9 newscientistvideo 617 10 Politicstv 807 11 sciencentral 287 12 TheNewYorkTimes 1459 13 TheRealNews 1441 14 Google 1015 15 france24english 2501 16 CNN 2771 17 skynews 970 18 CBS 20569 19 ABCNews 1283 20 NTDTV 7953 È stata fatta un’analisi su un insieme di canali considerati “ufficiali”, nel senso che non provengono da singoli individui, ma principalmente da canali di informazione o network televisivi. La lista dei canali è in Tabella 2. Si è considerata l’ipotesi di scegliere i canali degli utenti partner di YouTube, tramite l’attributo uploader (descritto nel paragrafo 4.2), ma in realtà non avrebbe avuto la stessa valenza, perchè i partner sono comunque utenti comuni. L’insieme dei canali è stato scelto, ovviamente tra quelli in lingua inglese, prendendo spunto da questo sito: http://www.openculture.com/, che contiene una lista di canali di YouTube sugli argomenti di attualità, informazione e scientifici. L’obiettivo dell’analisi di questi canali è stato confrontare il comportamento nel tagging (ovvero del modo di assegnare i tags ad una risorsa informativa) da parte di persone che svolgono questo compito come lavoro, rispetto agli altri utenti semplici. Si sono confrontati il numero di tags medi, massimi e minimi dei video dei canali “ufficiali” selezionati, con quelli di un ugual numero di video più visti (circa 100.000). Tabella 3. Confronto di statistiche sui tags tra canali "istituizionali" e video più visti Canali “ufficiali” Video più visti 8,97 9,42 Massimo numero di tag 64 123 Minimo numero di tag 1 1 Media di tag 43 6.. Caratterizzazione della base dati Il numero di tag medi per video è molto simile, circa 9, per cui non si possono fare ragionamenti sulla differenza di proposta dei tags da parte delle due categorie. Il numero massimo di tag invece cambia, è circa il doppio per i video più visti, ma non è un numero molto indicativo poichè alcuni utenti mettono un numero di tags molto alto,, anche se non corrispondono al contenuto, per aumentare la possibilità di visibilità del video. Il numero minimo di tag è 1, che è anche il numero minore di tag concesso da Youtube. Tra i video più visti, inoltre c’è c’è una percentuale di ben il 12% di video che hanno solo 1 o 2 tag. Per maggiori particolari sulla distribuzione del numero di tag nel video si può consultare il grafico 11 in appendice. Numero medio di video per utente Questa statistica è stata effettuata sull’intera base dati acquisita fino al momento dell’analisi, che comprendeva un totale di 5.200.463 video. Il numero medio di video per utente è 2,2738. Suddivisione in categorie dei video inseriti da ogni utente Utenti che inseriscono video in categorie distinte 3 categorie 2 categorie 2% 9% da 4 a 15 categorie 1% 1 categoria 2 categorie 3 categorie da 4 a 15 categorie 1 categoria 88% Grafico 3.. Numero di categorie distinte usate da ciascun utente La statistica è stata fatta sull’intera base dati acquisita fino al momento dell’analisi, che comprendeva un totale di 5.200.463 video. Questa rappresentazione grafica indica la percentuale di utenti che inseriscono i propri video in un determinato numero di categorie distinte. Ad esempio, ci saranno utenti che inseriscono tutti i video che pubblicano classificandoli come appartenenti alla stessa categoria, mentre ci saranno altri utenti che producono video di diversa natura e si comportoreranno quindi, di conseguenza. 44 6.. Caratterizzazione della base dati È impossibile non notare la preponderanza di utenti che inseriscono i propri video sempre nella stessa categoria, e per cui cui si potrebbe immaginare che molti canali siano monotematici. In realtà bisogna tener conto anche di altri due aspetti. Riferendoci iferendoci sempre alla relativa significatività del campione preso in esame (è solo un campione, e non l’intero database d di Youtube), si deve notare che il numero medio di video per utente è 2,2738. Quindi, sebbene non ci siano nel campione solo utenti con pochi video, questo aspetto influenza molto i dati. Bisogna inoltre tenere in considerazione il fatto che molti utenti non sono così rigorosi nell’assegnazione delle categorie. categorie Per esempio, se un utente pubblica solitamente video sulla realizzazione di ricette di cucina assegnandoli alla categoria ‘Howto & Style’,, ed una volta pubblica un video sulle sue vacanze, è possibile che non lo inserisca nella categoria ‘Travel & Events’. Si riscontra però, anche un 9% di utenti che inseriscono video in 2 diverse categorie che, considerando la media di poco più di 2 video ad utente, si può considerare una buona percentuale. Numero medio di tag per video e numero di video 40 35 30 25 20 15 n° video( in decine di migliaia) 10 media di tag/video 5 Animals People Autos Film Music Comedy Travel Sports Entertainment Howto News Tech Education Nonprofit Games 0 Grafico 4.. Confronto tra numero medio di tags per video e numero di video della stessa categoria Il grafico in figura illustra l’andamento, suddiviso per categorie YouTube, del numero umero medio di tags per video, in confronto alla numerosità dei video. video Si nota che il numero medio di tags per video è molto simile per nove categorie (circa 10 tag per video),, a partire da sinistra, mentre per le successive categorie è un po’ più alto. Soprattutto per le categorie ‘Games’ e ‘Nonprofit’ ‘Nonprofit’ il numero medio di tags è decisamente maggiore. Per la categoria ‘Games’ vale circa 17 tags/video. Queste categorie sono entrambe poco presenti, come numerosità, nel campione di riferimento. 45 6.. Caratterizzazione della base dati Per questo motivo è possibile che le statistiche siano meno rappresentative, rappresentative, rispetto a categorie con un numero di video 20 o 30 volte maggiore. Apparte questa considerazione si potrebbe anche pensare che queste categorie siano normalmente taggate più minuziosamente, per qualche motivo di carattere specifico. specifico Questa distribuzione è stata ricavata a partire dalla tabella che contiene un milione di video più visti. La tabella usata, ‘videotag_1m’, comprende più di 10 milioni di record ed ha una chiave primaria formata da due campi: l’ID del video e il tag. Si è deciso dii utilizzare questa tabella dopo aver fatto successive prove, prove ed aver constatato l’impossibilità di lavorare su moli di dati considerevolmente maggiori. Infatti, se si fosse creata una tabella ‘video-tag’ ‘video tag’ per gli oltre 5 milioni di video della base dati totale, tale, e considerando un rapporto approssimativo di 1 a 10 tra ‘video’ e ‘video-tag’, tag’, si sarebbe ottenuta una tabella di circa 50 milioni di record. La memoria fisica del computer non sarebbe sicuramente riuscita a gestire questo numero di record. Numero di video suddivisi per anno di inserimento Video 2005 2006 2007 2008 2009 0 5 10 15 20 25 30 35 40 Migliaia di video Grafico 5.. Numero di video suddivisi per anno di inserimento (fino al 31 agosto 2009) Questa statistica è stata calcolata a partire dal campione dei 100.000 video più visti, e non su tutti perchè nella tabella della della base dati di partenza non è presente l’attributo riguardante la data di inserimento di un video, per cui si è scelto di creare una tabella che oltre ai dati contenuti in quella di partenza avesse in più il campo data. La procedura di estrazione della dell data di ogni video si è rivelata lentissima, perchè per ogni id di un video deve essere fatta una singola richiesta, ed inoltre molti di questi video vengono cancellati da YouTube stesso o dai loro autori. Per questo motivo di tempistiche si è ritenuto che che una collezione di 100.000 video potesse essere abbastanza rappresentativa del campione totale. Nel grafico è rappresentata la numerosità di video in base alla data di pubblicazione degli stessi su YouTube. Non è motivo di stupore il numero esiguo di video vide inseriti nell’anno 2005, come si nota dalla dalla rappresentazione grafica, in quanto il 2005 è 46 6. Caratterizzazione della base dati proprio l’anno in cui è stato fondato YouTube, e pertanto non poteva essere altrimenti. Per i successivi tre anni si evidenzia una crescita importante del numero di video, mentre per il 2009 si nota una diminuzione dovuta probabilmente alla data in cui è stata fatta l’analisi, il settembre 2009, che ha sicuramente influenzato il numero di video trovati, poichè non sono potuti rientrare tutti i video dei mesi successivi dell’anno. Tutto ciò non fa che confermare, seppur nella limitatezza della significatività del campione preso in esame, l’incremento straordinario del numero di video pubblicati ogni giorno su Youtube. Co-occorrenze La tabella delle cooccorenze totali (coppie di tags) è stata creata sulla base dei dati presenti nella tabella videotag_1m. Questa tabella ha come chiave primaria le coppie “IDvideo - tag” (una per ogni tag di ogni video) per il milione di video più visti. Sono state create le coppie di tags presenti in videotag_1m, ma solo per i tags appartenenti ai 100 mila più ricorrenti. Questo è stato fatto dopo successivi tentativi fatti inizialmente senza questa limitazione. La query non riusciva ad essere eseguita neanche in 24 ore, per cui si è ritenuto ugualmente significativo considerare solo i tags più frequenti, che comunque sono più significativi per l’analisi. Questo ha permesso anche di lavorare su una tabella molto più piccola perchè non contiene tutte quelle coppie di tags che compaiono magari in uno o pochi video. La tabella delle co-occorrenze è formata da tre campi: tag1, tag2 (che insieme corrispondono alla chiave primaria) e il campo video, che indica il numero di video in cui quella coppia di termini compare. È stata creata in modo che non ci siano termini duplicati ma in ordine inverso. Ad esempio, non possono essere presenti nella tabella coppie “sport-soccer” e “soccer-sport” contemporaneamente. I termini presenti sono tutti minuscoli, poichè non avvengano altre duplicazioni tra termini maiuscoli e minuscoli. Questi requisiti sono stati considerati molto importanti, anche perchè nella fase di taratura dell’algoritmo TraceSense, potrebbero essere fatte delle assegnazioni manuali di significati che altrimenti richiederebbero moltissimo tempo, se si dovessero ripetere per caratteri maiuscoli, minuscoli e coppie invertite degli stessi termini. Figura 9. Tag cloud delle 10 co-occorrenze più frequenti 47 6. Caratterizzazione della base dati Questo tag cloud (Figura 9) è stato ottenuto dalle prime dieci co-occorrenze più popolari. I tags sono separati da un trattino. La più frequente, come si può notare è “music-video”, il che non stupisce perchè come si è più volte osservato in precedenza la categoria “Music” è quella più numerosa, ed anche la più popolare. Ben 5 coppie su 10 riguardano appunto la musica. Ciò che invece meraviglia è la presenza (anche qui 5 volte su 10) della parola video, che non contraddistingue un contenuto da un altro, perchè la risorsa informativa stessa, di ogni contenuto di YouTube, è un video. Le coppie presenti comunque, riguardano tutte tipi di intrattenimento, come film, o video musicali. Come ultima osservazione si può guardare alla dimensione del carattere con cui è scritta la coppia più frequente, “music-video”, che infatti è presente più del doppio delle volte in cui è presente la seconda (“music-pop”). È stato ricavato un altro dato utile alla misurazione della efficacia dell’algoritmo. Per spiegare questa statistica è necessario presentare, a grandi linee, il comportamento base dell’algoritmo. Tabella 4. Azioni assegnate ai tags dall'algoritmo ID Nome Commento 0 Semantics Processa i tags attraverso il motore semantico ( azione di default ) 1 Discards Ignora completamente i tags 2 Remap Indirizza i tags ad altri tags esistenti 3 Category Collega i tags alle categorie 4 Senses Assegna sensi specifici di WordNet ai tags Per alcune co-occorrenze è stato effettuato un lavoro di mappatura, ovvero, il significato è stato indirizzato manualmente verso uno dei comportamenti indicati in Tabella 4. Alcuni tags sono indirizzati al motore semantico, altri a specifici sensi di WordNet, e così via. Alcuni tags vengono però del tutto ignorati, e su questi che si concentra la statistica in questione. WordNet è un database semantico-lessicale per la lingua inglese, che si propone di organizzare, definire e descrivere i concetti espressi dai vocaboli. L'organizzazione del lessico si avvale di raggruppamenti di termini con significato affine, chiamati "synset", a cui si fa riferimento nell’ultima riga della tabella. Effettuando un esame sull’insieme di circa 2500 co-occorrenze precedentemente mappate dall’algoritmo, si è riscontrato che il 15,85% sono soggette ad azione ‘Discards’, e quindi non sono utili all’elaborazione dell’algoritmo. 48 6. Caratterizzazione della base dati 6.2 prestazioni di database di grandi dimensioni La macchina su cui sono state eseguite le elaborazioni è dotata di: - Processore Pentium 4, 3GHz - RAM 1 GB - 1 Hard-disk da 40 GB - Windows XP Professional, versione 2002 SP3 Lavorare con database di grosse dimensioni, che contengono tabelle di 5-10 milioni di records richiede lunghi tempi di attesa. Si pensi ad esempio, che per ottenere il risultato del numero esatto di video presenti nel database, il tempo di risposta è stato di 40 minuti, quando i video erano circa 2 milioni, ed è andato via via salendo all’aumentare del numero di video. Problemi si sono verificati anche con la memoria allocata da Java nell’eseguire le operazioni di lettura/scrittura da database. Per ovviare a questa difficoltà si è aumentata la memoria allocata alla Java Virtual Machine, fino ad un massimo di 512 MB, perchè oltre non è stato possibile, in quanto veniva messa fuori uso l’intera macchina per l’eccessivo spazio riservato a Java. Questo non è stato il solo provvedimento adottato; si è fatto uso di prepared statement nel codice Java. I prepared statement permettono di sfruttare al meglio il meccanismo di caching messo a disposizione dalla maggior parte dei database. Molti DBMS mantengono in cache le istruzioni SQL precedentemente utilizzate e le mettono a disposizione qualora venga inviata al DB stesso un'istruzione analoga. Quindi utilizzando un comando già compilato e ottimizzato si ha un miglioramento generale delle performance. Tale ragionamento è valido, però soltanto se le istruzioni pervenute sono esattamente identiche in forma e contenuto. L’astuzia sta nel passare al database un comando SQL che contenga una serie di variabili, in modo che il DB possa riutilizzare lo stesso comando ogni volta, senza preoccuparsi dei valori cui le variabili stesse fanno riferimento. Un altro modo per ovviare a questi risultati di dimensioni gigantesche è stato l’uso del comando LIMIT all’interno delle query, che permette di eseguire delle selezioni di risultati limitandone il risultato a una certa quantità stabilita, a partire dal primo. La sintassi da utilizzare è la seguente: SELECT * FROM nome_tabella LIMIT numero_risultati Un altro uso che ne è stato fatto è quello di scegliere un numero totale di risultati a partire da un certo numero iniziale. Il formato usato è: SELECT * FROM nome_tabella LIMIT numero_risultato inizio, totale_ numero_ risultati Questo strumento è stato indubbiamente essenziale per lavorare con queste immense quantità di dati. 49 6. Caratterizzazione della base dati Come ulteriore accorgimento è stata innalzata la memoria allocata a MySQL (modificando il file my.ini alla riga innodb_buffer_pool_size, alla quale è stato assegnato un valore di 256 MB). L’operazione che ha richiesto tempi più lunghi è stata senz’altro la creazione delle tabelle delle co-occorrenze, ognuna delle quali ha richiesto fino a 8 ore, ed alcune molto corpose anche il doppio. 50 Conclusioni Conclusioni La capillare diffusione della rete internet, l’immediatezza e la semplicità di utilizzo dei siti realizzati con nuove tecnologie (es. Ajax), e soprattutto la metamorfosi degli utenti da semplici fruitori ad autori di contenuti ha portato ad una crescita esponenziale del numero di informazioni oggi reperibili in rete. Nella prima parte della monografia l’attenzione è stata focalizzata sulle problematiche dovute a questo grande aumento di informazioni, che si ripercuotono sugli utenti finali. Si è evidenziato quanto sia frequente trovarsi di fronte ad una situazione di sovraccarico informativo, che disturba il reperimento delle informazioni effettivamente desiderate dall’utente. Nel seguito si è cercato di proporre possibili soluzioni, essenzialmente in termini di strumenti informatici, al suddetto problema. Poichè gli algoritmi di ricerca comuni non sono sufficienti a districarsi in una tale mole di informazioni si è pensato di avvalersi di algoritmi di tipo semantico, che per loro natura sono più efficienti. Questo problema si presenta sia per gli utenti che cercano informazioni contestualizzate, sia per aziende che vogliono posizionare la loro pubblicità sul web (content based advertising). Nel caso specifico, si è lavorato intorno ad un algoritmo di analisi testuale semantica, TraceSense (sviluppato da IntelliSemantic), in un’ottica di creazione di un dataset (di metadati) utile per la valutazione dell’efficienza dell’algoritmo. Il dataset desiderato è stato estratto dal portale web YouTube. Il presente lavoro di tesi ha cercato di mettere in luce gli aspetti essenziali della realizzazione di applicazioni sviluppate per interagire con i web services di un portale multimediale. Nella parte di contesto specifico sono state proposte alcune possibili applicazioni pratiche per questo tipo di sistemi, e si è descritto in particolare l’ambito del content based advertising. Sono emerse le grandi potenzialità di questo tipo di applicazioni, come ad esempio la possibilità di interrogare database aggiornati dei grandi portali web. La scelta di usare le API rispetto ad un parser si rivela più semplice e più duratura nel tempo, perchè i parser sono creati in base alla struttura di un sito in un dato momento, e appena la struttura cambia, bisogna modificare il parser, invece le API hanno il grande vantaggio di usare metodi abbastanza durevoli, che non vengono influenzati dalle modifiche di strutture dei siti. Le API, però essendo servizi forniti da grandi portali, nel caso di Youtube gratuitamente, non permettono l’accesso a tutti i loro contenuti. YouTube impone dei limiti al numero di risultati forniti, che ne impediscono un accesso globale. Per aggirare questo tipo di problemi si è cercato di procedere con un approccio di tipo incrementale, ovvero partendo da una base di metadati ottenuti in modo omogeneo per categoria, si sono sfruttati i dati in possesso per ampliare la 51 Conclusioni numerosità del campione, usandoli come criteri di ricerca nelle successive interrogazioni. Altre limitazioni consistono nell’impossibilità di decidere tra quali metadati effettuare la ricerca (che viene sempre fatta tra tutti i metadati), e nella presenza di numerosissimi duplicati tra i risultati, che hanno rallentato nettamente la ricerca. È stata realizzata un’applicazione Java per raggiungere i suddetti obiettivi, che ha permesso di ottenere un dataset di circa 9 milioni di video. Si può ritenere soddisfacente l’esito ottenuto, sia per la mole dei dati accumulata, sia considerando il tempo di reperimento abbastanza ragionevole; sono stati memorizzati in media circa 160 nuovi video al minuto, ovvero più di un milione e mezzo di video a settimana. Sono inoltre state effettuate alcune analisi sui dati raccolti, che sono stati oggetto di statistiche volte principalmente a testarne la bontà. L’obiettivo proposto è stato la valutazione della qualità del dataset in previsione dei suoi possibili utilizzi. Si sono realizzate analisi statistiche e sulle co-occorrenze che tendono a dimostrare che il campione di dati estratti è comunque rappresentativo, e utile per caratterizzare i video ed assegnarli alle rispettive categorie. Si sono raggiunti questi risultati nonostante il metodo di estrazione non garantisca di ottenere un campione di dati omogeneo rispetto all’insieme di partenza (a causa dei limiti imposti da YouTube), e sebbene le caratteristiche fisiche della macchina sulla quale si è lavorato, memoria e processore, non fossero ottimali. Parallelamente è stato realizzato il sito web Video Content Discovery Demo, che tramite una semplice interfaccia grafica permette di utilizzare il software TraceSense in modo immediato, oltre ad essere stato un utile strumento di testing dell’algoritmo. Nel sito sono racchiuse l’interazione con TraceSense, appunto, e con l’applicazione Java descritta in questo lavoro per l’interrogazione di YouTube. Il sito è ora disponibile all’indirizzo: http://www.intellipatent.eu/VideoContentDiscovery/ Riassumendo, il progetto sviluppato può essere suddiviso in tre moduli concettuali: - un componente che si occupa di estrarre i metadati da un generico portale di contenuti (può essere implementato attraverso le API, o attraverso il parsing) un modulo che si occupa della metodologia di estrazione (come ad esempio lo spidering incrementale) e di salvare i metadati nel database un componente (in questo caso TraceSense) che elabora i metadati per renderli utilizzabili in molteplici ambiti Alcune possibili modifiche future sono descritte nel seguito. Poichè TraceSense lavora con termini in inglese, potrebbe essere aggiunto alle query di ricerca, un parametro che filtri i risultati ai paesi in cui si parla la lingua inglese, come Stati Uniti o Gran Bretagna. In questo modo si otterrebbero prevalentemente video con tags in inglese e quindi meglio valorizzabili dall’algoritmo di categorizzazione. Nell’applicazione è stata inserita la possibilità di estrarre i video a partire dagli utenti, invece che dai tags, e qualora lo si ritenesse opportuno potrebbe essere scelta 52 Conclusioni questa strategia per espandere ulteriormente la base dati acquisita. Inoltre, come si è potuto verificare, poichè nel dataset sono presenti circa solo 2 video per utente questa strategia ha dato buoni risultati in termini di velocità di espansione del dataset. Alcuni possibili sviluppi futuri potrebbero essere rappresentati dall’uso della lingua italiana, o dall’uso di vocabolari tecnici specifici per settore (per il cinema, per la nautica...), questo renderebbe possibile calibrare maggiormente l’efficacia dell’algoritmo in ambiti più circoscritti. Oltre ai possibili ambiti di utilizzo presentati nel capitolo 2 (content based advertising, e-commerce, analisi di blog e altri), ovviamente gli sviluppi implementativi possono essere molteplici in base alle funzionalità che si desidera implementare, per cui sono possibili svariati miglioramenti e modifiche in base alle esigenze specifiche. 53 APPENDICE APPENDICE Nonprofit 0% News 3% Tech 1% People 6% Travel 1% Animals 2% Autos 3% Animals Autos Sports 7% Comedy 11% Comedy Education 0% Education Entertainment Film Games Entertainment 19% Howto Music Music 37% News Film 7% Nonprofit People Howto Games 1% 2% Sports Grafico 6.. Numero di video suddivisi per categoria. Calcolata su un campione dei 10.000 video più visti Tech 1% People Nonprofit 5% 0% Travel 1% Animals 2% Autos 3% Animals Autos Sports 7% Comedy 10% News 5% Education 1% Comedy Education Entertainment Film Games Entertainment 20% Howto Music News Music 33% Film 6% Nonprofit People Sports Howto 3% Games 3% Tech Grafico 7.. Numero di video suddivisi per categoria. Calcolata su un campione dei 10.000 video più commentati 54 APPENDICE Tech Travel Nonprofit 1% 0% People 0% 4% News Sports 2% 5% Animals 1% Autos 2% Animals Autos Education 1% Comedy 11% Comedy Education Entertainment Film Entertainment 17% Games Howto Music Music 46% Film 7% Games Howto 1% 2% News Nonprofit People Sports Tech Miliardi di visualizzazioni Grafico 8.. Numero di video suddivisi per categoria. Calcolata su un campione dei 10.000 video più scelti come preferiti dagli utenti 120 100 80 60 40 20 0 Grafico 9.. Numero di visualizzazioni totali (in miliardi di visite) suddivise per categoria.. Calcolata su un milione di video più visti 55 APPENDICE Migliaia di tag distinti n° di tag distinti 300 250 200 150 100 50 0 Migliaia di video Grafico 10.. Numero di tags distinti per ogni categoria. Calcolati su 1 milione di video più visti Distribuzione dei tag nei video 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Grafico 11.. Distribuzione dell'assegnazione di un certo numero di tags ai video. Calcolata sui 100.000 video più visti. Non sono stati considerati le quantità di tags presenti meno di 100 volte 56 APPENDICE media di tag/video 18 16 14 12 10 8 6 4 2 0 Grafico 12.. Numero medio di tags per video suddiviso per categorie. Calcolato su 1 milioni di video più visti 57 Sitografia Sitografia Clean Cut Media - Influences of Media & Pop Culture on Our Worldview, http://blog.cleancutmedia.com/ EJO - European Journalism Observatory, http://www.ejo.ch/ Francesco Gavello - Blog Marketing, http://francescogavello.it/ HTML.it , http://www.html.it/ IntelliSemantic - Search Engines and Semantic Solutions Provider, http://www.intellisemantic.com/ Reelseo - The online video marketer’s guide, http://www.reelseo.com/ Uniciber - Comitato interuniversitario Base dati ed editoria in rete, http://www.uniciber.it/ YouTube APIs and Tools, http://code.google.com/apis/youtube/overview.html Wikipedia- L’enciclopedia libera, http://it.wikipedia.org/ 58