Παράδειγμα

Το παρόν παράδειγμα αποτελεί εργασία για το μάθημα Ανάλυση ιστού και κοινωνικών μέσων του μεταπτυχιακού τμήματος Κοινωνικά Πληροφοριακά Συστήματα του Ανοικτού Πανεπιστημίου Κύπρου (Φθινόπωρο 2016).

Σκοπός της εργασίας είναι η συλλογή όλων των tweets τριών ανταγωνιστικών μεταξύ τους λογαριασμών (π.χ. εταιρειών ή πολιτικών) και στη συνέχεια η ανάλυση συναισθήματος με τεχνικές επεξεργασίας φυσικής γλώσσας.

Για την εργασία επιλέχτηκαν οι ακόλουθοι πολιτικοί από ανταγωνιστικούς πολιτικούς χώρους αφενός γιατί είναι γνωστό ότι διαχειρίζονται οι ίδιοι προσωπικά τους λογαριασμούς τους και αφετέρου γιατί ο λόγος τους θεωρείται ιδιαίτερα φορτισμένος συναισθηματικά:

  • Άδωνις Γεωργιάδης, Βουλευτής, ΝΔ (πρώην ΛΑΟΣ)
  • Πάνος Καμμένος, Υπουργός Εθνικής Άμυνας, ΑΝΕΛ
  • Ραχήλ Μακρή, πρώην Βουλευτής, Πλεύση Ελευθερίας (πρώην ΣΥΡΙΖΑ, ΑΝΕΛ)

Προετοιμασία

Αρχικά εντοπίζουμε τους λογαριασμούς των τριών πολιτικών στο Twitter για να βρούμε το όνομα χρήστη τους. Το όνομα χρήστη εντοπίζεται στο url ως εξής:

https://twitter.com/ΌνομαΧρήστη

Έτσι έχουμε:

Χρήστης URL Twitter Όνομα χρήστη
Άδωνις Γεωργιάδης https://twitter.com/AdonisGeorgiadi AdonisGeorgiadi
Πάνος Καμμένος https://twitter.com/PanosKammenos PanosKammenos
Ραχήλ Μακρή https://twitter.com/rachelmakri rachelmakri

Στη συνέχεια τα ονόματα χρήστη τα περνάμε στο config.py ως εξής:

accounts = ['AdonisGeorgiadi','PanosKammenos','rachelmakri']

Να σημειωθεί ότι μπορούμε να βάλουμε όσα ονόματα χρήστη θέλουμε. Απλά η παρούσα εργασία ζητάει τρία.

Αποτελέσματα

Πρώτα εκτελούμε το πρόγραμμα get-user-data.py που συλλέγει τα μεταδεδομένα των τριών λογαριασμών. (Δεν παίζει ρόλο αν θα το εκτελέσουμε πρώτο ή δεύτερο, τα δύο προγράμματα είναι ανεξάρτητα).

Κατά την εκτέλεση του (διαρκεί λίγα δευτερόπλεπτα) παίρνουμε ενδεικτικά την ακόλουθη έξοδο:

Λήψη στοιχείων για το λογαριασμό AdonisGeorgiadi
Αποθήκευση εικόνας προφίλ AdonisGeorgiadi.jpg
Λήψη στοιχείων για το λογαριασμό PanosKammenos
Αποθήκευση εικόνας προφίλ PanosKammenos.jpg
Λήψη στοιχείων για το λογαριασμό rachelmakri
Αποθήκευση εικόνας προφίλ rachelmakri.jpg
Η λήψη στοιχείων για όλους τους λογαριασμούς ολοκληρώθηκε

Μόλις ολοκληρωθεί η εκτέλεση έχει εγγραφεί το αρχείο: user data.csv καθώς και τρία αρχεία εικόνων με τις εικόνες προφίλ των χρηστών.

εικόνα προφίλ εικόνα προφίλ εικόνα προφίλ

Στη συνέχεια εκτελούμε το πρόγραμμα get-tweets.py.

Κατά την εκτέλεση του (διαρκεί 5-10 λεπτά) παίρνουμε ενδεικτικά την ακόλουθη έξοδο:

ΣΥΛΛΕΚΤΗΣ ΔΕΔΟΜΕΝΩΝ TWITTER 0.2
Βοήθεια: http://get-tweets.rtfd.io
----------------------------------------
Έναρξη λήψης tweets για το λογαριασμό AdonisGeorgiadi
Λήψη της πρώτης διακοσάδας tweets
...200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 809277841582026751
...400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 807560690743517183
...600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 806380599237812224
...800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 805008621310447615
...1000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 803270261738971136
...1200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 801786133873065984
...1400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 800070186204336131
...1600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 798819602176163839
...1800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 797124768449392643
...2000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 795513944966332415
...2200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 793509456751517695
...2400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 792431351840567299
...2600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 790770311155355647
...2800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 788807207823564799
...3000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 786893357113040895
...3199 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 785502864022106112
...3214 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 785484921594929151
...3214 tweets έχουν ληφθεί μέχρι τώρα
----------------------------------------
Ανάλυση των tweets (συναισθήματος, URL κ.ά.)...
Τα tweets εγγράφηκαν στο αρχείο AdonisGeorgiadi_tweets.csv
Η λήψη tweets για το λογαριασμό AdonisGeorgiadi ολοκληρώθηκε
----------------------------------------
Έναρξη λήψης tweets για το λογαριασμό PanosKammenos
Λήψη της πρώτης διακοσάδας tweets
...200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 783990488881885183
...400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 750430977227386880
...600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 709058321194618879
...800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 678586429711245311
...1000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 648905971956322303
...1200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 639773689295314943
...1400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 618178200271765503
...1600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 607874457638715391
...1800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 588707062806401023
...2000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 576736435715354623
...2200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 565803114629177343
...2400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 555820312206802945
...2599 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 549950128678002687
...2797 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 545278876436668415
...2997 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 536832831151153151
...3197 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 523139634067685375
...3216 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 522413417186213887
...3216 tweets έχουν ληφθεί μέχρι τώρα
----------------------------------------
Ανάλυση των tweets (συναισθήματος, URL κ.ά.)...
Τα tweets εγγράφηκαν στο αρχείο PanosKammenos_tweets.csv
Η λήψη tweets για το λογαριασμό PanosKammenos ολοκληρώθηκε
----------------------------------------
Έναρξη λήψης tweets για το λογαριασμό rachelmakri
Λήψη της πρώτης διακοσάδας tweets
...200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 795971406089637887
...400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 786670741253132288
...600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 782293035266740223
...800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 778560307975290879
...1000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 773237319595851775
...1200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 766731170952404994
...1400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 762980238972321791
...1600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 759331679513214975
...1800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 754419396932755455
...2000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 749691140379648003
...2200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 745230737482354687
...2400 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 738318944457609215
...2600 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 734080672109842431
...2800 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 724717839274369023
...3000 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 716990918235185151
...3200 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 713117826916200447
...3209 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 713024066710544383
...3215 tweets έχουν ληφθεί μέχρι τώρα
Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το 712788034517905407
...3215 tweets έχουν ληφθεί μέχρι τώρα
----------------------------------------
Ανάλυση των tweets (συναισθήματος, URL κ.ά.)...
Τα tweets εγγράφηκαν στο αρχείο rachelmakri_tweets.csv
Η λήψη tweets για το λογαριασμό rachelmakri ολοκληρώθηκε
----------------------------------------
Η λήψη tweets για όλους τους λογαριασμούς ολοκληρώθηκε
----------------------------------------
Τα συνδυασμένα δεδομένα εγγράφηκαν στο αρχείο combined_tweets.csv
Εύρος ημερομηνιών: από 2014-10-15 μέχρι σήμερα ( 794 days, 0:00:00 )
----------------------------------------
Άθροιση δεδομένων...
Τα συγκεντρωτικά δεδομένα εγγράφηκαν στο αρχείο final_tweets.csv

Μόλις ολοκληρωθεί η εκτέλεση έχουν εγγραφεί τα ακόλουθα αρχεία:

Άνοιγμα των αρχείων

Για να επεξεργαστούμε τα δεδομένα που συλλέξαμε θα χρειαστεί να τα εισαγάγουμε σε κάποιο πρόγραμμα επεξεργασίας λογιστικών φύλλλων (προτείνεται το LibreOffice Calc).

Κατά το άνοιγμα φροντίζουμε:

  • το σύνολο χαρακτήρων να είναι UTF-8,
  • η γλώσσα να είναι Ελληνικά, και
  • το διαχωριστικό στηλών να είναι το κόμμα (,) και κανένα άλλο (αυτό είναι σημαντικό γιατί ορισμένα tweets περιέχουν ερωτηματικά ή άλλους χαρακτήρες που χρησιμοποιούνται συνήθως ως διαχωριστικά).
  • Επίσης, η πρώτη στήλη με το αναγνωριστικό (id) κάθε tweet πρέπει να μορφοποιηθεί ως κείμενο. Επιλέγουμε ολόκληρη τη στήλη κάνοντας κλικ στην κεφαλίδα της που λέει Προεπιλογή και το αλλάζουμε σε Κείμενο.

στιγμιότυπο οθόνης από το Calc

  • Σημαντικό επίσης η στήλη με την ημερομηνία να οριστεί ως Ημερομηνία (ΕΜΗ).

στιγμιότυπο οθόνης από το Calc

Ακολουθεί ανάλυση των αποτελεσμάτων.