Come accennato nel precedente post, ho avuto la possibilità di testare per alcuni giorni una nuova funzionalità di DiscoverText che consente di reperire gli status di Twitter (Tweet) in tempo (quasi) reale. Grazie all’accordo con Gnip, DiscoverText consente dunque di accedere alla così detta Firehose (il flusso di tutti gli status di Twitter) e di raccogliere questi contenuti per una successiva analisi.
La partecipazione a questo programma di beta test è durata dal 19 al 24 Ottobre (anche se il servizio è ancora al momento attivo).
DiscoverText, già nella versione in produzione, consente di importare contenuti da diverse fonti:
Per quanto riguarda Twitter era già disponibile il Live Feed Import basato sulle REST API di Twitter che richiede l’autenticazione con il proprio nome utente e password ed ha il vantaggio di poter reperire i Tweet da un archivio degli ultimi 5/6 giorni e lo svantaggio di non garantire la completezza dei risultati (si veda il precedente post per i dettagli su questo).
La novità è il GNIP PowerTrack importer.
Questa modalità di importazione dei Tweet ha il vantaggio di restituire il flusso completo di tutti gli status pubblici e lo svantaggio di non consentire l’accesso ad alcun archivio (il flusso che si riesce a reperire parte dal momento in cui si inizia a raccogliere i dati).
Una combinazione delle due metodologie di importazione descritte dovrebbe consentire dunque una ragionevole fedeltà nella raccolta dati (ovviamente bisognerà rimuovere i duplicati, cosa che DiscoverText consente di fare in automatico).
La metodologia di importazione GNIP PowerTrack si basa sulla costruzione di una regola di importazione che può essere costruita da un massimo di 10 termini o operatori fino a una lunghezza complessiva di 255 caratteri per l’intera regola. In pratica si tratta di filtrare il flusso dei contenuti secondo certi criteri.
Si possono cercare frasi esatte, usare gli operatori – per escludere un termine, usare un hashtag – vengono identificati alla fonte da Twitter – come chiave di ricerca, una mention di un utente specifico (@nomeutente compresi i RT), status prodotti o destinati ad un utente specifico (from: e to:), contenenti smile, status prodotti da un client specifico, status che siano retweet di uno specifico utente, status contenenti luoghi, stringhe specifiche, che contengono un certo indirizzo internet, status prodotti da utenti che abbiano un klout score compreso fra due valori minimo e massimo, status che contengono link, che siano geo-referenziati, che contengono almeno una mentions (compresi dunque i retweet) o almeno un hashtag e infine status classificati da Gnip come appartenenti ad una certa lingua (compreso l’italiano).
Per testare la funzionalità ho raccolto i dati per molti dei trending topics (per capire meglio come vengono calcolati consiglio la lettura di questo articolo) italiani emersi nel corso degli ultimi giorni da #erpelliccia a #gheddafi, da #nubifragio a #notav (+ “val di susa”) senza dimenticare #XF5 e #gf12. Ho anche provato per breve tempo a monitorare un trending topic globale e sponsorizzato come “Paranormal Activity 3”. Per completare i test ho anche provato a raccogliere i dati dell’interno stream di contenuti in lingua italiana allo scopo di comprendere meglio la consistenza del flusso di tweet prodotti nella nostra lingua.
Iniziamo l’analisi da questi ultimi.
Usando il filtro lang:it avrei dovuto reperire il flusso di Tweet in italiano. Purtroppo questo filtro si è dimostrato del tutto inefficace. Per motivi che non mi sono chiari oltre ai Tweet in italiano sono stati anche reperiti i Tweet in altre lingue fra cui indonesiano, malese, vietnamita, turco e chissà quante altre (ho usato Google Translate per identificarle). Questa errata identificazione della lingua ha reso impossibile raggiungere l’obiettivo che mi ero posto ed i sotto-obiettivi che sarebbero stati identificare quanti di questi Tweet prodotti nella nostra lingua fossero geo-referenziati, contenessero link, mentions ed hashtag.
Passiamo dunque all’analisi del flusso di un trending topic globale e sponsorizzato come “Paranormal Activity 3”.
In questo caso, usando la semplice ricerca per frase esatta, sono stati reperiti 21333 status updates in circa due ore e mezza (nello specifico fra il 10/21/2011 2:36:13 AM ed il 10/21/2011 5:05:37 AM EST: Eastern Standard Time). Si tratta di 142 Tweet circa al minuto. DiscoverText supporta l’analisi di grandi quantità di dati attraverso uno strumento chiamato CloudExplorer. Si tratta in pratica di una semplice tagcloud che consente però di cliccare su ogni voce per accedere alla lista dei contenuti filtrati per quella parola chiave.
Cliccando ad esempio su See si accede ad una lista filtrata dei 7260 Tweet in archivio che contengono questo termine. L’archivio può inoltre essere ricercato liberamente per parola chiave e filtrato usando uno o più criteri basati sugli stessi metadati disponibili per la costruzione di un filtro. Posso ad esempio sapere con facilità quanti status in archivio contengono un hashtag (in questo caso 2433) o quanti contengono menzioni di altri utenti (8004).
Dal pannello filtri avanzati della ricerca è inoltre possibile ottenere alcuni altri dati sull’archivio. Si può ad esempio conoscere il numero degli utenti che hanno usato l’hashtag (19360) e quale di questi lo abbia fatto più volte (15). Conoscere l’hashtag più utilizzato è Paranormal con 281 occorrenze seguito curiosamente da iDontSupport con 66 occorrenze. In totale sono stati utilizzati 1342 hastag diversi. Ci sono invece 5930 utenti diversi menzionati con in testa l’account ufficiale del film chiamato in causa da 531 status.
Il risultato di una ricerca può essere salvato in un bucket (un contenitore di passaggio con il quale miscelare i dati unendo ad esempio più di un bucket) dal quale costruire poi un dataset. Al dataset possono essere applicate le classiche tecniche di analisi del contenuto basate su griglie di analisi date o costruite a partire dai dati. Il dataset toolbox comprende strumenti piuttosto avanzati per il supporto della collaborazione fra più ricercatori nella codifica dello stesso dataset.
Veniamo adesso ai dati che riguardano i trending topics italiani.
Mi soffermerò sui casi di #gheddafi lang:it, #nubifragio, #notav, #XF5 e #gf12.
L’importer avviato alle il 20/10/2011 alle 13:50 (l’ANSA con la notizia della morte di Gheddafi è delle 13:11) ha raccolto 6601 Tweet. Il primo contenuto reperito è datato 20/10/2011 alle 13:49, l’ultimo 24/10/2011 alle 11:17.
Nel GNIP Feed Management è possibile visualizzare un grafico dell’andamento dei Tweet per ogni importer attivo.
Questo è il grafico per #gheddafi (gli orari sono in EST – Eastern Standard Time e gli slot temporali da circa 15 minuti).
Il picco è di oltre 300 Tweet in 15 minuti circa e corrisponde con il momento di attivazione dell’importer. Sarebbe stato bello poter raccogliere i dati di quella mezz’ora intercorsa fra l’annuncio della morte ed il momento di attivazione dell’importer. Raccogliere dataset completi relativi a breaking news è veramente difficile con questo metodo.
Per questo motivo ho provato nel caso di #nubifragio ad utilizzare sia l’importer basato sulle REST API sia il GNIP Power Track.
Con questo metodo ho reperito 4005 (1886 con GNIP e 2119 con le REST API) Tweet. La rimozione dei duplicati esatti ha ridotto l’archivio a 1783 status. Non mi è chiarissimo con questo elenco dei duplicati esatti venga creato e dopo averlo applicato anche ad altri archivi che non avrebbero dovuto contenere duplicati temo posso rimuovere anche i retweet identici. Purtroppo è difficile estrarre da questo archivio elementi utili sulle date perché, apparentemente, i Tweet importati da GNIP e quelli importati dalle REST API sono riferiti a fusi orari diversi. Questo status duplicato ha come ora di pubblicazione rispettivamente le 9:33 AM EST e le 5:33 AM di un fuso orario sconosciuto.
Più semplice è invece lavorare su eventi programmati per i quali è possibile attivare l’importer per tempo.
Per la manifestazione di Val di Susa ho seguito l’hashtag #notav e la stringa di ricerca “val di susa”. Ho attivato l’importer alle 8:34 23/10 e reperito nel complesso 5501 Tweet.
Di seguito il grafico per l’hashtag #notav.
In questo caso sono riuscito a fotografare l’andamento del fenomeno prima che raggiungesse il picco (avvenuto intorno all’ora di pranzo con oltre 300 Tweet prodotti durante lo slot di 15 minuti circa).
Gli hashtag più utilizzati sono stati #diamociuntaglio (1014) e #report (117). Dei 429 utenti menzionati, notav_info è il più citato (645). In totale hanno contribuito a questo hashtag 1300 utenti diversi. Il più attivo è stato ViceVersa_1917 con 146 Tweet.
Durante il periodo di betatest sono inoltre andati in onda le prime puntate della quinta stagione di X Factor e della dodicesima edizione de Il Grande Fratello.
Per X Factor ho monitorato l’hashtag #xf5 con colpevole ritardo a partire dalla mattina successiva alla messa in onda.
Anche la mattina dopo c’è stato un discreto volume di conversazioni che ha superato il picco di 200 Tweet in 15 minuti. Se dovessi avere ancora accesso al servizio proverò a raccogliere i dati relativi alla messa in onda della seconda puntata in onda domani.
Infine per quanto riguarda la prima puntata della dodicesima stagione de Il Grande Fratello ho monitorato sia l’hashtag #gf12 che la stringa “grande fratello” a partire da pochi minuti prima della messa in onda (20:56 del 24/10).
Ecco il volume di Tweet durante la messa in onda (il primo grafico è riferito a “grande fratello” e il secondo a #gf12) [le 3 PM del grafico equivalgono alle nostre 21:00].
In entrambi i casi l’andamento è simile con le discussioni che si protraggono fino a oltre mezza notte (le 6 PM nel grafico). Il buco delle 5 PM del grafico credo sia dovuto a qualche problema nel flusso di importazione dei dati.
Nel secondo caso si sono toccati e superati gli 800 Tweet in 15 minuti. Inoltre questo volume è stato mantenuto per tutta la durata del programma.
Nel complesso ho reperito 13308 generati da 5169 utenti il più attivo dei quali è stato w4rr10r_0 con i suoi 160 status. Oltre a #gf12 sono stati utilizzati altri 883 diversi hashtag. Il più utilizzato dopo #gf12 è stato #GrandeFratello.
Fra i xxx menzionati nei Tweet etichettati #gf12 spicca @Microsatira il cui tweet ironico è stato retweettato oltre 100 volte (in totale ha ricevuto 189 mentions).
La seguente tagcloud dovrebbe dare un’idea dei temi più citati:
Come spesso accade nei discorsi sui programmi televisivi di grande richiamo i commenti veri e propri al programma si sommano ai giudizi di chi non riesce a capacitarsi di come quel programma possa avere successo o si lamenta della qualità della televisione italiana.
In conclusione credo che DiscoverText sia uno strumento con delle caratteristiche uniche. Non si tratta di un prodotto perfetto e non sono mancate le volte nelle quali, specie su grandi quantità di dati, mi sono stati restituiti dei messaggi di errore. L’accordo che stanno perfezionando con Gnip potrebbe rendere questo strumento essenziale per chi voglia fare ricerca su Twitter. Le modalità di implementazione di questa funzionalità rendono bene le potenzialità di estensibilità della piattaforma. La gestione delle timezones appare migliorabile (forse renderanno in futuro possibile scegliere all’utente il fuso orario per il grafico). Nel complesso il sistema si comporta bene anche su grandi quantità di dati mostrando eccellenti performance nella creazione delle tagclouds (che necessiterebbero però della possibilità di escludere liste di parole comuni) e nelle ricerche che richiedono sempre tempi ragionevolmente brevi per essere portate a termine.
Credo ci siano più di uno spunto
Come ho avuto modo di scrivere altrove, l’utilizzo di una piattaforma web collaborativa per l’analisi del contenuto rappresenta un percorso obbligato per chi desideri fare ricerca qualitativa su grandi quantità di dati (come quelli provenienti dai media sociali).
DiscoverText è un prodotto della Texifter LLC. Si tratta di una società nata come spin-off a partire dall’attività di ricerca di Stuart W. Shulman presso la University of Massachusetts Amherst.
Non mi resta dunque che augurare buon lavoro a Stuart e al suo team di sviluppatori.
P.S. Durante il periodo di beta-test i dati non sono esportabili quindi non chiedetemeli 😉
Come accennato nel precedente post, ho avuto la possibilità di testare per alcuni giorni una nuova funzionalità di DiscoverText che consente di reperire gli status di Twitter (Tweet) in tempo (quasi) reale. Grazie all’accordo con Gnip, DiscoverText consente dunque di accedere alla così detta Firehose (il flusso di tutti gli status di Twitter) e di raccogliere questi contenuti per una successiva analisi.
La partecipazione a questo programma di beta test è durata dal 19 al 24 Ottobre (anche se il servizio è ancora al momento attivo).
DiscoverText, già nella versione in produzione, consente di importare contenuti da diverse fonti:
Per quanto riguarda Twitter era già disponibile il Live Feed Import basato sulle REST API di Twitter che richiede l’autenticazione con il proprio nome utente e password ed ha il vantaggio di poter reperire i Tweet da un archivio degli ultimi 5/6 giorni e lo svantaggio di non garantire la completezza dei risultati (si veda il precedente post per i dettagli su questo).
La novità è il GNIP PowerTrack importer.
Questa modalità di importazione dei Tweet ha il vantaggio di restituire il flusso completo di tutti gli status pubblici e lo svantaggio di non consentire l’accesso ad alcun archivio (il flusso che si riesce a reperire parte dal momento in cui si inizia a raccogliere i dati).
Una combinazione delle due metodologie di importazione descritte dovrebbe consentire dunque una ragionevole fedeltà nella raccolta dati (ovviamente bisognerà rimuovere i duplicati, cosa che DiscoverText consente di fare in automatico).
La metodologia di importazione GNIP PowerTrack si basa sulla costruzione di una regola di importazione che può essere costruita da un massimo di 10 termini o operatori fino a una lunghezza complessiva di 255 caratteri per l’intera regola. In pratica si tratta di filtrare il flusso dei contenuti secondo certi criteri.
Si possono cercare frasi esatte, usare gli operatori – per escludere un termine, usare un hashtag – vengono identificati alla fonte da Twitter – come chiave di ricerca, una mention di un utente specifico (@nomeutente compresi i RT), status prodotti o destinati ad un utente specifico (from: e to:), contenenti smile, status prodotti da un client specifico, status che siano retweet di uno specifico utente, status contenenti luoghi, stringhe specifiche, che contengono un certo indirizzo internet, status prodotti da utenti che abbiano un klout score compreso fra due valori minimo e massimo, status che contengono link, che siano geo-referenziati, che contengono almeno una mentions (compresi dunque i retweet) o almeno un hashtag e infine status classificati da Gnip come appartenenti ad una certa lingua (compreso l’italiano).
Per testare la funzionalità ho raccolto i dati per molti dei trending topics (per capire meglio come vengono calcolati consiglio la lettura di questo articolo) italiani emersi nel corso degli ultimi giorni da #erpelliccia a #gheddafi, da #nubifragio a #notav (+ “val di susa”) senza dimenticare #XF5 e #gf12. Ho anche provato per breve tempo a monitorare un trending topic globale e sponsorizzato come “Paranormal Activity 3”. Per completare i test ho anche provato a raccogliere i dati dell’interno stream di contenuti in lingua italiana allo scopo di comprendere meglio la consistenza del flusso di tweet prodotti nella nostra lingua.
Iniziamo l’analisi da questi ultimi.
Usando il filtro lang:it avrei dovuto reperire il flusso di Tweet in italiano. Purtroppo questo filtro si è dimostrato del tutto inefficace. Per motivi che non mi sono chiari oltre ai Tweet in italiano sono stati anche reperiti i Tweet in altre lingue fra cui indonesiano, malese, vietnamita, turco e chissà quante altre (ho usato Google Translate per identificarle). Questa errata identificazione della lingua ha reso impossibile raggiungere l’obiettivo che mi ero posto ed i sotto-obiettivi che sarebbero stati identificare quanti di questi Tweet prodotti nella nostra lingua fossero geo-referenziati, contenessero link, mentions ed hashtag.
Passiamo dunque all’analisi del flusso di un trending topic globale e sponsorizzato come “Paranormal Activity 3”.
In questo caso, usando la semplice ricerca per frase esatta, sono stati reperiti 21333 status updates in circa due ore e mezza (nello specifico fra il 10/21/2011 2:36:13 AM ed il 10/21/2011 5:05:37 AM EST: Eastern Standard Time). Si tratta di 142 Tweet circa al minuto. DiscoverText supporta l’analisi di grandi quantità di dati attraverso uno strumento chiamato CloudExplorer. Si tratta in pratica di una semplice tagcloud che consente però di cliccare su ogni voce per accedere alla lista dei contenuti filtrati per quella parola chiave.
Cliccando ad esempio su See si accede ad una lista filtrata dei 7260 Tweet in archivio che contengono questo termine. L’archivio può inoltre essere ricercato liberamente per parola chiave e filtrato usando uno o più criteri basati sugli stessi metadati disponibili per la costruzione di un filtro. Posso ad esempio sapere con facilità quanti status in archivio contengono un hashtag (in questo caso 2433) o quanti contengono menzioni di altri utenti (8004).
Dal pannello filtri avanzati della ricerca è inoltre possibile ottenere alcuni altri dati sull’archivio. Si può ad esempio conoscere il numero degli utenti che hanno usato l’hashtag (19360) e quale di questi lo abbia fatto più volte (15). Conoscere l’hashtag più utilizzato è Paranormal con 281 occorrenze seguito curiosamente da iDontSupport con 66 occorrenze. In totale sono stati utilizzati 1342 hastag diversi. Ci sono invece 5930 utenti diversi menzionati con in testa l’account ufficiale del film chiamato in causa da 531 status.
Il risultato di una ricerca può essere salvato in un bucket (un contenitore di passaggio con il quale miscelare i dati unendo ad esempio più di un bucket) dal quale costruire poi un dataset. Al dataset possono essere applicate le classiche tecniche di analisi del contenuto basate su griglie di analisi date o costruite a partire dai dati. Il dataset toolbox comprende strumenti piuttosto avanzati per il supporto della collaborazione fra più ricercatori nella codifica dello stesso dataset.
Veniamo adesso ai dati che riguardano i trending topics italiani.
Mi soffermerò sui casi di #gheddafi lang:it, #nubifragio, #notav, #XF5 e #gf12.
L’importer avviato alle il 20/10/2011 alle 13:50 (l’ANSA con la notizia della morte di Gheddafi è delle 13:11) ha raccolto 6601 Tweet. Il primo contenuto reperito è datato 20/10/2011 alle 13:49, l’ultimo 24/10/2011 alle 11:17.
Nel GNIP Feed Management è possibile visualizzare un grafico dell’andamento dei Tweet per ogni importer attivo.
Questo è il grafico per #gheddafi (gli orari sono in EST – Eastern Standard Time e gli slot temporali da circa 15 minuti).
Il picco è di oltre 300 Tweet in 15 minuti circa e corrisponde con il momento di attivazione dell’importer. Sarebbe stato bello poter raccogliere i dati di quella mezz’ora intercorsa fra l’annuncio della morte ed il momento di attivazione dell’importer. Raccogliere dataset completi relativi a breaking news è veramente difficile con questo metodo.
Per questo motivo ho provato nel caso di #nubifragio ad utilizzare sia l’importer basato sulle REST API sia il GNIP Power Track.
Con questo metodo ho reperito 4005 (1886 con GNIP e 2119 con le REST API) Tweet. La rimozione dei duplicati esatti ha ridotto l’archivio a 1783 status. Non mi è chiarissimo con questo elenco dei duplicati esatti venga creato e dopo averlo applicato anche ad altri archivi che non avrebbero dovuto contenere duplicati temo posso rimuovere anche i retweet identici. Purtroppo è difficile estrarre da questo archivio elementi utili sulle date perché, apparentemente, i Tweet importati da GNIP e quelli importati dalle REST API sono riferiti a fusi orari diversi. Questo status duplicato ha come ora di pubblicazione rispettivamente le 9:33 AM EST e le 5:33 AM di un fuso orario sconosciuto.
Più semplice è invece lavorare su eventi programmati per i quali è possibile attivare l’importer per tempo.
Per la manifestazione di Val di Susa ho seguito l’hashtag #notav e la stringa di ricerca “val di susa”. Ho attivato l’importer alle 8:34 23/10 e reperito nel complesso 5501 Tweet.
Di seguito il grafico per l’hashtag #notav.
In questo caso sono riuscito a fotografare l’andamento del fenomeno prima che raggiungesse il picco (avvenuto intorno all’ora di pranzo con oltre 300 Tweet prodotti durante lo slot di 15 minuti circa).
Gli hashtag più utilizzati sono stati #diamociuntaglio (1014) e #report (117). Dei 429 utenti menzionati, notav_info è il più citato (645). In totale hanno contribuito a questo hashtag 1300 utenti diversi. Il più attivo è stato ViceVersa_1917 con 146 Tweet.
Durante il periodo di betatest sono inoltre andati in onda le prime puntate della quinta stagione di X Factor e della dodicesima edizione de Il Grande Fratello.
Per X Factor ho monitorato l’hashtag #xf5 con colpevole ritardo a partire dalla mattina successiva alla messa in onda.
Anche la mattina dopo c’è stato un discreto volume di conversazioni che ha superato il picco di 200 Tweet in 15 minuti. Se dovessi avere ancora accesso al servizio proverò a raccogliere i dati relativi alla messa in onda della seconda puntata in onda domani.
Infine per quanto riguarda la prima puntata della dodicesima stagione de Il Grande Fratello ho monitorato sia l’hashtag #gf12 che la stringa “grande fratello” a partire da pochi minuti prima della messa in onda (20:56 del 24/10).
Ecco il volume di Tweet durante la messa in onda (il primo grafico è riferito a “grande fratello” e il secondo a #gf12) [le 3 PM del grafico equivalgono alle nostre 21:00].
In entrambi i casi l’andamento è simile con le discussioni che si protraggono fino a oltre mezza notte (le 6 PM nel grafico). Il buco delle 5 PM del grafico credo sia dovuto a qualche problema nel flusso di importazione dei dati.
Nel secondo caso si sono toccati e superati gli 800 Tweet in 15 minuti. Inoltre questo volume è stato mantenuto per tutta la durata del programma.
Nel complesso ho reperito 13308 generati da 5169 utenti il più attivo dei quali è stato w4rr10r_0 con i suoi 160 status. Oltre a #gf12 sono stati utilizzati altri 883 diversi hashtag. Il più utilizzato dopo #gf12 è stato #GrandeFratello.
Fra i xxx menzionati nei Tweet etichettati #gf12 spicca @Microsatira il cui tweet ironico è stato retweettato oltre 100 volte (in totale ha ricevuto 189 mentions).
La seguente tagcloud dovrebbe dare un’idea dei temi più citati:
Come spesso accade nei discorsi sui programmi televisivi di grande richiamo i commenti veri e propri al programma si sommano ai giudizi di chi non riesce a capacitarsi di come quel programma possa avere successo o si lamenta della qualità della televisione italiana.
In conclusione credo che DiscoverText sia uno strumento con delle caratteristiche uniche. Non si tratta di un prodotto perfetto e non sono mancate le volte nelle quali, specie su grandi quantità di dati, mi sono stati restituiti dei messaggi di errore. L’accordo che stanno perfezionando con Gnip potrebbe rendere questo strumento essenziale per chi voglia fare ricerca su Twitter. Le modalità di implementazione di questa funzionalità rendono bene le potenzialità di estensibilità della piattaforma. La gestione delle timezones appare migliorabile (forse renderanno in futuro possibile scegliere all’utente il fuso orario per il grafico). Nel complesso il sistema si comporta bene anche su grandi quantità di dati mostrando eccellenti performance nella creazione delle tagclouds (che necessiterebbero però della possibilità di escludere liste di parole comuni) e nelle ricerche che richiedono sempre tempi ragionevolmente brevi per essere portate a termine.
Credo ci siano più di uno spunto
Come ho avuto modo di scrivere altrove, l’utilizzo di una piattaforma web collaborativa per l’analisi del contenuto rappresenta un percorso obbligato per chi desideri fare ricerca qualitativa su grandi quantità di dati (come quelli provenienti dai media sociali).
DiscoverText è un prodotto della Texifter LLC. Si tratta di una società nata come spin-off a partire dall’attività di ricerca di Stuart W. Shulman presso la University of Massachusetts Amherst.
Non mi resta dunque che augurare buon lavoro a Stuart e al suo team di sviluppatori.
P.S. Durante il periodo di beta-test i dati non sono esportabili quindi non chiedetemeli 😉
Come accennato nel precedente post, ho avuto la possibilità di testare per alcuni giorni una nuova funzionalità di DiscoverText che consente di reperire gli status di Twitter (Tweet) in tempo (quasi) reale. Grazie all’accordo con Gnip, DiscoverText consente dunque di accedere alla così detta Firehose (il flusso di tutti gli status di Twitter) e di raccogliere questi contenuti per una successiva analisi.
La partecipazione a questo programma di beta test è durata dal 19 al 24 Ottobre (anche se il servizio è ancora al momento attivo).
DiscoverText, già nella versione in produzione, consente di importare contenuti da diverse fonti:
Per quanto riguarda Twitter era già disponibile il Live Feed Import basato sulle REST API di Twitter che richiede l’autenticazione con il proprio nome utente e password ed ha il vantaggio di poter reperire i Tweet da un archivio degli ultimi 5/6 giorni e lo svantaggio di non garantire la completezza dei risultati (si veda il precedente post per i dettagli su questo).
La novità è il GNIP PowerTrack importer.
Questa modalità di importazione dei Tweet ha il vantaggio di restituire il flusso completo di tutti gli status pubblici e lo svantaggio di non consentire l’accesso ad alcun archivio (il flusso che si riesce a reperire parte dal momento in cui si inizia a raccogliere i dati).
Una combinazione delle due metodologie di importazione descritte dovrebbe consentire dunque una ragionevole fedeltà nella raccolta dati (ovviamente bisognerà rimuovere i duplicati, cosa che DiscoverText consente di fare in automatico).
La metodologia di importazione GNIP PowerTrack si basa sulla costruzione di una regola di importazione che può essere costruita da un massimo di 10 termini o operatori fino a una lunghezza complessiva di 255 caratteri per l’intera regola. In pratica si tratta di filtrare il flusso dei contenuti secondo certi criteri.
Si possono cercare frasi esatte, usare gli operatori – per escludere un termine, usare un hashtag – vengono identificati alla fonte da Twitter – come chiave di ricerca, una mention di un utente specifico (@nomeutente compresi i RT), status prodotti o destinati ad un utente specifico (from: e to:), contenenti smile, status prodotti da un client specifico, status che siano retweet di uno specifico utente, status contenenti luoghi, stringhe specifiche, che contengono un certo indirizzo internet, status prodotti da utenti che abbiano un klout score compreso fra due valori minimo e massimo, status che contengono link, che siano geo-referenziati, che contengono almeno una mentions (compresi dunque i retweet) o almeno un hashtag e infine status classificati da Gnip come appartenenti ad una certa lingua (compreso l’italiano).
Per testare la funzionalità ho raccolto i dati per molti dei trending topics (per capire meglio come vengono calcolati consiglio la lettura di questo articolo) italiani emersi nel corso degli ultimi giorni da #erpelliccia a #gheddafi, da #nubifragio a #notav (+ “val di susa”) senza dimenticare #XF5 e #gf12. Ho anche provato per breve tempo a monitorare un trending topic globale e sponsorizzato come “Paranormal Activity 3”. Per completare i test ho anche provato a raccogliere i dati dell’interno stream di contenuti in lingua italiana allo scopo di comprendere meglio la consistenza del flusso di tweet prodotti nella nostra lingua.
Iniziamo l’analisi da questi ultimi.
Usando il filtro lang:it avrei dovuto reperire il flusso di Tweet in italiano. Purtroppo questo filtro si è dimostrato del tutto inefficace. Per motivi che non mi sono chiari oltre ai Tweet in italiano sono stati anche reperiti i Tweet in altre lingue fra cui indonesiano, malese, vietnamita, turco e chissà quante altre (ho usato Google Translate per identificarle). Questa errata identificazione della lingua ha reso impossibile raggiungere l’obiettivo che mi ero posto ed i sotto-obiettivi che sarebbero stati identificare quanti di questi Tweet prodotti nella nostra lingua fossero geo-referenziati, contenessero link, mentions ed hashtag.
Passiamo dunque all’analisi del flusso di un trending topic globale e sponsorizzato come “Paranormal Activity 3”.
In questo caso, usando la semplice ricerca per frase esatta, sono stati reperiti 21333 status updates in circa due ore e mezza (nello specifico fra il 10/21/2011 2:36:13 AM ed il 10/21/2011 5:05:37 AM EST: Eastern Standard Time). Si tratta di 142 Tweet circa al minuto. DiscoverText supporta l’analisi di grandi quantità di dati attraverso uno strumento chiamato CloudExplorer. Si tratta in pratica di una semplice tagcloud che consente però di cliccare su ogni voce per accedere alla lista dei contenuti filtrati per quella parola chiave.
Cliccando ad esempio su See si accede ad una lista filtrata dei 7260 Tweet in archivio che contengono questo termine. L’archivio può inoltre essere ricercato liberamente per parola chiave e filtrato usando uno o più criteri basati sugli stessi metadati disponibili per la costruzione di un filtro. Posso ad esempio sapere con facilità quanti status in archivio contengono un hashtag (in questo caso 2433) o quanti contengono menzioni di altri utenti (8004).
Dal pannello filtri avanzati della ricerca è inoltre possibile ottenere alcuni altri dati sull’archivio. Si può ad esempio conoscere il numero degli utenti che hanno usato l’hashtag (19360) e quale di questi lo abbia fatto più volte (15). Conoscere l’hashtag più utilizzato è Paranormal con 281 occorrenze seguito curiosamente da iDontSupport con 66 occorrenze. In totale sono stati utilizzati 1342 hastag diversi. Ci sono invece 5930 utenti diversi menzionati con in testa l’account ufficiale del film chiamato in causa da 531 status.
Il risultato di una ricerca può essere salvato in un bucket (un contenitore di passaggio con il quale miscelare i dati unendo ad esempio più di un bucket) dal quale costruire poi un dataset. Al dataset possono essere applicate le classiche tecniche di analisi del contenuto basate su griglie di analisi date o costruite a partire dai dati. Il dataset toolbox comprende strumenti piuttosto avanzati per il supporto della collaborazione fra più ricercatori nella codifica dello stesso dataset.
Veniamo adesso ai dati che riguardano i trending topics italiani.
Mi soffermerò sui casi di #gheddafi lang:it, #nubifragio, #notav, #XF5 e #gf12.
L’importer avviato alle il 20/10/2011 alle 13:50 (l’ANSA con la notizia della morte di Gheddafi è delle 13:11) ha raccolto 6601 Tweet. Il primo contenuto reperito è datato 20/10/2011 alle 13:49, l’ultimo 24/10/2011 alle 11:17.
Nel GNIP Feed Management è possibile visualizzare un grafico dell’andamento dei Tweet per ogni importer attivo.
Questo è il grafico per #gheddafi (gli orari sono in EST – Eastern Standard Time e gli slot temporali da circa 15 minuti).
Il picco è di oltre 300 Tweet in 15 minuti circa e corrisponde con il momento di attivazione dell’importer. Sarebbe stato bello poter raccogliere i dati di quella mezz’ora intercorsa fra l’annuncio della morte ed il momento di attivazione dell’importer. Raccogliere dataset completi relativi a breaking news è veramente difficile con questo metodo.
Per questo motivo ho provato nel caso di #nubifragio ad utilizzare sia l’importer basato sulle REST API sia il GNIP Power Track.
Con questo metodo ho reperito 4005 (1886 con GNIP e 2119 con le REST API) Tweet. La rimozione dei duplicati esatti ha ridotto l’archivio a 1783 status. Non mi è chiarissimo con questo elenco dei duplicati esatti venga creato e dopo averlo applicato anche ad altri archivi che non avrebbero dovuto contenere duplicati temo posso rimuovere anche i retweet identici. Purtroppo è difficile estrarre da questo archivio elementi utili sulle date perché, apparentemente, i Tweet importati da GNIP e quelli importati dalle REST API sono riferiti a fusi orari diversi. Questo status duplicato ha come ora di pubblicazione rispettivamente le 9:33 AM EST e le 5:33 AM di un fuso orario sconosciuto.
Più semplice è invece lavorare su eventi programmati per i quali è possibile attivare l’importer per tempo.
Per la manifestazione di Val di Susa ho seguito l’hashtag #notav e la stringa di ricerca “val di susa”. Ho attivato l’importer alle 8:34 23/10 e reperito nel complesso 5501 Tweet.
Di seguito il grafico per l’hashtag #notav.
In questo caso sono riuscito a fotografare l’andamento del fenomeno prima che raggiungesse il picco (avvenuto intorno all’ora di pranzo con oltre 300 Tweet prodotti durante lo slot di 15 minuti circa).
Gli hashtag più utilizzati sono stati #diamociuntaglio (1014) e #report (117). Dei 429 utenti menzionati, notav_info è il più citato (645). In totale hanno contribuito a questo hashtag 1300 utenti diversi. Il più attivo è stato ViceVersa_1917 con 146 Tweet.
Durante il periodo di betatest sono inoltre andati in onda le prime puntate della quinta stagione di X Factor e della dodicesima edizione de Il Grande Fratello.
Per X Factor ho monitorato l’hashtag #xf5 con colpevole ritardo a partire dalla mattina successiva alla messa in onda.
Anche la mattina dopo c’è stato un discreto volume di conversazioni che ha superato il picco di 200 Tweet in 15 minuti. Se dovessi avere ancora accesso al servizio proverò a raccogliere i dati relativi alla messa in onda della seconda puntata in onda domani.
Infine per quanto riguarda la prima puntata della dodicesima stagione de Il Grande Fratello ho monitorato sia l’hashtag #gf12 che la stringa “grande fratello” a partire da pochi minuti prima della messa in onda (20:56 del 24/10).
Ecco il volume di Tweet durante la messa in onda (il primo grafico è riferito a “grande fratello” e il secondo a #gf12) [le 3 PM del grafico equivalgono alle nostre 21:00].
In entrambi i casi l’andamento è simile con le discussioni che si protraggono fino a oltre mezza notte (le 6 PM nel grafico). Il buco delle 5 PM del grafico credo sia dovuto a qualche problema nel flusso di importazione dei dati.
Nel secondo caso si sono toccati e superati gli 800 Tweet in 15 minuti. Inoltre questo volume è stato mantenuto per tutta la durata del programma.
Nel complesso ho reperito 13308 generati da 5169 utenti il più attivo dei quali è stato w4rr10r_0 con i suoi 160 status. Oltre a #gf12 sono stati utilizzati altri 883 diversi hashtag. Il più utilizzato dopo #gf12 è stato #GrandeFratello.
Fra i xxx menzionati nei Tweet etichettati #gf12 spicca @Microsatira il cui tweet ironico è stato retweettato oltre 100 volte (in totale ha ricevuto 189 mentions).
La seguente tagcloud dovrebbe dare un’idea dei temi più citati:
Come spesso accade nei discorsi sui programmi televisivi di grande richiamo i commenti veri e propri al programma si sommano ai giudizi di chi non riesce a capacitarsi di come quel programma possa avere successo o si lamenta della qualità della televisione italiana.
In conclusione credo che DiscoverText sia uno strumento con delle caratteristiche uniche. Non si tratta di un prodotto perfetto e non sono mancate le volte nelle quali, specie su grandi quantità di dati, mi sono stati restituiti dei messaggi di errore. L’accordo che stanno perfezionando con Gnip potrebbe rendere questo strumento essenziale per chi voglia fare ricerca su Twitter. Le modalità di implementazione di questa funzionalità rendono bene le potenzialità di estensibilità della piattaforma. La gestione delle timezones appare migliorabile (forse renderanno in futuro possibile scegliere all’utente il fuso orario per il grafico). Nel complesso il sistema si comporta bene anche su grandi quantità di dati mostrando eccellenti performance nella creazione delle tagclouds (che necessiterebbero però della possibilità di escludere liste di parole comuni) e nelle ricerche che richiedono sempre tempi ragionevolmente brevi per essere portate a termine.
Credo ci siano più di uno spunto
Come ho avuto modo di scrivere altrove, l’utilizzo di una piattaforma web collaborativa per l’analisi del contenuto rappresenta un percorso obbligato per chi desideri fare ricerca qualitativa su grandi quantità di dati (come quelli provenienti dai media sociali).
DiscoverText è un prodotto della Texifter LLC. Si tratta di una società nata come spin-off a partire dall’attività di ricerca di Stuart W. Shulman presso la University of Massachusetts Amherst.
Non mi resta dunque che augurare buon lavoro a Stuart e al suo team di sviluppatori.
P.S. Durante il periodo di beta-test i dati non sono esportabili quindi non chiedetemeli 😉
Alcuni dati sui Twitter trending topic in Italia
Gli argomenti della settimana su Twitter in Italia analizzati con il GnipPowerTrack importer di DiscoverText