Μια σαρκαστική έκφραση ή σχόλιο δεν είναι παρά η χρήση λέξεων που γενικά σημαίνει ένα πράγμα, αλλά ο πραγματικός σκοπός είναι να σημαίνει το αντίθετο.

Πίνακας περιεχομένων

1.Εισαγωγή

2. Επιχειρηματικό πρόβλημα

3. Χαρτογράφηση προβλημάτων ML/DL

4. Δεδομένα

5. Προεπεξεργασία & Διερευνητική Ανάλυση Δεδομένων

6. Εξαγωγή χαρακτηριστικών

7. Μοντελισμός

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

9. Πρόβλεψη

10. Ανάπτυξη

12. Μελλοντική δουλειά

13. Αναφορές

1. Εισαγωγή

  • Δεδομένων των δεδομένων, ο κύριος στόχος μας είναι να προβλέψουμε εάν τα σχόλια που δημοσιεύονται από χρήστες στα νήματα του Reddit είναι σαρκαστικά ή όχι.
  • Το Reddit συνδυάζει περιεχόμενο ιστού, κοινωνικές ειδήσεις, ένα φόρουμ και ένα κοινωνικό δίκτυο σε ένα τεράστιο θηρίο μιας πλατφόρμας. Τα εγγεγραμμένα μέλη μπορούν να συνεισφέρουν στον ιστότοπο με περιεχόμενο όπως εικόνες, κείμενο, βίντεο και συνδέσμους. Όλο το περιεχόμενο στον ιστότοπο μπορεί να ψηφιστεί προς τα πάνω ή προς τα κάτω από άλλα μέλη.

2. Επιχειρηματικό πρόβλημα

  • Όσον αφορά το επιχειρηματικό πρόβλημα, είναι να προβλέψουμε εάν τα σχόλια που δημοσιεύονται από χρήστες στα νήματα του Reddit είναι σαρκαστικά ή όχι.

3. Χαρτογράφηση προβλημάτων ML/DL

  • Όσον αφορά το πρόβλημα ML/DL, αντιστοιχίζεται σαφώς στο πρόβλημα δυαδικής ταξινόμησης.

3.1. Επιχειρηματικοί περιορισμοί

  • Χωρίς αυστηρούς περιορισμούς καθυστέρησης.

3.2. Μέτρηση απόδοσης

3.2.1. ετικέτα

Παρατηρήσεις :

  • Και οι δύο κατηγορίες είναι απόλυτα ισορροπημένες.
  • Έτσι, η ακρίβεια μπορεί να χρησιμοποιηθεί ως μετρική.

4. Δεδομένα

4.1. Πηγή

Σαρκαστικά Σχόλια - REDDIT της Sherin Claudia

4.2. Περιγραφή των Δεδομένων

Μας δίνεται το σύνολο δεδομένων "train_balanced_sarcasm.csv" που περιέχει σχόλια με ετικέτα. Το μέγεθος του συνόλου δεδομένων είναι 243 MB.

train-balanced-sarcasm.csv

  • Αυτό το σύνολο δεδομένων περιέχει δεδομένα που είναι περίπου 1,3 εκατομμύρια σχόλια, όπου τα μισά από αυτά χαρακτηρίζονται ως σαρκαστικά και τα άλλα μισά ως μη σαρκαστικά.
  • Μας παρέχεται ένα ισορροπημένο σύνολο δεδομένων που περιέχει 10 στήλες και 1,1 εκατομμύρια σειρές. Ας κατανοήσουμε κάθε μία από τις στήλες.

4.3. Κατανόηση στηλών δεδομένων

  • Ετικέτα (Ακέραιος): Αν το σχόλιο είναι σαρκαστικό ή όχι.
  • Σχόλιο (String) : Το σχόλιο για το οποίο πρέπει να προσδιορίσουμε αν είναι σαρκαστικό ή όχι.
  • Συγγραφέας (String): Πρόσωπο που σχολίασε.
  • Subreddit (String): Η κοινότητα στην οποία δημοσιεύτηκε το σχόλιο. Τα Subreddit είναι αφιερωμένα σε ένα συγκεκριμένο θέμα για το οποίο γράφουν οι άνθρωποι και συμβολίζονται με (/ r / ), ακολουθούμενο από το όνομα του subreddit. π.χ. / r / gaming.
  • Βαθμολογία (Ακέραιος): Το δίχτυ θετικών και αρνητικών ψήφων.
  • Ups (Ακέραιος): Ο αριθμός των θετικών ψήφων.
  • Downs (Integer) : Ο αριθμός των αρνητικών ψήφων.
  • Ημερομηνία (Ημερομηνία ώρα) : Το σχόλιο της ημερομηνίας δημοσιεύτηκε.
  • Created_utc (Ημερομηνία ώρα): Η χρονική σήμανση όταν δημοσιεύτηκε το σχόλιο.
  • Σχόλιο γονέα (Συμβολοσειρά) : Το γονικό σχόλιο Reddit στο οποίο δίνονται σαρκαστικές απαντήσεις.

5. Προεπεξεργασία Δεδομένων & Διερευνητική Ανάλυση Δεδομένων

5.1. Έλεγχος για μηδενικές τιμές

Παρατηρήσεις :

  • Ναι, έχει μηδενικές τιμές στο σύνολο δεδομένων.

Κατάργηση μηδενικών τιμών

Παρατηρήσεις :

  • Οι μηδενικές τιμές καταργούνται εντελώς.

5.2. Έλεγχος για διπλότυπες σειρές

Παρατηρήσεις :

  • Βρέθηκαν 28 διπλότυπες σειρές.

Κατάργηση διπλότυπων σειρών

Παρατηρήσεις :

  • Οι διπλές σειρές αφαιρούνται εντελώς.

5.3. Ανάλυση μονής μεταβλητής : dist plot

5.3.1. δυνατότητα «σχολιασμού»

Παρατηρήσεις :

  • Δεν μπορώ να αποκτήσω καλύτερη κατανόηση, Προσπαθώντας λοιπόν να εστιάσω περισσότερο.

Παρατηρήσεις :

  • Εδώ μπορούμε να δούμε ότι τα περισσότερα από τα σχόλια έχουν λιγότερες από 50 λέξεις.

Παρατηρήσεις :

  • Έτσι, στο στάδιο της προεπεξεργασίας θα μπορούσαμε να προσθέσουμε όλη την πρόταση σε 40 λέξεις, καθώς το 99% των σχολίων έχει λιγότερες από 38 λέξεις.

5.3.2. λειτουργία «parent_comment»

Παρατηρήσεις :

  • Δεν μπορώ να αποκτήσω καλύτερη κατανόηση, Προσπαθώντας λοιπόν να εστιάσουμε περισσότερο…

Παρατηρήσεις :

  • Εδώ μπορούμε να δούμε ότι τα περισσότερα από τα σχόλια έχουν λιγότερες από 100 λέξεις.

Παρατηρήσεις :

  • Έτσι, στο στάδιο της προεπεξεργασίας θα μπορούσαμε να προσθέσουμε όλη την πρόταση σε 150 λέξεις, καθώς το 99% των σχολίων περιέχει λιγότερες από 146 λέξεις.

5.3.3. χαρακτηριστικό ‘ups’

Παρατηρήσεις :

  • Εδώ το χαρακτηριστικό "ups" αποτελείται από ορισμένα αρνητικά δείγματα (δηλαδή, -507, -1)
  • Αυτό θα μπορούσε να θεωρηθεί ως ακραίο σημείο καθώς το χαρακτηριστικό "ups" θα πρέπει να αποτελείται μόνο από θετικό αριθμό.
  • Έτσι θα μπορούσαμε να αφαιρέσουμε αυτά τα σημεία στο βήμα προεπεξεργασίας.

5.3.4. χαρακτηριστικό ‘downs’

Παρατηρήσεις :

  • Εδώ το χαρακτηριστικό «downs» αποτελείται μόνο από αρνητικά δείγματα, κάτι που είναι καλό επειδή το χαρακτηριστικό «downs» πρέπει να περιέχει τιμές μικρότερες ή ίσες με το μηδέν.
  • Έτσι, δεν υπάρχουν ακραίες τιμές στις κάτω στήλες, καθώς όλα τα σημεία είναι αρνητικά ή ίσα με μηδέν.

5.4. WordCloud

5.4.1. δυνατότητα «σχολιασμού»

Παρατηρήσεις :

  • Καμία πολύτιμη γνώση δεν θα μπορούσε να εξαχθεί και από το wordcloud.
  • Ας δούμε τη διανομή του «σχολίου» για να πάρουμε μερικές ιδέες.

Παρατηρήσεις :

  • Υπάρχει μεγάλη επικάλυψη στο μήκος του σαρκαστικού και μη σαρκαστικού «σχολίου».
  • Καμία σαφής διάκριση.

5.4.2. λειτουργία «parent_comment»

Παρατηρήσεις :

  • Καμία πολύτιμη γνώση δεν θα μπορούσε να εξαχθεί και από το wordcloud.
  • Ας δούμε τη διανομή του «parent_comment» για να πάρουμε μερικές ιδέες.

Παρατηρήσεις :

  • Υπάρχει πολλή επικάλυψη στο μήκος του σαρκαστικού και μη σαρκαστικού «σχολίου_γονέα».
  • Καμία σαφής διάκριση.

5.5. Διερευνητική ανάλυση δεδομένων για τις κορυφαίες 20 τιμές των αντίστοιχων χαρακτηριστικών

5.5.1. δυνατότητα «σχολιασμού»

Παρατηρήσεις :

  • Σε μη σαρκαστικό σχόλιο, τα σχόλια «Ναι», «Ναι.», «Ευχαριστώ!» εμφανίζονται περισσότερες από 350 φορές.
  • Στο Σαρκαστικό σχόλιο, το σχόλιο «Ξέχασες το» εμφανίζεται περισσότερες από 1400 φορές.

5.5.2. λειτουργία «parent_comment»

Παρατηρήσεις :

  • Στο Non - Sarcastic parent_comment, το σχόλιο "me irl" εμφανίζεται περισσότερες από 200 φορές.
  • Στο Σαρκαστικό σχόλιο, το σχόλιο «Γιατί;» εμφανίζεται σχεδόν 150 φορές.

5.5.3. λέξεις του χαρακτηριστικού «σχολιασμού»

Παρατηρήσεις :

  • Στο μη - σαρκαστικό «σχόλιο», η λέξη «το» εμφανίζεται περισσότερες από 1.75.000 φορές.
  • Στο σαρκαστικό «σχόλιο», η λέξη «το» εμφανίζεται περισσότερες από 3.50.000 φορές.

5.5.4. λέξεις της λειτουργίας «parent_comment»

Παρατηρήσεις :

  • Στο μη - σαρκαστικό "parent_comment", η λέξη "the" εμφανίζεται περισσότερες από 4.00.000 φορές.
  • Στο σαρκαστικό «parent_comment», η λέξη «the» εμφανίζεται περισσότερες από 8.00.000 φορές.

5.5.5. μήκη χαρακτηριστικού «σχολίου»

Παρατηρήσεις :

  • Στο μη - σαρκαστικό σχόλιο, τα σχόλια με μήκος 4 και 5 εμφανίζονται σχεδόν 35.000 φορές.
  • Στο Σαρκαστικό σχόλιο, τα σχόλια με μήκος 6 και 7 εμφανίζονται περισσότερες από 35.000 φορές.

5.5.6. μήκη της δυνατότητας "parent_comment"

Παρατηρήσεις :

  • Στο Μη Σαρκαστικό σχόλιο, τα σχόλια με μήκος 6, 7 και 8 εμφανίζονται σχεδόν 25.000 φορές.
  • Στο Σαρκαστικό σχόλιο, τα σχόλια με μήκος 7, 8 και 9 εμφανίζονται περισσότερες από 25.000 φορές.

5.5.7. λειτουργία «subreddit»

Παρατηρήσεις :

  • Στο μη σαρκαστικό subreddit, το subreddit «AskReddit» εμφανίζεται σχεδόν 40.000 φορές, το οποίο είναι μακράν το μέγιστο μεταξύ άλλων.
  • Στο Sarcastic subreddit, τα subreddits "AskReddit" και "politics" εμφανίζονται περίπου 25.000 φορές, το οποίο είναι μακράν το μέγιστο μεταξύ άλλων.

5.5.8. χαρακτηριστικό «συγγραφέας»

Παρατηρήσεις :

  • Στον μη σαρκαστικό συγγραφέα, το «Biffingston» δημοσίευσε περισσότερα από 400 σχόλια, τα οποία είναι μακράν τα μέγιστα μεταξύ άλλων.
  • Στον Σαρκαστικό συγγραφέα, το «Biffingston» δημοσίευσε περισσότερα από 400 σχόλια, τα οποία είναι μακράν τα μέγιστα μεταξύ άλλων.

5.6. Διερευνητική ανάλυση δεδομένων για τους χρήστες του Reddit με βάση ώρες, ημέρες, μήνες και χρόνια

5.6.1. Ώρες (μορφή 24 ωρών)

Παρατηρήσεις :

  • Από την παραπάνω γραφική παράσταση 1 και 2, ο αριθμός των μη σαρκαστικών και σαρκαστικών σχολίων μειώνεται κατά τη διάρκεια της ημέρας (από τις 6:00 έως τις 12:00), καθώς ο λόγος για αυτό το ζήτημα μπορεί να οφείλεται στον χρόνο εργασίας για τους χρήστες και αυξάνεται στις την απογευματινή ώρα (από τις 16:00 έως τις 21:00) λόγω της ώρας ανάπαυσης των χρηστών.

5.6.2. Ημέρες (Κυρ., Δευτ., Τρ., Τετ., Πέμ., Παρ., Σαβ.)

Παρατηρήσεις :

  • Από την παραπάνω πλοκή, ο αριθμός των Μη Σαρκαστικών και Σαρκαστικών σχολίων μειώνεται τα Σαββατοκύριακα.
  • Ένας από τους λόγους για αυτό το ζήτημα παρουσιάζεται καθώς οι χρήστες ενδέχεται να περνούν το χρόνο τους προσωπικά αντί να είναι ενεργοί τα Σαββατοκύριακα.

5.6.3. Μήνες (Ιανουάριος έως Δεκέμβριος)

Παρατηρήσεις :

  • Από τα παραπάνω οικόπεδα, ο αριθμός των Μη Σαρκαστικών και Σαρκαστικών σχολίων μειώνεται κατά το πρώτο τρίμηνο του έτους (Ιανουάριος έως Απρίλιος) και αυξάνεται κατά το τελευταίο τρίμηνο του έτους (Σεπτέμβριος έως Δεκέμβριος).

5.6.4. Έτη (2009 έως 2016)

Παρατηρήσεις :

  • Από τις παραπάνω πλοκές, ο αριθμός των Μη Σαρκαστικών και Σαρκαστικών σχολίων αυξάνεται εκθετικά με τα χρόνια.
  • Αυτό οφείλεται στην αυξημένη δημοτικότητα του Reddit με τα χρόνια.

5.7. Για να ελέγξετε εάν η "class_label" αλλάζει με την πάροδο του χρόνου

Παρατηρήσεις :

Από το παραπάνω γράφημα μπορούμε να συμπεράνουμε ότι,

  • Μετά το 2016, τα δεδομένα των Μη Σαρκαστικών σχολίων φαίνονται περισσότερα από τα Σαρκαστικά σχόλια.

5.8. Αφαίρεση ακραίων στοιχείων

Καθώς το χαρακτηριστικό "ups" αποτελείται από ορισμένα αρνητικά δείγματα (δηλαδή, -507, -1)
Αυτό θα μπορούσε να θεωρηθεί ως ακραίο σημείο καθώς το χαρακτηριστικό "ups" θα πρέπει να αποτελείται μόνο από θετικό αριθμό.
Επομένως, καταργούμε αυτούς αρνητικά σημεία.

Παρατηρήσεις :

Από το παραπάνω γράφημα μπορούμε να συμπεράνουμε ότι,

5.9. Προεπεξεργασία λειτουργιών «σχολίου» και «σχολίου γονέα»

Δημιουργία δύο λειτουργιών "pre_comment" και "pre_parent_comment" το οποίο έχει υποστεί προεπεξεργασία με stopwordsκαι άλλες δύο δυνατότητες'pre_stop_comment' & 'pre_stop_parent_comment' τα οποία υποβάλλονται σε προεπεξεργασία χωρίς ενδιάμεσες λέξεις

5.9.1. «pre_comment»

5.9.2. «pre_parent_comment»

5.9.3. «pre_stop_comment»

5.9.4. "pre_stop_parent_comment"

6. Εξαγωγή χαρακτηριστικών

Δημιουργία προηγμένων δυνατοτήτων

6.1. Μετρητής χαρακτήρων
Αυξάνει τον μετρητή αν συναντήσουμε κάποιον χαρακτήρα σε κάθε συμβολοσειρά.

6.2. Μετρητής στίξης
Αυξάνει τον μετρητή αν συναντήσουμε σημεία στίξης σε κάθε συμβολοσειρά.

6.3. Μετρητής διακριτικών
Αυξάνει τον μετρητή αν συναντήσουμε διακριτικά σε κάθε συμβολοσειρά.

6.4. Ανάλυση συναισθήματος : Polarity & Subjectivity

  • Η πολικότητα είναι float που βρίσκεται στην περιοχή [-1, 1] όπου 1 σημαίνει θετική δήλωση και -1 σημαίνει αρνητική δήλωση.
  • Οι υποκειμενικές προτάσεις αναφέρονται γενικά σε προσωπική γνώμη, συναίσθημα ή κρίση, ενώ οι αντικειμενικές αναφέρονται σε πραγματικές πληροφορίες. Η υποκειμενικότητα είναι επίσης ένας float που βρίσκεται στο εύρος του [0, 1].

7. Μοντελισμός

  • Μετά από πολύ πειραματισμό σε μοντέλα μηχανικής μάθησης και βαθιάς μάθησης, διορθώσαμε το μοντέλο «LSTM» με προεκπαιδευμένη ενσωμάτωση «Fast Text» που λειτουργεί αρκετά καλά.

Χαρακτηριστικά που χρησιμοποιούνται σε αυτό το μοντέλο:

X_σημεία δεδομένων

  • Χαρακτηριστικά κειμένου: «pre_comment», «pre_parent_comment»,
  • Αριθμητικά χαρακτηριστικά: «βαθμολογία», «ανεβάσματα» και «κάτω»

Y_label

  • Αριθμητικό χαρακτηριστικό: «ετικέτα»

7.1. Διαίρεση δεδομένων

Παρατηρήσεις:

  • Δημιουργείται X_train 561110 σειρών και 5 χαρακτηριστικών.
  • Δημιουργείται X_val 120238 σειρών και 5 χαρακτηριστικών.
  • Δημιουργείται το X_test 120239 σειρών και 5 χαρακτηριστικών.

7.3. ταιριάζουν και μεταμορφώνονται

7.3.1. δυνατότητα «σχολιασμού»

7.3.2. λειτουργία «parent_comment»

7.3.3. χαρακτηριστικό ‘score’

7.3.4. χαρακτηριστικό ‘ups’

7.3.5. χαρακτηριστικό ‘downs’

7.4. Μοντέλο LSTM

Μετά από πολύ πειραματισμό, οι παράμετροι για το μοντέλο είναι σταθερές. Ο παρακάτω συνδυασμός λειτουργεί αρκετά καλά.

μοντέλο πλοκής

7.5. Χρησιμοποιούνται επανακλήσεις

  • EarlyStopping: Διακόπτει την προπόνηση όταν μια συγκεκριμένη μέτρηση δεν βελτιώνεται πλέον.
  • ReduceLROnPlateau : Όταν μια συγκεκριμένη μέτρηση σταματά να βελτιώνεται, μειώνει τον ρυθμό εκμάθησης.
  • LearningRateScheduler : Ο ρυθμός μάθησης θα τροποποιείται κάθε φορά που ξεκινά μια νέα εποχή. (βάσει συνάρτησης)

7.6. Μεταγλώττιση

χρησιμοποιούμενες μετρήσεις: ακρίβεια, ακρίβεια, ανάκληση, f1_score

7.7. Εκπαίδευση των δεδομένων

7.8. Οικόπεδα

loss_plot

plot_accuracy

πλοκή_ακρίβειας

ανάκληση_πλοκής

f1_score_plot

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

  • Τρένο

  • Val

  • Δοκιμή

9. Πρόβλεψη

επιλογή ενός τυχαίου δείγματος δεδομένων δοκιμής για πρόβλεψη

Πλήρης πηγαίος κώδικας :εδώ

Προφίλ LinkedIn :εδώ

9. Ανάπτυξη

Το βίντεο της πρόβλεψης για ένα μόνο δείγμα δοκιμής μπορείτε να το βρείτε εδώ

11. Μελλοντική εργασία

Έτσι, στο μέλλον, μπορούμε να δοκιμάσουμε χρησιμοποιώντας μοντέλα Transformer όπως π.χ

  • BERT (Προεκπαίδευση Deep Bidirectional Transformers for Language Understanding)
  • XLNet (Γενικοποιημένη Αυτοπαλινδρομική Προκατάρτιση για Γλωσσική Κατανόηση)
  • XLM (Διαγλωσσική Προεκπαίδευση Μοντέλου Γλωσσών)
  • RoBERTa (Στιβαρά βελτιστοποιημένη προσέγγιση προεκπαίδευσης BERT)

12. Αναφορές