|
2 weeks ago | |
---|---|---|
.. | ||
solution | 2 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 2 weeks ago |
README.md
Μετάφραση και ανάλυση συναισθημάτων με ML
Στα προηγούμενα μαθήματα μάθατε πώς να δημιουργείτε ένα βασικό bot χρησιμοποιώντας το TextBlob
, μια βιβλιοθήκη που ενσωματώνει ML στο παρασκήνιο για να εκτελεί βασικές εργασίες NLP, όπως η εξαγωγή φράσεων ουσιαστικών. Μια άλλη σημαντική πρόκληση στη γλωσσολογία υπολογιστών είναι η ακριβής μετάφραση μιας πρότασης από μία ομιλούμενη ή γραπτή γλώσσα σε μια άλλη.
Προ-μάθημα κουίζ
Η μετάφραση είναι ένα πολύ δύσκολο πρόβλημα, επιβαρυμένο από το γεγονός ότι υπάρχουν χιλιάδες γλώσσες και κάθε μία μπορεί να έχει πολύ διαφορετικούς γραμματικούς κανόνες. Μια προσέγγιση είναι να μετατρέψετε τους επίσημους γραμματικούς κανόνες μιας γλώσσας, όπως τα Αγγλικά, σε μια δομή ανεξάρτητη από τη γλώσσα και στη συνέχεια να την μεταφράσετε μετατρέποντάς την πίσω σε μια άλλη γλώσσα. Αυτή η προσέγγιση σημαίνει ότι θα ακολουθήσετε τα εξής βήματα:
- Αναγνώριση. Αναγνωρίστε ή επισημάνετε τις λέξεις στην εισαγωγική γλώσσα ως ουσιαστικά, ρήματα κ.λπ.
- Δημιουργία μετάφρασης. Παράγετε μια άμεση μετάφραση κάθε λέξης στη μορφή της γλώσσας-στόχου.
Παράδειγμα πρότασης, Αγγλικά προς Ιρλανδικά
Στα 'Αγγλικά', η πρόταση I feel happy αποτελείται από τρεις λέξεις με τη σειρά:
- υποκείμενο (I)
- ρήμα (feel)
- επίθετο (happy)
Ωστόσο, στη γλώσσα 'Ιρλανδικά', η ίδια πρόταση έχει πολύ διαφορετική γραμματική δομή - τα συναισθήματα όπως "happy" ή "sad" εκφράζονται ως κάτι που είναι επάνω σου.
Η αγγλική φράση I feel happy
στα Ιρλανδικά θα ήταν Tá athas orm
. Μια κυριολεκτική μετάφραση θα ήταν Happy is upon me
.
Ένας Ιρλανδός ομιλητής που μεταφράζει στα Αγγλικά θα έλεγε I feel happy
, όχι Happy is upon me
, επειδή κατανοεί το νόημα της πρότασης, ακόμα κι αν οι λέξεις και η δομή της πρότασης είναι διαφορετικές.
Η επίσημη σειρά για την πρόταση στα Ιρλανδικά είναι:
- ρήμα (Tá ή is)
- επίθετο (athas, ή happy)
- υποκείμενο (orm, ή upon me)
Μετάφραση
Ένα απλοϊκό πρόγραμμα μετάφρασης μπορεί να μεταφράσει μόνο λέξεις, αγνοώντας τη δομή της πρότασης.
✅ Εάν έχετε μάθει μια δεύτερη (ή τρίτη ή περισσότερες) γλώσσα ως ενήλικας, ίσως ξεκινήσατε σκεπτόμενοι στη μητρική σας γλώσσα, μεταφράζοντας μια έννοια λέξη προς λέξη στο μυαλό σας στη δεύτερη γλώσσα και στη συνέχεια εκφωνώντας τη μετάφρασή σας. Αυτό είναι παρόμοιο με αυτό που κάνουν τα απλοϊκά προγράμματα μετάφρασης υπολογιστών. Είναι σημαντικό να ξεπεράσετε αυτή τη φάση για να αποκτήσετε ευχέρεια!
Η απλοϊκή μετάφραση οδηγεί σε κακές (και μερικές φορές ξεκαρδιστικές) λανθασμένες μεταφράσεις: I feel happy
μεταφράζεται κυριολεκτικά ως Mise bhraitheann athas
στα Ιρλανδικά. Αυτό σημαίνει (κυριολεκτικά) me feel happy
και δεν είναι έγκυρη Ιρλανδική πρόταση. Παρόλο που τα Αγγλικά και τα Ιρλανδικά είναι γλώσσες που ομιλούνται σε δύο γειτονικά νησιά, είναι πολύ διαφορετικές γλώσσες με διαφορετικές γραμματικές δομές.
Μπορείτε να παρακολουθήσετε μερικά βίντεο σχετικά με τις γλωσσικές παραδόσεις των Ιρλανδικών, όπως αυτό
Προσεγγίσεις μηχανικής μάθησης
Μέχρι τώρα, έχετε μάθει για την προσέγγιση των επίσημων κανόνων στην επεξεργασία φυσικής γλώσσας. Μια άλλη προσέγγιση είναι να αγνοήσετε το νόημα των λέξεων και αντί να χρησιμοποιήσετε μηχανική μάθηση για να ανιχνεύσετε μοτίβα. Αυτό μπορεί να λειτουργήσει στη μετάφραση εάν έχετε πολλά κείμενα (ένα corpus) ή κείμενα (corpora) τόσο στην αρχική όσο και στη γλώσσα-στόχο.
Για παράδειγμα, σκεφτείτε την περίπτωση του Περηφάνια και Προκατάληψη, ενός γνωστού αγγλικού μυθιστορήματος γραμμένου από την Jane Austen το 1813. Εάν συμβουλευτείτε το βιβλίο στα Αγγλικά και μια ανθρώπινη μετάφραση του βιβλίου στα Γαλλικά, θα μπορούσατε να ανιχνεύσετε φράσεις που είναι ιδιωματικά μεταφρασμένες από τη μία γλώσσα στην άλλη. Θα το κάνετε αυτό σε λίγο.
Για παράδειγμα, όταν μια αγγλική φράση όπως I have no money
μεταφράζεται κυριολεκτικά στα Γαλλικά, μπορεί να γίνει Je n'ai pas de monnaie
. Η "Monnaie" είναι ένα δύσκολο γαλλικό 'ψευδο-ομόλογο', καθώς 'money' και 'monnaie' δεν είναι συνώνυμα. Μια καλύτερη μετάφραση που θα μπορούσε να κάνει ένας άνθρωπος θα ήταν Je n'ai pas d'argent
, επειδή μεταφέρει καλύτερα το νόημα ότι δεν έχετε χρήματα (αντί για 'ψιλά', που είναι η έννοια του 'monnaie').
Εικόνα από Jen Looper
Εάν ένα μοντέλο ML έχει αρκετές ανθρώπινες μεταφράσεις για να δημιουργήσει ένα μοντέλο, μπορεί να βελτιώσει την ακρίβεια των μεταφράσεων εντοπίζοντας κοινά μοτίβα σε κείμενα που έχουν μεταφραστεί προηγουμένως από ειδικούς ανθρώπινους ομιλητές και των δύο γλωσσών.
Άσκηση - μετάφραση
Μπορείτε να χρησιμοποιήσετε το TextBlob
για να μεταφράσετε προτάσεις. Δοκιμάστε την διάσημη πρώτη γραμμή του Περηφάνια και Προκατάληψη:
from textblob import TextBlob
blob = TextBlob(
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))
Το TextBlob
κάνει αρκετά καλή δουλειά στη μετάφραση: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
Μπορεί να υποστηριχθεί ότι η μετάφραση του TextBlob είναι πολύ πιο ακριβής, στην πραγματικότητα, από την γαλλική μετάφραση του βιβλίου του 1932 από τους V. Leconte και Ch. Pressoir:
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
Σε αυτή την περίπτωση, η μετάφραση που ενημερώνεται από ML κάνει καλύτερη δουλειά από τον ανθρώπινο μεταφραστή που προσθέτει περιττά λόγια στο στόμα του αρχικού συγγραφέα για 'σαφήνεια'.
Τι συμβαίνει εδώ; και γιατί το TextBlob είναι τόσο καλό στη μετάφραση; Λοιπόν, στο παρασκήνιο, χρησιμοποιεί το Google translate, ένα εξελιγμένο AI που μπορεί να αναλύσει εκατομμύρια φράσεις για να προβλέψει τις καλύτερες ακολουθίες για την εκάστοτε εργασία. Δεν υπάρχει τίποτα χειροκίνητο εδώ και χρειάζεστε σύνδεση στο διαδίκτυο για να χρησιμοποιήσετε το
blob.translate
.
✅ Δοκιμάστε μερικές ακόμα προτάσεις. Ποια είναι καλύτερη, η ML ή η ανθρώπινη μετάφραση; Σε ποιες περιπτώσεις;
Ανάλυση συναισθημάτων
Ένας άλλος τομέας όπου η μηχανική μάθηση μπορεί να λειτουργήσει πολύ καλά είναι η ανάλυση συναισθημάτων. Μια μη-ML προσέγγιση για τα συναισθήματα είναι να εντοπίσετε λέξεις και φράσεις που είναι 'θετικές' και 'αρνητικές'. Στη συνέχεια, δεδομένου ενός νέου κειμένου, υπολογίστε τη συνολική αξία των θετικών, αρνητικών και ουδέτερων λέξεων για να προσδιορίσετε τη συνολική διάθεση.
Αυτή η προσέγγιση μπορεί να ξεγελαστεί εύκολα, όπως ίσως έχετε δει στην εργασία Marvin - η πρόταση Great, that was a wonderful waste of time, I'm glad we are lost on this dark road
είναι μια σαρκαστική, αρνητική πρόταση, αλλά ο απλός αλγόριθμος ανιχνεύει 'great', 'wonderful', 'glad' ως θετικά και 'waste', 'lost' και 'dark' ως αρνητικά. Η συνολική διάθεση επηρεάζεται από αυτές τις αντικρουόμενες λέξεις.
✅ Σταματήστε για λίγο και σκεφτείτε πώς μεταφέρουμε τον σαρκασμό ως ανθρώπινοι ομιλητές. Η τονική έμφαση παίζει μεγάλο ρόλο. Προσπαθήστε να πείτε τη φράση "Well, that film was awesome" με διαφορετικούς τρόπους για να ανακαλύψετε πώς η φωνή σας μεταφέρει νόημα.
Προσεγγίσεις ML
Η προσέγγιση ML θα ήταν να συγκεντρώσετε χειροκίνητα αρνητικά και θετικά σώματα κειμένου - tweets, ή κριτικές ταινιών, ή οτιδήποτε όπου ο άνθρωπος έχει δώσει μια βαθμολογία και μια γραπτή γνώμη. Στη συνέχεια, μπορούν να εφαρμοστούν τεχνικές NLP στις γνώμες και τις βαθμολογίες, ώστε να προκύψουν μοτίβα (π.χ., θετικές κριτικές ταινιών τείνουν να έχουν τη φράση 'Oscar worthy' περισσότερο από αρνητικές κριτικές ταινιών, ή θετικές κριτικές εστιατορίων λένε 'gourmet' πολύ περισσότερο από 'disgusting').
⚖️ Παράδειγμα: Εάν εργαζόσασταν στο γραφείο ενός πολιτικού και υπήρχε κάποιος νέος νόμος υπό συζήτηση, οι πολίτες μπορεί να έγραφαν στο γραφείο με emails υπέρ ή κατά του συγκεκριμένου νέου νόμου. Ας πούμε ότι σας ανατέθηκε να διαβάσετε τα emails και να τα ταξινομήσετε σε 2 κατηγορίες, υπέρ και κατά. Εάν υπήρχαν πολλά emails, μπορεί να αισθανθείτε υπερβολική πίεση προσπαθώντας να τα διαβάσετε όλα. Δεν θα ήταν ωραίο αν ένα bot μπορούσε να τα διαβάσει όλα για εσάς, να τα κατανοήσει και να σας πει σε ποια κατηγορία ανήκει κάθε email;
Ένας τρόπος για να το πετύχετε αυτό είναι να χρησιμοποιήσετε Μηχανική Μάθηση. Θα εκπαιδεύατε το μοντέλο με ένα μέρος των emails κατά και ένα μέρος των emails υπέρ. Το μοντέλο θα τείνει να συσχετίζει φράσεις και λέξεις με την πλευρά κατά και την πλευρά υπέρ, αλλά δεν θα κατανοούσε κανένα από τα περιεχόμενα, μόνο ότι ορισμένες λέξεις και μοτίβα ήταν πιο πιθανό να εμφανιστούν σε ένα email κατά ή υπέρ. Θα μπορούσατε να το δοκιμάσετε με μερικά emails που δεν είχατε χρησιμοποιήσει για να εκπαιδεύσετε το μοντέλο και να δείτε αν κατέληγε στο ίδιο συμπέρασμα με εσάς. Στη συνέχεια, μόλις ήσασταν ικανοποιημένοι με την ακρίβεια του μοντέλου, θα μπορούσατε να επεξεργαστείτε μελλοντικά emails χωρίς να χρειάζεται να διαβάσετε το καθένα.
✅ Μοιάζει αυτή η διαδικασία με διαδικασίες που έχετε χρησιμοποιήσει σε προηγούμενα μαθήματα;
Άσκηση - συναισθηματικές προτάσεις
Τα συναισθήματα μετρώνται με μια πολικότητα από -1 έως 1, που σημαίνει ότι -1 είναι το πιο αρνητικό συναίσθημα και 1 είναι το πιο θετικό. Τα συναισθήματα μετρώνται επίσης με μια βαθμολογία από 0 έως 1 για αντικειμενικότητα (0) και υποκειμενικότητα (1).
Ρίξτε μια άλλη ματιά στο Περηφάνια και Προκατάληψη της Jane Austen. Το κείμενο είναι διαθέσιμο εδώ στο Project Gutenberg. Το παρακάτω δείγμα δείχνει ένα σύντομο πρόγραμμα που αναλύει τα συναισθήματα των πρώτων και τελευταίων προτάσεων του βιβλίου και εμφανίζει την πολικότητα συναισθήματος και τη βαθμολογία υποκειμενικότητας/αντικειμενικότητας.
Θα πρέπει να χρησιμοποιήσετε τη βιβλιοθήκη TextBlob
(που περιγράφεται παραπάνω) για να προσδιορίσετε το sentiment
(δεν χρειάζεται να γράψετε τον δικό σας υπολογιστή συναισθημάτων) στην ακόλουθη εργασία.
from textblob import TextBlob
quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""
quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""
sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment
print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))
Βλέπετε το ακόλουθο αποτέλεσμα:
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)
Darcy, as well as Elizabeth, really loved them; and they were
both ever sensible of the warmest gratitude towards the persons
who, by bringing her into Derbyshire, had been the means of
uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
Πρόκληση - ελέγξτε την πολικότητα συναισθήματος
Η εργασία σας είναι να προσδιορίσετε, χρησιμοποιώντας την πολικότητα συναισθήματος, εάν το Περηφάνια και Προκατάληψη έχει περισσότερες απόλυτα θετικές προτάσεις από απόλυτα αρνητικές. Για αυτή την εργασία, μπορείτε να υποθέσετε ότι μια βαθμολογία πολικότητας 1 ή -1 είναι απόλυτα θετική ή αρνητική αντίστοιχα.
Βήματα:
- Κατεβάστε ένα αντίγραφο του Περηφάνια και Προκατάληψη από το Project Gutenberg ως αρχείο .txt. Αφαιρέστε τα μεταδεδομένα στην αρχή και το τέλος του αρχείου, αφήνοντας μόνο το αρχικό κείμενο
- Ανοίξτε το αρχείο σε Python και εξαγάγετε το περιεχόμενο ως string
- Δημιουργήστε ένα TextBlob χρησιμοποιώντας το string του βιβλίου
- Αναλύστε κάθε πρόταση στο βιβλίο σε έναν βρόχο
- Εάν η πολικότητα είναι 1 ή -1 αποθηκεύστε την πρόταση σε έναν πίνακα ή λίστα θετικών ή αρνητικών μηνυμάτων
- Στο τέλος, εκτυπώστε όλες τις θετικές προτάσεις και τις αρνητικές προτάσεις (ξεχωριστά) και τον αριθμό της κάθε μίας.
Εδώ είναι ένα δείγμα λύσης.
✅ Έλεγχος Γνώσεων
- Τα συναισθήματα βασίζονται στις λέξεις που χρησιμοποιούνται στην πρόταση, αλλά ο κώδικας κατανοεί τις λέξεις;
- Πιστεύετε ότι η πολικότητα συναισθήματος είναι ακριβής, ή με άλλα λόγια, συμφωνείτε με τις βαθμολογίες;
- Ειδικότερα, συμφωνείτε ή διαφωνείτε με την απόλυτη θετική πολικότητα των ακόλουθων προτάσεων;
- “What an excellent father you have, girls!” said she, when the door was shut.
- “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
- How wonderfully these sort of things occur!
- I have the greatest dislike in the world to that sort of thing.
- Charlotte is an excellent manager, I dare say.
- “This is delightful indeed!
- I am so happy!
- Your idea of the ponies is delightful.
- Οι επόμενες 3 προ Υπάρχουν πολλοί τρόποι για να εξάγουμε το συναίσθημα από κείμενο. Σκεφτείτε τις επιχειρηματικές εφαρμογές που θα μπορούσαν να χρησιμοποιήσουν αυτήν την τεχνική. Σκεφτείτε πώς μπορεί να πάει στραβά. Διαβάστε περισσότερα για εξελιγμένα συστήματα έτοιμα για επιχειρήσεις που αναλύουν το συναίσθημα, όπως το Azure Text Analysis. Δοκιμάστε μερικές από τις προτάσεις του "Περηφάνια και Προκατάληψη" παραπάνω και δείτε αν μπορεί να ανιχνεύσει λεπτές αποχρώσεις.
- Ειδικότερα, συμφωνείτε ή διαφωνείτε με την απόλυτη θετική πολικότητα των ακόλουθων προτάσεων;
Εργασία
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.