Home    About me    Publications    Blog    Tweets    Contacts

Fabio Ruini's blog

'cause Italians blog better

Archivio per la 'Internet and ICT' Categoria

PeaceMaker: il videogioco che insegna a “far la pace” in Medio Oriente

Quello dei Serious Games e’ un settore che negli ultimi tempi sta riscontrando una popolarità in costante aumento. Per quanto mi riguarda ho iniziato da alcune settimane a documentarmi sull’argomento e seguire un corso on-line organizzato da Coursera. Dopo tanta teoria e’ pero’ venuto il momento della pratica. Così’, su input di un collega, ho puntato il mio browser all’indirizzo http://www.peacemakergame.com ed ho scaricato PeaceMaker.

PeaceMaker - screenshot

PeaceMaker e’ un serious game ambientato in Medio Oriente. Al lancio chiede innanzitutto al giocatore di scegliere quale dei due schieramenti disponibili guidare: Autorita’ Palestinese o stato di Israele. Una volta fatto cio’ si entra subito nel vivo del gioco. L’obiettivo, semplice e lineare, e’ quello di condurre il territorio alla pace con una coesistenza reciprocamente accettata tra i due stati. Il giocatore assiste ad eventi di vario genere (attentati, manifestazioni, ecc…) che si susseguono in maniera irregolare e deve prendere decisioni sulla base di questi. Decisioni che possono riguardare la sicurezza, essere di natura politica o relativi allo sviluppo. Dopo ogni scelta trascorre una settimana di tempo ed i risultati ottenuti sono immediatamente visibili. Due indicatori riassumono lo stato della situazione e servono da benchmark per capire come ci si sta muovendo. Nel caso dell’Autorità Palestinese si tratta del livello di approvazione da parte della popolazione palestinese e di quella israeliana, nel caso di Israele l’approvazione che va ricercata e’ invece quella dei propri cittadini e della comunità internazionale nel suo complesso.

PeaceMaker - victory screenshot

Cio’ che e’ particolarmente interessante (ed oltremodo didattico) in PeaceMaker e’ il poter toccare con mano come qualunque decisione abbia un impatto di senso opposto sui vari stakeholder coinvolti. Sia interni (nel caso palestinese: la popolazione, Fatah, Hamas ed il primo ministro), sia esterni (il “pubblico” israeliano, le nazioni unite, gli USA e i Paesi arabi). Aumentare i fondi alla polizia, tanto per fare un esempio banale, fara’ contente alcune fasce della popolazione, Israele e gli attori esterni, ma al tempo stesso sara’ mal digerita da Fatah e soprattutto Hamas, che da sempre vivono in maniera ambigua il rapporto con le loro falangi armate. Allo stesso modo, trattare con certe parti piuttosto che con altre avra’ effetti di vario genere sugli altri attori (dialogare con Fatah, tanto per dire, non piacerà sicuramente ad Israele ed alla comunità internazionale, ma potrebbe essere ben visto dalla leadership palestinese e da ampi strati della popolazione). In ogni momento sono disponibili statistiche relative allo stato dell’economia del Paese, all’autorità percepita del governo, al livello di controllo che l’Autorità’ Palestinese ha sul territorio, all’approvazione da parte del presidente, alla percezione dei palestinesi quali credibili interlocutori da parte degli israeliani ed al livello di cooperazione che Israele e’ pronta ad offrire. Trovare un bilanciamento, come e’ facile intuire (e come la storia insegna) non e’ affatto semplice. Occorre dare un colpo al cerchio ed uno alla botte, mantenendo il più possibile un equilibrio e sperando che la situazione non sfugga di mano per colpa di scelte strategiche errate o azioni intraprese autonomamente da terze parti.

Dallo scorso 4 novembre il gioco, che e’ disponibile sia per piattaforme Windows che OS X, puo’ essere scaricato gratuitamente.

Crawling Twitter con R (e twitteR)

Su input di un ragazzo che sto seguendo da correlatore esterno per la sua tesi di laurea ho rispolverato il buon vecchio R, il popolare tool open source per l’analisi di dati, che non prendevo in mano dai tempi in cui quello che stava studiando per laurearsi era il sottoscritto. Scopo della reunion provare un pacchetto, twitteR, che si propone quale interfaccia alle Twitter API 1.1 e permette in maniera molto semplice di fare crawling dei contenuti pubblicati sul social media in questione.

tweet-viewer-worm-crawling-around-twitter-warning--72c871613b

twitteR può essere installato molto facilmente attraverso il “package installer” fornito da R. In alternativa la pagina ufficiale propone i binari per MacOSX e Windows, nonche’ i sorgenti. Il manuale del pacchetto può invece essere scaricato a questo link.

Tra le varie funzioni che ho trovato interessanti ai fini di crawling segnalo:

  • favorites(user, n=20, max_id=NULL, since_id=NULL, …): restituisce gli n tweets favoriti più di recente dallo user specificato;
  • friendships(screen_names=character(), user_ids=character(), …): ricevuto in input un elenco di screen_names restituisce informazioni se questi utenti sono follower dell’utente autenticato e/o viceversa;
  • getCurRateLimitInfo(resources=character(), …): restituisce un data.frame contenente tutte le informazioni circa i limiti di crawling correnti per l’utente autenticato (vedi screenshot);

    screenshot R twitteR package when executing getCurRateLimitInfo()

  • getTrends(woeid, exclude=NULL, ….): restituisce i trending topic per il woeid (Where On Earth ID) fornito in input;
  • getUser(user, …): restituisce tutte le informazioni disponibili circa lo user fornito in input (informazioni di base, elenco di amici, di follower e timeline aggiornata);
  • searchTwitter(searchString, n=25, lang=NULL, since=NULL, until=NULL, locale=NULL, geocode=NULL, sinceID=NULL, retryOnRateLimit=120, …): restituisce n tweet contenenti il testo passato nella searchString e filtrati secondo gli altri parametri in input;
  • showStatus(id, …): ricevuto in input l’ID di un tweet ne restituisce il contenuto.

Prima di chiudere il post e’ doverosa una sottolineatura per quanto riguarda la gestione delle autorizzazioni necessarie per effettuare il crawling. Il pacchetto twitteR richiede all’utente soltanto una delle due coppie di chiavi che le Twitter API generalmente utilizzano, la API key e la API secret. Su slideshare ho reperito un ottimo documento, a cura di Leonardo Di Donato, che mostra una funzione con la quale gestire l’intero processo di autenticazione da dentro a R in maniera semplice e veloce. Posto qui di seguito il relativo codice.

Nel ringraziare Di Donato per il lavoro svolto e condiviso con la comunita’, posto qui il link al suo “Guida all’estrazione di dati dai Social Network“. Nel caso in cui doveste avere problemi con slideshare, potete scaricare il tutto anche da qui sotto.

Ancora di Twitter e di Sentiment Analysis/Opinion Mining

Come ultimamente mi capita piuttosto spesso, anche oggi ho avuto modo di spendere un po’ di tempo per investigare come poter applicare procedure di Sentiment Analysis/Opinion Mining su contenuti raccolti da Twitter. Vi risparmio il resoconto degli esperimenti (una volta tanto decisamente soddisfacenti) condotti con Twitter4J (e bruscamente interrotti quando le Twitter API hanno iniziato a restituirmi, al posto dei risultati soliti, una serie di warning relativi al rate limiting). Piuttosto, ci tengo a segnalare alcuni buoni articoli sull’argomento che, per quanto non apparsi su journal o proceeding di conferenze particolarmente prestigiosi/e, ho trovato ben fatti (e con un piglio pratico che in questo momento apprezzo in particolare).

Example of sentiment analysis (polarity) about leaders

Il primo di questi articoli illustra la procedura adottata dagli autori per lo sviluppo di SSA-UO, uno strumento di sentiment analysis per Twitter non-supervisionato. La metodologia elaborata da Ortega e colleghi prevede una fase di pre-processing (per la gestione di emoticon e slang, lemmatizzazione e POS-tagging), una di word polarity detection (che, utilizzando WordNet e SentiWordNet, prende in considerazione anche il contesto) ed una di classificazione (appoggiandosi ad una semplice rule-based classifier).

Il secondo paper e’ una review, mediamente estesa, dei principali lavori fatti in materia di opinion mining sulla base di tweet in lingua araba. Nel dettaglio sono 65 gli studi citati, con le principali caratteristiche riassunte in alcune pratiche tabelle.

Infine, l’ultimo articolo descrive un approccio per effettuare sentiment analysis in maniera indipendente dalla lingua di riferimento (i.e., quella nella quale sono scritti i tweet). Per lo scopo, Narr e colleghi utilizzano un Naive Bayes classifier (preso dalle NLTK) che lavora su tweet tokenizzati (utilizzando una versione estesa del tokenizzatore di O’Connor) e si focalizza principalmente sulle emoticon presenti nei messaggi. Per testare le performance del sistema sviluppato, gli autori hanno preparato un dataset di 12,597 tweet, in quattro lingue (inglese, tedesco, francese e portoghese), annotati manualmente (da tre persone diverse, utilizzando il Mechanical Turk di Amazon) come positivi, negativi, neutrali ed irrilevanti. Il dataset può essere scaricato a partire da questo link.

In relazione a quest’ultimo articolo, mi preme sottolineare come esistano anche diverse presentazioni scaricabili da SlideShare. Quella che ho trovato più interessante potete consultarla a questo link. Per un qualcosa di ancora più rapido, invece, a voi un poster.

Crawling Twitter with Twitter4J

Finalmente ho avuto modo di fare un po’ di esperimenti in prima persona focalizzati sul crawling di post da social media. Per farlo mi sono affidato a Twitter4j, una libreria Java che incorpora al suo interno funzioni che richiamano tutto quanto e’ accessibile attraverso le Twitter API. Mettere in moto il tutto e’ stato decisamente più semplice di quanto mi aspettassi. Di seguito un po’ di istruzioni a mo’ di promemoria.

Twitter4J logo

Ingredienti:

Preparazione:

Su suggerimento di un collega ho deciso di utilizzare NetBeans. Una volta scaricato tutto il materiale relativo a Twitter4j ho creato una nuova applicazione Java in NetBeans ed importato le librerie necessarie. Fatto cio’ e’ bastato riadattare i vari esempi pubblicati sul sito ufficiale per ottenere un software in grado di utilizzare le mie credenziali d’accesso per scaricare gli ultimi messaggi apparsi sulla mia Twitter timeline.

OAuth:

Un discorso a parte lo merita l’inserimento delle credenziali all’interno dell’applicazione. Come la maggior parte dei social media, anche Twitter utilizza lo standard OAuth per dare ad un’applicazione la possibilità di effettuare azioni di vario genere nelle veci del suo utente/sviluppatore. Nella pratica e’ quindi necessario effettuare il login sul portale Twitter dedicato agli sviluppatori e registrare l’applicazione che si sta creando. Una volta ultimata l’operazione si dovrebbe entrare in possesso di due coppie di chiavi:

  • consumer key e consumer secret;
  • access token e access token secret.

A questo punto e’ sufficiente sostituire, nello snippet di codice postato qui sopra, x e y con la prima coppia, z e w con la seconda, per ottenere un codice perfettamente compilabile e funzionante.

A volte basta un link…

Proprio ieri sera me ne stavo comodamente sdraiato sul (invero non così comodo, prima mentivo) divano della mia temporanea residenza madrilena. Tra le mani avevo la copia di un libro, “The Filter Bubble. What The Internet is Hiding From You” (a questo link il sito dedicato). Mentre leggevo, mi aveva colpito tra gli altri un passaggio a pagina 64:

Editors at Yahoo News, the biggest news site on the Internet, can see this trend in action. With over 85 million daily visitors, when Yahoo links to articles on other servers – even those of nationally known papers – it has to give technicians advance warning so they can handle the load. A single link can generate up to 12 million news.

Questa mattina, dopo un cambio di albergo per avvicinarmi alla sede di un workshop in programma domani, connetto i miei dispositivi alla nuova rete WiFi e ne approfitto per dare una spulciata a Twitter. Subito la mia attenzione e’ attratta da un articolo pubblicato su TechCrunch, dal titolo “White Ribbon On Google.com Crashes UN Women Website“. Google, a quanto pare, ha provocato (o comunque contribuito in maniera significativa) quest’oggi il collasso del sito web di UN Women, agenzia delle Nazioni Unite dedicata a Gender Equality and the Empowerment of Women.

UN website down after Google link

Tutto questo in maniera apparentemente involontaria. Semplicemente piazzando nella propria home page un fiocco bianco, con il link al sito di UN Women, per celebrare la giornata mondiale per l’eliminazione della violenza sulle donne. Le donne, effettivamente, se la sono scampata. Il sito web dell’agenzia ONU, invece, no. Il link, ad ogni modo, e’ stato rimosso.

Pagina successiva »

%d blogger cliccano Mi Piace per questo: