Slide 1

Slide 1 text

Ανάλυση 30.000 σχολίων στο Twitter κατά τη διάρκεια τηλεοπτικών talkshow Δημήτρης Σπαθής Εξαμηνιαία εργασία – 05 / 2016 Κοινωνικά Μέσα Καθ.: Ιωάννης Πήτας

Slide 2

Slide 2 text

Βιβλιοθήκες & frameworks ΠΕΡΙΒΑΛΛΟΝ Python python.org Jupyter jupyter.org LIBRARIES Scikit – learn import sklearn Numpy import numpy Pandas import pandas Vincent import vincent NLTK import nltk LDA import lda

Slide 3

Slide 3 text

Eκπομπές Ανατροπή 5/4 483 tweets Ανατροπή 12/4 3109 tweets Ενικός 4/4 10866 tweets Ενικός 11/4 6459 tweets Ενικός 18/4 8494 tweets Ελληνοφρένεια 5/4 410 tweets

Slide 4

Slide 4 text

Twitter raw JSON output

Slide 5

Slide 5 text

Περιγραφή αλγορίθμου — Read tweets tweets_data_path = ‘tweets.txt' tweets_data = [] tweets_file = open(tweets_data_path, "r") for line in tweets_file: try: tweet = json.loads(line) tweets_data.append(tweet) except: continue

Slide 6

Slide 6 text

Περιγραφή αλγορίθμου — Load to dataFrame and keep columns tweets = pd.DataFrame() tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data)) tweets['created_at'] = list(map(lambda tweet: tweet['created_at'], tweets_data))

Slide 7

Slide 7 text

Περιγραφή αλγορίθμου — Transform time zone to GMT+2 tweets['created_at'] = pd.to_datetime(pd.Series(tweets['created_at'])) tweets.set_index('created_at', drop=False, inplace=True) tweets.index = tweets.index.tz_localize('GMT').tz_convert('Europe/At hens') tweets.index = tweets.index - DateOffset(hours = 24) tweets.index

Slide 8

Slide 8 text

Περιγραφή αλγορίθμου — Count tweet volume per minute tweets1m = tweets['created_at'].resample('1t').count() avg = tweets1m.mean()

Slide 9

Slide 9 text

Περιγραφή αλγορίθμου — Plot time series vincent.core.initialize_notebook() area = vincent.Area(tweets1m) area.colors(brew='Spectral') area.axis_titles(x='time', y='tweets') area.display()

Slide 10

Slide 10 text

Περιγραφή αλγορίθμου — Remove greek stopwords, find most frequent tokens stop = stopwords.words('greek') text = tweets['text'] tokens = [] for txt in text.values: tokens.extend([t.lower().strip(":,.") for t in txt.split()]) filteredtokens = [w for w in tokens if not w in stop] freqdist = nltk.FreqDist(filteredtokens) freqdist = freqdist.most_common(100)

Slide 11

Slide 11 text

Περιγραφή αλγορίθμου —Latent Dirichlet Allocation (LDA)

Slide 12

Slide 12 text

Περιγραφή αλγορίθμου — Transform to Document Term Matrix structure, LDA tf = CountVectorizer(strip_accents='unicode', max_df=0.95, min_df=2,stop_words=None) tfs1 = tf.fit_transform(tokens.values()) num = 8 model = lda.LDA(n_topics=num, n_iter=500, random_state=1) model.fit_transform(tfs1) topic_word = model.topic_word_ vocab = tf.get_feature_names()

Slide 13

Slide 13 text

Περιγραφή αλγορίθμου — Print LDA topics, assign topic to each tweet n_top_words = 8 for i, tokens in enumerate(topic_word): topic_words = np.array(vocab)[np.argsort(tokens)][:-n_top_words:-1] print('Topic {}: {}'.format(i, ' '.join(topic_words))) doc_topic = model.doc_topic_ for i in range(10): print("{} (top topic: {})".format(text[i], doc_topic[i].argmax()))

Slide 14

Slide 14 text

Ανάλυση εκπομπών

Slide 15

Slide 15 text

Ενικός 4/4 — Σκουρλέτης, Μπακογιάννη 10866 tweets 53,2 tweets/min

Slide 16

Slide 16 text

Ενικός 4/4 — Σκουρλέτης, Μπακογιάννη WORD FREQUENCY Ντόρα 1159 Σκουρλέτης 790 @dora_bakoyannis 779 Σκουρλέτη 650 Μπακογιάννη 540 Ντορα 535 @nchatzinikolaou 486 δντ 411 κυβέρνηση 390 Σκουρλετης 366

Slide 17

Slide 17 text

Ενικός 4/4 — Σκουρλέτης, Μπακογιάννη LDA Topics Topic 0 ρε τη nchatzinikolaou τι Topic 1 ντορα μας εχει συριζα Topic 2 co τους σκουρλετη λεει

Slide 18

Slide 18 text

Ανατροπή 5/4 — Βούλτεψη, Παπαχριστόπουλος, Μητρόπουλος 483 tweets 3.9 tweets/min

Slide 19

Slide 19 text

Ανατροπή 5/4 — Βούλτεψη, Παπαχριστόπουλος, Μητρόπουλος WORD FREQUENCY παπαχριστόπουλος 30 βούλτεψη 25 παπαχριστοπουλος 24 δανίκας 20 ανελ 19 βουλτεψη 18 προσπαθεις 18 παπαχριστόπουλο 16 τόμσεν 15 δντ 15

Slide 20

Slide 20 text

Ανατροπή 5/4 — Βούλτεψη, Παπαχριστόπουλος, Μητρόπουλος LDA Topics Topic 0 μας τι τη ελλαδα λιγο Topic 1 παπαχριστοπουλος βουλτεψη anatropimegatv τωρα ανελ Topic 2 τους ρε στα παπαχριστοπουλο δανικα

Slide 21

Slide 21 text

Ενικός 18/4 — Γεωργιάδης, Σπιρτζής, Λοβέρδος, Θεοχάρης 8494 tweets 46.6 tweets/min διαφημίσεις peaks

Slide 22

Slide 22 text

Ενικός 18/4 — Γεωργιάδης, Σπιρτζής, Λοβέρδος, Θεοχάρης WORD FREQUENCY @adonisgeorgiadi 560 @nchatzinikolaou 426 σπίρτζης 377 σπίρτζη 337 γιατί 258 μανταλένα 251 σπιρτζης 244 ανελ 205 @gveltsi * 200 συριζα 194 *ανώνυμος χρήστης

Slide 23

Slide 23 text

Ενικός 18/4 — Γεωργιάδης, Σπιρτζής, Λοβέρδος, Θεοχάρης LDA Topics Topic 0 τους μανταλενα ρε τη ανελ μιλαει ενα 2700 gveltsi Topic 1 σπιρτζης adonisgeorgiadi nchatzinikolaou αδωνις τωρα ευρω κανει τι δραχμη Topic 2 μας εχει σπιρτζη λεει στα τι τις ρε enikos_gr

Slide 24

Slide 24 text

Ενικός 11/4 — Καρατζαφέρης 50.8 tweets/min 6459 tweets

Slide 25

Slide 25 text

Ενικός 11/4 — Καρατζαφέρης WORD FREQUENCY καρατζαφέρης 781 καρατζαφέρη 486 @nchatzinikolaou 376 καρατζαφερης 283 χ*νω 218 καρατζαφερη 188 χώρα 182 καρατζαφύρερ 157 παιδί 156 φασίστας 154

Slide 26

Slide 26 text

Ενικός 11/4 — Καρατζαφέρης LDA Topics Topic 0 καρατζαφερης εχει καρατζαφυρερ λεει σημερα Topic 1 καλο τη μιχαλολιακος φασιστας χωρα Topic 2 καρατζαφερη τους τι μας ρε

Slide 27

Slide 27 text

Aνατροπή 12/4 — Τρέμη, Παπαχρήστος, Μπογδάνος 32 tweets/min 3109 tweets

Slide 28

Slide 28 text

Aνατροπή 12/4 — Τρέμη, Παπαχρήστος, Μπογδάνος WORD FREQUENCY @anaskopisi_tpp 250 ελευθερία 244 μπογδάνος 160 εκπομπή 148 πάνελ 133 τύπου 131 @galaxyarchis * 96 @stefanossp * 95 τρέμη 92 εσηεα 91

Slide 29

Slide 29 text

Aνατροπή 12/4 — Τρέμη, Παπαχρήστος, Μπογδάνος LDA Topics Topic 0 τη τους πρετεντερη τρεμη ρε στα λογου Topic 1 ελευθερια anaskopisi_tpp τυπου τωρα εσηεα εχει μονο Topic 2 πρετεντερης μπογδανος εκπομπη πανελ τι μας ηταν

Slide 30

Slide 30 text

Ελληνοφρένεια 5/4 11.7 tweets/min 410 tweets

Slide 31

Slide 31 text

Ελληνοφρένεια 5/4 WORD FREQUENCY @ellinofreneia 85 σκατ* 18 μπαλουρδος 18 @wisdom_godess_1 * 14 κότα 12 τοσκα 9

Slide 32

Slide 32 text

Συμπεράσματα • Έλλειψη NLP εργαλείων για ελληνικά • Δυσκολία εύρεσης πραγματικής ώρας σε βίντεο αρχείου • Μονοθεματικότητα #hashtag δυσχεραίνει το topic modeling • Συχνές λέξεις αντιπροσωπεύουν τα πρόσωπα που μίλησαν περισσότερο • Ανώνυμοι χρήστες μονοπωλούν τη συζήτηση