22 KiB
Εισαγωγή στην επεξεργασία φυσικής γλώσσας
Αυτό το μάθημα καλύπτει μια σύντομη ιστορία και σημαντικές έννοιες της επεξεργασίας φυσικής γλώσσας, ενός υποτομέα της υπολογιστικής γλωσσολογίας.
Προ-μάθημα κουίζ
Εισαγωγή
Η επεξεργασία φυσικής γλώσσας (NLP), όπως είναι ευρέως γνωστή, είναι ένας από τους πιο γνωστούς τομείς όπου η μηχανική μάθηση έχει εφαρμοστεί και χρησιμοποιηθεί σε λογισμικό παραγωγής.
✅ Μπορείτε να σκεφτείτε λογισμικό που χρησιμοποιείτε καθημερινά και πιθανότατα περιέχει κάποια ενσωματωμένη επεξεργασία φυσικής γλώσσας; Τι γίνεται με τα προγράμματα επεξεργασίας κειμένου ή τις εφαρμογές κινητών που χρησιμοποιείτε τακτικά;
Θα μάθετε για:
- Την ιδέα των γλωσσών. Πώς αναπτύχθηκαν οι γλώσσες και ποιοι ήταν οι κύριοι τομείς μελέτης.
- Ορισμούς και έννοιες. Θα μάθετε επίσης ορισμούς και έννοιες σχετικά με το πώς οι υπολογιστές επεξεργάζονται κείμενο, συμπεριλαμβανομένων της ανάλυσης, της γραμματικής και της αναγνώρισης ουσιαστικών και ρημάτων. Υπάρχουν κάποιες εργασίες προγραμματισμού σε αυτό το μάθημα, και εισάγονται αρκετές σημαντικές έννοιες που θα μάθετε να προγραμματίζετε αργότερα στα επόμενα μαθήματα.
Υπολογιστική γλωσσολογία
Η υπολογιστική γλωσσολογία είναι ένας τομέας έρευνας και ανάπτυξης που μελετά εδώ και δεκαετίες πώς οι υπολογιστές μπορούν να συνεργαστούν με, να κατανοήσουν, να μεταφράσουν και να επικοινωνήσουν με γλώσσες. Η επεξεργασία φυσικής γλώσσας (NLP) είναι ένας συναφής τομέας που επικεντρώνεται στο πώς οι υπολογιστές μπορούν να επεξεργαστούν τις 'φυσικές', δηλαδή τις ανθρώπινες, γλώσσες.
Παράδειγμα - υπαγόρευση στο τηλέφωνο
Αν έχετε ποτέ υπαγορεύσει στο τηλέφωνό σας αντί να πληκτρολογήσετε ή έχετε κάνει μια ερώτηση σε έναν εικονικό βοηθό, η ομιλία σας μετατράπηκε σε μορφή κειμένου και στη συνέχεια επεξεργάστηκε ή αναλύθηκε από τη γλώσσα που μιλήσατε. Οι ανιχνευμένες λέξεις-κλειδιά στη συνέχεια επεξεργάστηκαν σε μια μορφή που το τηλέφωνο ή ο βοηθός μπορούσε να κατανοήσει και να ενεργήσει.
Η πραγματική γλωσσική κατανόηση είναι δύσκολη! Εικόνα από Jen Looper
Πώς είναι δυνατή αυτή η τεχνολογία;
Αυτό είναι δυνατό επειδή κάποιος έγραψε ένα πρόγραμμα υπολογιστή για να το κάνει. Πριν από μερικές δεκαετίες, κάποιοι συγγραφείς επιστημονικής φαντασίας προέβλεψαν ότι οι άνθρωποι θα μιλούσαν κυρίως στους υπολογιστές τους και οι υπολογιστές θα καταλάβαιναν πάντα ακριβώς τι εννοούσαν. Δυστυχώς, αποδείχθηκε ότι είναι ένα πιο δύσκολο πρόβλημα από ό,τι φαντάζονταν πολλοί, και ενώ σήμερα είναι ένα πολύ καλύτερα κατανοητό πρόβλημα, υπάρχουν σημαντικές προκλήσεις για την επίτευξη της 'τέλειας' επεξεργασίας φυσικής γλώσσας όσον αφορά την κατανόηση του νοήματος μιας πρότασης. Αυτό είναι ιδιαίτερα δύσκολο όταν πρόκειται για την κατανόηση του χιούμορ ή την ανίχνευση συναισθημάτων όπως η ειρωνεία σε μια πρόταση.
Σε αυτό το σημείο, ίσως θυμάστε σχολικά μαθήματα όπου ο δάσκαλος κάλυπτε τα μέρη της γραμματικής σε μια πρόταση. Σε ορισμένες χώρες, οι μαθητές διδάσκονται γραμματική και γλωσσολογία ως ξεχωριστό μάθημα, αλλά σε πολλές, αυτά τα θέματα περιλαμβάνονται ως μέρος της εκμάθησης μιας γλώσσας: είτε της πρώτης σας γλώσσας στο δημοτικό σχολείο (εκμάθηση ανάγνωσης και γραφής) και ίσως μιας δεύτερης γλώσσας στο γυμνάσιο ή λύκειο. Μην ανησυχείτε αν δεν είστε ειδικός στη διάκριση ουσιαστικών από ρήματα ή επιρρημάτων από επίθετα!
Αν δυσκολεύεστε με τη διαφορά μεταξύ του απλού ενεστώτα και του παρατατικού ενεστώτα, δεν είστε μόνοι. Αυτό είναι μια πρόκληση για πολλούς ανθρώπους, ακόμη και για φυσικούς ομιλητές μιας γλώσσας. Τα καλά νέα είναι ότι οι υπολογιστές είναι πολύ καλοί στην εφαρμογή τυπικών κανόνων, και θα μάθετε να γράφετε κώδικα που μπορεί να αναλύσει μια πρόταση εξίσου καλά με έναν άνθρωπο. Η μεγαλύτερη πρόκληση που θα εξετάσετε αργότερα είναι η κατανόηση του νοήματος και του συναισθήματος μιας πρότασης.
Προαπαιτούμενα
Για αυτό το μάθημα, το κύριο προαπαιτούμενο είναι να μπορείτε να διαβάσετε και να κατανοήσετε τη γλώσσα αυτού του μαθήματος. Δεν υπάρχουν μαθηματικά προβλήματα ή εξισώσεις για να λύσετε. Ενώ ο αρχικός συγγραφέας έγραψε αυτό το μάθημα στα Αγγλικά, έχει επίσης μεταφραστεί σε άλλες γλώσσες, οπότε μπορεί να διαβάζετε μια μετάφραση. Υπάρχουν παραδείγματα όπου χρησιμοποιούνται διάφορες γλώσσες (για να συγκριθούν οι διαφορετικοί γραμματικοί κανόνες διαφορετικών γλωσσών). Αυτά δεν μεταφράζονται, αλλά το επεξηγηματικό κείμενο μεταφράζεται, ώστε το νόημα να είναι σαφές.
Για τις εργασίες προγραμματισμού, θα χρησιμοποιήσετε Python και τα παραδείγματα χρησιμοποιούν Python 3.8.
Σε αυτή την ενότητα, θα χρειαστείτε και θα χρησιμοποιήσετε:
-
Κατανόηση Python 3. Κατανόηση της γλώσσας προγραμματισμού Python 3, αυτό το μάθημα χρησιμοποιεί εισόδους, βρόχους, ανάγνωση αρχείων, πίνακες.
-
Visual Studio Code + επέκταση. Θα χρησιμοποιήσουμε το Visual Studio Code και την επέκταση Python του. Μπορείτε επίσης να χρησιμοποιήσετε ένα IDE Python της επιλογής σας.
-
TextBlob. TextBlob είναι μια απλοποιημένη βιβλιοθήκη επεξεργασίας κειμένου για Python. Ακολουθήστε τις οδηγίες στον ιστότοπο του TextBlob για να το εγκαταστήσετε στο σύστημά σας (εγκαταστήστε επίσης τα corpora, όπως φαίνεται παρακάτω):
pip install -U textblob python -m textblob.download_corpora
💡 Συμβουλή: Μπορείτε να εκτελέσετε Python απευθείας σε περιβάλλοντα VS Code. Ελέγξτε τα έγγραφα για περισσότερες πληροφορίες.
Συνομιλία με μηχανές
Η ιστορία της προσπάθειας να κάνουν οι υπολογιστές να κατανοήσουν την ανθρώπινη γλώσσα πηγαίνει πίσω δεκαετίες, και ένας από τους πρώτους επιστήμονες που εξέτασε την επεξεργασία φυσικής γλώσσας ήταν ο Alan Turing.
Το 'τεστ Turing'
Όταν ο Turing ερευνούσε την τεχνητή νοημοσύνη τη δεκαετία του 1950, σκέφτηκε αν θα μπορούσε να δοθεί ένα τεστ συνομιλίας σε έναν άνθρωπο και έναν υπολογιστή (μέσω γραπτής αλληλογραφίας) όπου ο άνθρωπος στη συνομιλία δεν ήταν σίγουρος αν συνομιλούσε με άλλον άνθρωπο ή με υπολογιστή.
Αν, μετά από μια ορισμένη διάρκεια συνομιλίας, ο άνθρωπος δεν μπορούσε να προσδιορίσει αν οι απαντήσεις προέρχονταν από υπολογιστή ή όχι, τότε θα μπορούσε να ειπωθεί ότι ο υπολογιστής σκέφτεται;
Η έμπνευση - 'το παιχνίδι μίμησης'
Η ιδέα για αυτό προήλθε από ένα παιχνίδι πάρτι που ονομάζεται Το Παιχνίδι Μίμησης, όπου ένας ανακριτής είναι μόνος σε ένα δωμάτιο και έχει ως καθήκον να προσδιορίσει ποιοι από δύο ανθρώπους (σε άλλο δωμάτιο) είναι άνδρας και γυναίκα αντίστοιχα. Ο ανακριτής μπορεί να στείλει σημειώσεις και πρέπει να προσπαθήσει να σκεφτεί ερωτήσεις όπου οι γραπτές απαντήσεις αποκαλύπτουν το φύλο του μυστηριώδους ατόμου. Φυσικά, οι παίκτες στο άλλο δωμάτιο προσπαθούν να παραπλανήσουν τον ανακριτή απαντώντας σε ερωτήσεις με τρόπο που να τον μπερδεύει ή να τον παραπλανεί, ενώ παράλληλα δίνουν την εντύπωση ότι απαντούν ειλικρινά.
Ανάπτυξη της Eliza
Τη δεκαετία του 1960, ένας επιστήμονας του MIT, ο Joseph Weizenbaum, ανέπτυξε την Eliza, μια υπολογιστική 'θεραπεύτρια' που έκανε ερωτήσεις στον άνθρωπο και έδινε την εντύπωση ότι κατανοούσε τις απαντήσεις του. Ωστόσο, ενώ η Eliza μπορούσε να αναλύσει μια πρόταση και να εντοπίσει ορισμένες γραμματικές δομές και λέξεις-κλειδιά ώστε να δώσει μια λογική απάντηση, δεν μπορούσε να ειπωθεί ότι κατανοούσε την πρόταση. Αν η Eliza παρουσιαζόταν με μια πρόταση που ακολουθούσε τη μορφή "Είμαι λυπημένος", θα μπορούσε να αναδιατάξει και να αντικαταστήσει λέξεις στην πρόταση για να σχηματίσει την απάντηση "Πόσο καιρό είστε λυπημένος;".
Αυτό έδινε την εντύπωση ότι η Eliza κατανοούσε τη δήλωση και έκανε μια επόμενη ερώτηση, ενώ στην πραγματικότητα άλλαζε τον χρόνο και πρόσθετε κάποιες λέξεις. Αν η Eliza δεν μπορούσε να εντοπίσει μια λέξη-κλειδί για την οποία είχε μια απάντηση, θα έδινε μια τυχαία απάντηση που θα μπορούσε να εφαρμοστεί σε πολλές διαφορετικές δηλώσεις. Η Eliza μπορούσε να ξεγελαστεί εύκολα, για παράδειγμα αν ένας χρήστης έγραφε "Είσαι ένα ποδήλατο", θα μπορούσε να απαντήσει "Πόσο καιρό είμαι ποδήλατο;", αντί για μια πιο λογική απάντηση.
🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο σχετικά με το αρχικό πρόγραμμα ELIZA
Σημείωση: Μπορείτε να διαβάσετε την αρχική περιγραφή της Eliza που δημοσιεύθηκε το 1966 αν έχετε λογαριασμό ACM. Εναλλακτικά, διαβάστε για την Eliza στη Wikipedia.
Άσκηση - προγραμματισμός ενός βασικού συνομιλητικού bot
Ένα συνομιλητικό bot, όπως η Eliza, είναι ένα πρόγραμμα που λαμβάνει εισόδους από τον χρήστη και φαίνεται να κατανοεί και να απαντά έξυπνα. Σε αντίθεση με την Eliza, το bot μας δεν θα έχει πολλούς κανόνες που του δίνουν την εντύπωση ότι έχει μια έξυπνη συνομιλία. Αντίθετα, το bot μας θα έχει μόνο μία δυνατότητα, να συνεχίζει τη συνομιλία με τυχαίες απαντήσεις που μπορεί να λειτουργούν σε σχεδόν οποιαδήποτε απλή συνομιλία.
Το σχέδιο
Τα βήματά σας για την κατασκευή ενός συνομιλητικού bot:
- Εκτυπώστε οδηγίες που συμβουλεύουν τον χρήστη πώς να αλληλεπιδράσει με το bot
- Ξεκινήστε έναν βρόχο
- Αποδεχτείτε την είσοδο του χρήστη
- Αν ο χρήστης ζητήσει να τερματίσει, τότε τερματίστε
- Επεξεργαστείτε την είσοδο του χρήστη και καθορίστε την απάντηση (σε αυτή την περίπτωση, η απάντηση είναι μια τυχαία επιλογή από μια λίστα πιθανών γενικών απαντήσεων)
- Εκτυπώστε την απάντηση
- Επιστρέψτε στο βήμα 2
Δημιουργία του bot
Ας δημιουργήσουμε το bot τώρα. Θα ξεκινήσουμε ορίζοντας κάποιες φράσεις.
-
Δημιουργήστε αυτό το bot μόνοι σας σε Python με τις παρακάτω τυχαίες απαντήσεις:
random_responses = ["That is quite interesting, please tell me more.", "I see. Do go on.", "Why do you say that?", "Funny weather we've been having, isn't it?", "Let's change the subject.", "Did you catch the game last night?"]
Εδώ είναι ένα δείγμα εξόδου για να σας καθοδηγήσει (η είσοδος του χρήστη είναι στις γραμμές που ξεκινούν με
>
):Hello, I am Marvin, the simple robot. You can end this conversation at any time by typing 'bye' After typing each answer, press 'enter' How are you today? > I am good thanks That is quite interesting, please tell me more. > today I went for a walk Did you catch the game last night? > I did, but my team lost Funny weather we've been having, isn't it? > yes but I hope next week is better Let's change the subject. > ok, lets talk about music Why do you say that? > because I like music! Why do you say that? > bye It was nice talking to you, goodbye!
Μια πιθανή λύση για την εργασία είναι εδώ
✅ Σταματήστε και σκεφτείτε
- Πιστεύετε ότι οι τυχαίες απαντήσεις θα 'ξεγελούσαν' κάποιον ώστε να πιστέψει ότι το bot πραγματικά τον κατανοεί;
- Ποια χαρακτηριστικά θα χρειαζόταν το bot για να είναι πιο αποτελεσματικό;
- Αν ένα bot μπορούσε πραγματικά να 'κατανοήσει' το νόημα μιας πρότασης, θα χρειαζόταν να 'θυμάται' το νόημα προηγούμενων προτάσεων σε μια συνομιλία επίσης;
🚀Πρόκληση
Επιλέξτε ένα από τα στοιχεία "σταματήστε και σκεφτείτε" παραπάνω και είτε προσπαθήστε να το υλοποιήσετε σε κώδικα είτε γράψτε μια λύση σε χαρτί χρησιμοποιώντας ψευδοκώδικα.
Στο επόμενο μάθημα, θα μάθετε για μια σειρά από άλλες προσεγγίσεις για την ανάλυση φυσικής γλώσσας και τη μηχανική μάθηση.
Μετά-μάθημα κουίζ
Ανασκόπηση & Αυτομελέτη
Ρίξτε μια ματιά στις παρακάτω αναφορές ως ευκαιρίες για περαιτέρω ανάγνωση.
Αναφορές
- Schubert, Lenhart, "Computational Linguistics", The Stanford Encyclopedia of Philosophy (Spring 2020 Edition), Edward N. Zalta (ed.), URL = https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/.
- Princeton University "About WordNet." WordNet. Princeton University. 2010.
Εργασία
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.