Strumenti Utente

Strumenti Sito


matematica:asd:asd_12:mini_progetto_12

Mini-Progetto per il corso di ASD, anno accademico 2012/13

Questo mini-progetto viene valutato mediante un giudizio booleano (prova superata o meno per stabilire le capacità programmative) e abilita il voto per la prima parte, ottenuto tramite uno scritto oppure un seminario basato su un argomento di ricerca (in alternativa a tale tipo di prova, è possibile svolgere un progetto).

Accedere ai tweet disponibili nella pagina del docente. Il file ZIP occupa circa 58 MB e contiene il file it.txt con 100k tweet, scelti dal file id.json (che è il vero dump ottenuto da Twitter e da cui sono stati filtrati e semplificati i tweet in it.txt). I tweet sono stati reperiti usando le “Streaming API” di Twitter disponibili pubblicamente https://dev.twitter.com/docs/streaming-apis (grazie a Luca Versari per la raccolta dei tweet). Il contenuto di tali tweet è stato filtrato in modo automatico e, pertanto, alcuni tweet potrebbero risultare poco appropriati (il docente non se ne assume responsabilità, ma il mittente del tweet).

Scrivere un programma che legge il file it.txt da disco e crea un dizionario che permette di cercare una parola nei tweet, riportandone anche i mittenti nel caso ci siano occorrenze. Per esempio, la ricerca di Roma riporta tutti i tweet che contengono tale parola insieme ai loro mittenti.

Ciascun tweet è presentato come una riga di testo formattata, come mostrato nel seguente esempio:

{'lang': 'it', 'text': '@pamela_pascucci @Christian_nofx @isle61 @TazzioliClaudia @liviav2501 @LadyCipria @eusai1965 adoro #Roma,ogni volta è #triste doverla lasciare', 'user': {'name': '☀Dany ®', 'screen_name': 'DiComeDaniela'}, 'entities': {'symbols': [], 'user_mentions': [{'indices': [0, 16], 'name': 'Pamela Pascucci', 'screen_name': 'pamela_pascucci'}, {'indices': [17, 32], 'name': 'Christian Cavina\uf8ff♑', 'screen_name': 'Christian_nofx'}, {'indices': [33, 40], 'name': 'Francesca Grosso ', 'screen_name': 'isle61'}, {'indices': [41, 57], 'name': 'La Terry', 'screen_name': 'TazzioliClaudia'}, {'indices': [58, 69], 'name': 'livia ', 'screen_name': 'liviav2501'}, {'indices': [70, 81], 'name': 'Lady Cipria', 'screen_name': 'LadyCipria'}, {'indices': [82, 92], 'name': 'Elena Usai', 'screen_name': 'eusai1965'}], 'hashtags': [], 'urls': []}}

La sintassi è quella di attributo : valore. Per esempio l'attributo lang è it a indicare che il testo del messaggio è in italiano (o per lo meno Twitter ritiene che lo sia). L'attributo text riporta il testo spedito con il tweet, precisamente @pamela_pascucci @Christian_nofx @isle61 @TazzioliClaudia @liviav2501 @LadyCipria @eusai1965 adoro #Roma,ogni volta è #triste doverla lasciare, dove ogni occorrenza del simbolo @ indica un destinatario e ogni occorrenza del simbolo #indica una parola chiave che si vuole sottolineare (chiamata hashtag e nel nostro esempio #Roma e #triste). Continuando l'esame del tweet, l'attributo user è praticamente uno struct (perché il suo valore è racchiuso tra parentesi graffe) contenente name e screen_name dell'utente (quest'ultimo è solitamente quello da indicare se si vuole utilizzare @ per spedirgli un tweet). Segue quindi entities, il cui significato è lasciato come esercizio, in modo da imparare a prendere confidenza con la struttura di un tweet.

Consigli per l'implementazione:

  • Per accedere al file it.txt (e, per chi vuole, al file id.json), conviene evitare di usare le operazioni fread e fwrite della libreria standard C/C++. È meglio (= più veloce + più semplice) utilizzare la mmap disponibile nella stessa libreria. Per un esempio d'uso, scaricare il file C dalla pagina del docente
matematica/asd/asd_12/mini_progetto_12.txt · Ultima modifica: 19/06/2013 alle 10:40 (11 anni fa) da Roberto Grossi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki