Big Data: esempio di codice Java per estrarre tweets da Twitter

Nell’ambito dei Big Data, le aziende investono milioni per estrarre più informazioni possibili da internet, e in particolare dai social network.

Al contrario di Facebook, dove le informazioni sono protette dal livello di privacy impostato dagli utenti, quasi tutti gli account di twitter sono liberi e accessibili da chiunque. La realtà dei fatti è che ogni vostro tweet è catturato da qualcuno e viene rivenduto per trarne profitto. Trarne profitto come? Analisi di mercato, statistiche e tanta altra roba che per le aziende è oro.

BigData - estrazione tweets da twitterImmaginiamo ad esempio che la Ferrero voglia analizzare il livello di gradimento di uno dei suoi prodotti, ad esempio la Nutella che tutti conosciamo. Attraverso l’estrazione dei tweets con alcune parole chiave ben studiate e l’analisi di questi dati (cosa tutt’altro che semplice), la Ferrero o chi per lei, riesce ad ottenere il feedback di gradimento del prodotto da parte degli utenti, oppure nello specifico, per cosa viene principalmente usata (spalmata sul pane, preparare torte, etc…). Sono infiniti i benefici che si possono trarre dai Big Data, e chi lavora in questo settore solitamente viene pagato fior di quattrini.

Il problema di lavorare con questo tipo di dati, è la mole di informazioni che si riescono a catturare, in quanto col passare del tempo le informazioni salgono in modo esponenziale e il vostro pc casalingo non riuscirebbe mai a gestire il lavoro in entrata (sia per quanto riguarda la potenza di calcolo (cpu), sia per lo storage di dati (che raggiunge anche petabyte ogni settimana), sia per la velocità di connessione alla rete).

Ad ogni modo, se ci si limita ai soli tweets, Twitter offre delle API REST, che attraverso delle chiamate JSON restituisce tutti i tweets con la query richiesta. Nell’esempio di codice java che segue sotto, mi limiterò ad usare il Public Stream fornito da Twitter, ma sappi che ci sono altri modi di accedere ai tweets (in modo più limitato, e utili ad esempio qualora si volesse scrivere un client).

Attenzione: Twitter agli account “semplici” limita questo tipo di utilizzo, e permette di accedere solo all’1% dei tweets mondiali, che ad ogni modo è una quantità enorme di informazioni. Se cercate quindi di estrarre tutti i tweets con la parola “Android”, e questi sono più dell’1% sul totale, alcuni tweets li perderete. Il lavoro di estrazione dei tweets è possibile eseguirlo anche su un comune PC, non vi è bisogno di avere delle super macchine.

Per l’estrazione dei tweets uso la libreria java (non ufficiale) Twitter4J. Grazie a questa libreria posso integrare facilmente all’interno delle mie applicazioni Java i servizi offerti da Twitter. La libreria è 100% codice java, e lavora con ogni versione superiore alla 5. Il framework lavora correttamente anche con la piattaforma Android e il Google App Engine.

Nel codice che vedi di seguito, ho utilizzato delle dipendenze Maven per importare la libreria Twitter4J. Se interessato, gli snippet sono i seguenti:


<dependency>
 <groupId>org.twitter4j</groupId>
 <artifactId>twitter4j-core</artifactId>
 <version>3.0.3</version>
 </dependency>

 <dependency>
 <groupId>org.twitter4j</groupId>
 <artifactId>twitter4j-stream</artifactId>
 <version>3.0.3</version>
 </dependency>

Passiamo al codice Java vero e proprio, abbastanza semplice da comprendere. Per ulteriori info su alcune classi utilizzate, fai riferimento alla documentazione.


//© Paolo Musolino - http://www.codeido.com
public class App
{
 public static void main( String[] args )
 {
 //ESTRAZIONE DEI TWEETS

 System.out.println( "www.codeido.com" );

 StatusListener listener = new StatusListener(){

 public void onStatus(Status status) {

 System.out.println(status.getUser().getName() + " : " + status.getText());

 }
 public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}
 public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
 // System.out.print(numberOfLimitedStatuses+"\n"); //stampa il numero di tweets che vengono persi
 }
 public void onException(Exception ex) {
 ex.printStackTrace();
 }

public void onScrubGeo(long l, long l1) {
 throw new UnsupportedOperationException("Not supported yet.");
 }

public void onStallWarning(StallWarning sw) {
 throw new UnsupportedOperationException("Not supported yet.");
 }
 };
 ConfigurationBuilder cb = new ConfigurationBuilder();
 cb.setUser("vostro_username_twitter");
 cb.setPassword("vostra_password_account_twitter");

 TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
 twitterStream.addListener(listener);
 FilterQuery filtro=new FilterQuery();
 String[] arrayQuery={"codeido", "big data", "bigdata"}; //stringhe che verranno cercare all'interno dei tweets.
 filtro.track(paroleChiave);
 twitterStream.filter(filtro);

 }
}
 }

Fanne buon uso e ricordati di condividere questo articolo.

Alla prossima.

Paolo

2 thoughts on “Big Data: esempio di codice Java per estrarre tweets da Twitter

    1. se ti rispondo qui invece che nella pagina che hai linkato, ma il tipo di problema potrebbe richiederlo:Io stesso e pertanto suppongo chiunque si trovi su suolo tedesco veniamo reindirizzati all'indirizzo "attivissimo.blogspot.de"ho provato a cambiare in .fr e viene ugualmente caricato il blog.

Leave a Reply

Your email address will not be published. Required fields are marked *