Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Topic modeling and summarization of live TV sho...

Topic modeling and summarization of live TV shows via Twitter

Watching TV is usually accompanied with comments about the content. We tend to address these comments to nearby people or online friends. In this empirical study we retrieved 30k Twitter status updates during popular TV talk shows. Topic modeling analysis allows us to separate themes and, eventually, summarize long TV broadcasts automatically.

Dimitris Spathis

May 20, 2016
Tweet

More Decks by Dimitris Spathis

Other Decks in Research

Transcript

  1. Ανάλυση 30.000 σχολίων στο Twitter κατά τη διάρκεια τηλεοπτικών talkshow

    Δημήτρης Σπαθής Εξαμηνιαία εργασία – 05 / 2016 Κοινωνικά Μέσα Καθ.: Ιωάννης Πήτας
  2. Βιβλιοθήκες & 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
  3. 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
  4. Περιγραφή αλγορίθμου — 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
  5. Περιγραφή αλγορίθμου — 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))
  6. Περιγραφή αλγορίθμου — 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
  7. Περιγραφή αλγορίθμου — Count tweet volume per minute tweets1m =

    tweets['created_at'].resample('1t').count() avg = tweets1m.mean()
  8. Περιγραφή αλγορίθμου — Plot time series vincent.core.initialize_notebook() area = vincent.Area(tweets1m)

    area.colors(brew='Spectral') area.axis_titles(x='time', y='tweets') area.display()
  9. Περιγραφή αλγορίθμου — 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)
  10. Περιγραφή αλγορίθμου — 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()
  11. Περιγραφή αλγορίθμου — 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()))
  12. Ενικός 4/4 — Σκουρλέτης, Μπακογιάννη WORD FREQUENCY Ντόρα 1159 Σκουρλέτης

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

    τη nchatzinikolaou τι Topic 1 ντορα μας εχει συριζα Topic 2 co τους σκουρλετη λεει
  14. Ανατροπή 5/4 — Βούλτεψη, Παπαχριστόπουλος, Μητρόπουλος WORD FREQUENCY παπαχριστόπουλος 30

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

    μας τι τη ελλαδα λιγο Topic 1 παπαχριστοπουλος βουλτεψη anatropimegatv τωρα ανελ Topic 2 τους ρε στα παπαχριστοπουλο δανικα
  16. Ενικός 18/4 — Γεωργιάδης, Σπιρτζής, Λοβέρδος, Θεοχάρης WORD FREQUENCY @adonisgeorgiadi

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

    0 τους μανταλενα ρε τη ανελ μιλαει ενα 2700 gveltsi Topic 1 σπιρτζης adonisgeorgiadi nchatzinikolaou αδωνις τωρα ευρω κανει τι δραχμη Topic 2 μας εχει σπιρτζη λεει στα τι τις ρε enikos_gr
  18. Ενικός 11/4 — Καρατζαφέρης WORD FREQUENCY καρατζαφέρης 781 καρατζαφέρη 486

    @nchatzinikolaou 376 καρατζαφερης 283 χ*νω 218 καρατζαφερη 188 χώρα 182 καρατζαφύρερ 157 παιδί 156 φασίστας 154
  19. Ενικός 11/4 — Καρατζαφέρης LDA Topics Topic 0 καρατζαφερης εχει

    καρατζαφυρερ λεει σημερα Topic 1 καλο τη μιχαλολιακος φασιστας χωρα Topic 2 καρατζαφερη τους τι μας ρε
  20. Aνατροπή 12/4 — Τρέμη, Παπαχρήστος, Μπογδάνος WORD FREQUENCY @anaskopisi_tpp 250

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

    τη τους πρετεντερη τρεμη ρε στα λογου Topic 1 ελευθερια anaskopisi_tpp τυπου τωρα εσηεα εχει μονο Topic 2 πρετεντερης μπογδανος εκπομπη πανελ τι μας ηταν
  22. Συμπεράσματα • Έλλειψη NLP εργαλείων για ελληνικά • Δυσκολία εύρεσης

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