Da un po’ di tempo mi sono immerso di nuovo nel mondo dello sviluppo software, non che io sia mai stato un programmatore o uno sviluppatore nella comune accezione del termine. La mia preparazione in materia è “a macchia di leopardo”. Imparo quello di cui ho bisogno e poi eventualmente completo con altre informazioni, del resto non posso sapere tutto 🙂

Fatta questa premessa passo a parlare di un’idea che mi è venuta molto tempo fa e che per una serie di motivi non ho mai realizzato… fino ad ora.

Sono abbastanza affascinato da Twitter, per una serie di motivi. Prima di tutto perchè sembra attrarre di meno tutti quei personaggi che popolano facebook e che passano le giornate a pubblicare articoli abbastanza inutili, link con immagini di gatti, bufale e storielle infantili. Forse perchè twitter è un po’ meno intuitivo di facebook e quindi allontana l’utonTO medio, forse perchè si è limitati a 140 caratteri per ogni post e il dono della sintesi non appartiente all’utente medio.

Sta di fatto che su twitter si trovano molte informazioni importanti, fonti autorevoli, e soprattutto non esiste il concetto di “amicizia” che c’è su facebook, si possono seguire gli utenti e quindi ricevere i loro aggiornamenti, ma niente a che vedere col livello di stalking e di inutilità che si raggiunge su facebook.

I tweet che vengono pubblicati non godono delle proprietà di “privacy” di facebook, sono quindi pubblici e chiunque li può leggere. Del resto è nella natura intrinseca di twitter permettere questo, è più uno strumento di divulgazione invece che un social network come siamo abituati a conoscere.

Da qui il fatto che molti usano twitter per esprimere le loro idee riguardo i più disparati argomenti, i quali vengono identificati con degli “hashtag”.

Politici, artisti, cantanti, pittori, ma anche gruppi di hacker e perfino terroristi; tutti usano twitter per comunicare, fare propaganda, ecc.

Twitter è insomma un grande repository di dati a nostra disposizione; e allora viene da chiedersi cosa fare di questi dati.

Nell’ambito della cybersecurity esiste una branca definita OSINT, che sta per Open Source INTelligence. Si tratta sostanzialmente di recuperare informazioni più o meno complesse e riservate sfruttando strumenti pubblicamente disponibili. Google è sicuramente lo strumento principale per chi fa OSINT. Se state cercando informazioni su persone, aziende e praticamente qualsiasi argomento sicuramente vorrete partire da li, ma come abbiamo detto anche twitter è un grosso repository di dati e oltretutto possiamo monitorarlo in tempo reale.

L’interfaccia grafica di twitter permette di effettuare tutte le operazioni di ricerca che vogliamo, recuperando in tempo reale i tweet in base agli hashtag di nostro interesse, ma per essere veramente efficaci dovremmo monitorare i risultati 24 ore su 24 e magari incrociare più dati o confrontarli con quelli di altre fonti di informazioni.

Ecco quindi l’idea di uno strumento che possa effettuare proprio questo lavoro di recupero informazioni, correlazione di dati e analisi approfondita dei contenuti.

Ho provato a cercare su google qualcosa che facesse esattamente quello che avevo in mente, ma non sono riuscito a trovarlo, ecco perchè ho deciso di scriverlo da solo (con tutti i limiti del caso, dati dal fatto che non sono uno svliuppatore).

Il linguaggio che ho scelto è il python, perchè è estremamente semplice, l’ho imparato in circa 4 giorni (anche se non alla perfezione), e perchè permette un elevato livello di integrazione con prodotti di terze parti con un minimo sforzo.

Parliamo di twitint, che come potete immaginare sta per TWITter INTelligence. Quello che consente di fare è di recuperare i tweet, pubblicati in tempo reale, che matchano i criteri di ricerca che gli forniamo, che siano hashtag o keyword.

Per accedere alla funzionalità base di ricerca avremo bisogno di creare la nostra applicazione su twitter e richiedere quindi le chiavi API (Application Programming Interface). Le API ci consentono di accedere a twitter non attraverso la normale interfaccia web, ma inviando richieste dirette ai server e ovviamente riceverne le risposte.

twitint richiede un file di configurazione (potete chiamarlo come volete, in questo esempio lo chiameremo twitint.ini), dove inserire le chiavi API; vedremo in seguito come strutturare il file di configurazione.

Al momento ho testato twitint solo su piattaforma linux, a breve passerò anche a windows, questo per dire che prima di utilizzarlo occorre installare alcuni pacchetti.

Per la funzionalità base di ricerca occorre installare la libreria tweepy, la quale gestisce l’uso delle API di twitter.

Per installare tweepy è sufficiente digitare la seguente riga di comando:

 

sudo pip install tweepy

fatto questo e inserite le chiavi API nel file di configurazione siamo pronti per l’utilizzo base, ovvero ricercare hashtag a keyword.

Supponiamo ad esempio di voler monitorare tutti i tweet che contentono l’hashtag #trump (proprio 2 giorni fa ci sono state le elezioni americane). Il comando che daremo è il seguente

 

python twitint.py -c twitint.ini -s "#trump"

twitint si inizializzerà, si autenticherà a twitter, e dopo circa un minuto vedrete scorrere a video tutti i tweet che contengono l’hashtag #trump.

Ovviamente è solo l’inizio. Supponiamo di voler correlare l’hashtag con un’altra keyword, ad esempio “president”.

Il comando diventa a questo punto

 

python twitint.py -c twitint.ini -s "#trump" -s president

noterete che, nel caso in cui si ricerchi un hashtag è necessario includere le virgolette, questo perchè l’hash è considerato un metacarattere e altrimenti creerebbe un errore.

Ma ovviamente non è tutto, volendo salvare l’output su un file di testo possiamo specificare l’opzione -o accompagnandola con il nome del file che desideriamo.

Il comando diventa quindi

 

python twitint.py -c twitint.ini -s "#trump" -s president -o output.txt

Come dicevo all’inizio, tutti i tweet sono pubblici, significa che riceveremo probabilmente i tweet i diverse lingue, pubblicati da tutto il mondo, lingue che non conosceremo, ma di cui abbiamo l’esigenza di capirne il significato. Ecco dunque che viene introdotta una delle funzionalità aggiuntive, quella di traduzione automatica dei tweet.

Per usufruirne occorre ottenere una chiave API da Yandex, che è il motore di traduzione sul quale si appoggia twitint. Una volta ottenuta la inseriamo nel file di configurazione e siamo pronti per l’uso.

L’algoritmo prevede il riconoscimento automatico della lingua, occorre solo specificare la lingua di destinazione, cioè quella in cui desideriamo che i tweet vengano tradotti.

Se ad esempio vogliamo che i tweet vengano tradotti in italiano il comando sarà

 

python twitint.py -c twitint.ini -s "#trump" -s president -o output.txt -y it

Ovviamente non sarà possibile tradurre tutti i tweet e, nel caso in cui si verifichi un errore, riceverete un messaggio in cui si dice che la traduzione non è stata possibile.

Probabilmente la funzionalità più avanzata è quella di “deep analysis”, accessibile con l’opzione -d. Per utilizzarla abbiamo bisogno di installare la libreria textrazor con il comando

 

sudo pip install textrazor

avremo anche bisogno delle API keys dai seguenti siti web:

  • imagga.com
  • textrazor.com

anche queste chiavi API vanno inserite nel file di configurazione.

l’opzione di deep analysis consente di effettuare due operazioni molto interessanti: categorizzazione e tagging automatico delle immagini contenute nei link inclusi nei tweet e dell’immagine di background impostata dall’utente che pubblica il tweet, e l’analisi del testo incluso nei link e conseguente tagging automatico.

Il deep analysis utilizza degli algoritmi di intelligenza artificiale per contestualizzare testo ed immagini e consentire l’individuazione dei tag con un grado di sicurezza desicamente elevato.

Twitint scarterà automaticamente tutti i risultati che avranno un grado di confidenza inferiore al 30%, in modo da evitare falsi positivi.

Riprendendo il comando che abbiamo usato fino ad ora, volendo includere il deep analysis dovremo modificarlo come segue

 

python twitint.py -c twitint.ini -s "#trump" -s president -o output.txt -y it -d

Ricordate che Imagga e textrazor mettono a disposizione un numero limitato di utilizzo delle chiavi API per giorno o mese. Se volete superare questi limiti dovrete acquistare un piano d’utilizzo sui relativi siti, ma per avere un riferimento iniziale sulle potenzialità di twitint potete provare i loro piani gratuiti.

Twitint vi permette anche di recuperare l’elenco dei cosiddetti trending topics per tutte le location geografiche dove questi dati sono disponibili.

L’opzione -t fornisce l’elenco delle città e delle nazioni per cui i trending topics sono disponibili e potete anche limitare la scelta a una nazione o città.

L’opzione -l vi permette di specificare una location e vedere i trending topics corrispondenti.

Se ad esempio volete visuaizzare i trending topics per l’Italia il comando è

 

python twitint.py -c twitint.ini -l Italy

Ricordatevi di mettere sempre l’iniziale maiuscola altrimenti non troverete nessun match.

 

A questo punto non vi resta che scaricare twitint e provarlo. Github è vostro amico ed è sufficiente digitare il seguente comando

 

github clone https://github.com/fabrimagic72/twitint.git

Per quello che riguarda il file di configurazione dovrà essere impostato come segue

 

[access]
access_token = <your twitter access token here>
access_token_secret = <your twitter access token secret here>
consumer_key = <your twitter consumer key here>
consumer_secret = <your twitter consumer secret here>

[translate]
key = <your yandex translate api key here>

[imagga]
key = <your imagga key here>
secret = <your imagga secret here>

[textrazor]
key = <your textrazor key here>

non modificate le stringhe contenute all’interno delle parentesi quadre, limitatevi a inserire le chiavi API dove necessario.

Sembra difficile ma vi assicuro che non lo è, così come vi assicuro che rimarrete stupiti dai risultati che twitint vi darà.

Utilizzatelo, e se avete domande o dubbi riguardo il suo utilizzo potete inviarmi delle domande tramite la mia pagina ask.fm

Anzi, vi invito a farmi sapere cosa ne pensate e magari darmi qualche suggerimento per migliorie e bug fix!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *