Αγαπητοι αναγνωστες,
Σε αυτό το blog, θα συζητήσω το chunking τόσο θεωρητικά όσο και πρακτικά στην Python.
Λοιπόν, ας ξεκινήσουμε…
ΣΗΜΕΊΩΣΗ: Για την υλοποίηση, είναι καλύτερο να χρησιμοποιήσετε το Python IDLE καθώς η έξοδος είναι ένα σχέδιο ενός δέντρου που εμφανίζεται σε ξεχωριστό παράθυρο.
ημερήσια διάταξη
- Τι είναι το chunking;
- Πού χρησιμοποιείται το chunking;
- Τύποι τεμαχισμού
- Εφαρμογή του chunking στην Python
- Αποτελέσματα
Τι είναι το chunking;
Το Chunking ορίζεται ως η διαδικασία επεξεργασίας της φυσικής γλώσσας που χρησιμοποιείται για τον προσδιορισμό τμημάτων του λόγου και σύντομων φράσεων που υπάρχουν σε μια δεδομένη πρόταση.
Υπενθυμίζοντας τα παλιά καλά μαθήματα αγγλικής γραμματικής στο σχολείο, σημειώστε ότι υπάρχουν οκτώ μέρη του λόγου, δηλαδή το ουσιαστικό, το ρήμα, το επίθετο, το επίρρημα, η πρόθεση, ο σύνδεσμος, η αντωνυμία και ο επιφώνημα. Επίσης, στον παραπάνω ορισμό του τεμαχισμού, οι σύντομες φράσεις αναφέρονται στις φράσεις που σχηματίζονται με τη συμπερίληψη οποιουδήποτε από αυτά τα μέρη του λόγου.
Για παράδειγμα, το τεμάχιο μπορεί να γίνει για να προσδιοριστούν και, επομένως, να ομαδοποιηθούν ονοματικές φράσεις ή μόνο ουσιαστικά, επίθετα ή φράσεις επιθέτων κ.λπ. Σκεφτείτε την παρακάτω πρόταση:
“Είχα μπέργκερ και αρτοσκευάσματα για πρωινό.”
Σε αυτήν την περίπτωση, εάν θέλουμε να ομαδοποιήσουμε ή να τμηματοποιήσουμε ονοματικές φράσεις, θα λάβουμε «μπιφτέκια», «γλυκά» και «μεσημεριανό» που είναι τα ουσιαστικά ή οι ονοματικές ομάδες της πρότασης.
Πού χρησιμοποιείται το chunking;
Γιατί να θέλουμε να μάθουμε κάτι χωρίς να ξέρουμε πού χρησιμοποιείται ευρέως;! Κοιτάζοντας τις εφαρμογές που συζητούνται σε αυτήν την ενότητα του ιστολογίου θα σας βοηθήσει να παραμείνετε περίεργοι μέχρι το τέλος!
Το Chunking χρησιμοποιείται για να ληφθούν οι απαιτούμενες φράσεις από μια δεδομένη πρόταση. Ωστόσο, η προσθήκη ετικετών POS μπορεί να χρησιμοποιηθεί μόνο για τον εντοπισμό των τμημάτων του λόγου στα οποία ανήκει κάθε λέξη της πρότασης.
Όταν έχουμε πολλές περιγραφές ή τροποποιήσεις γύρω από μια συγκεκριμένη λέξη ή τη φράση που μας ενδιαφέρει, χρησιμοποιούμε τεμάχια για να αρπάξουμε μόνο την απαιτούμενη φράση, αγνοώντας τις υπόλοιπες γύρω από αυτήν. Ως εκ τούτου, το chunking ανοίγει έναν δρόμο για να ομαδοποιήσουμε τις απαιτούμενες φράσεις και να αποκλείσουμε όλους τους τροποποιητές γύρω τους που δεν είναι απαραίτητοι για την ανάλυσή μας. Συνοψίζοντας, το chunking μας βοηθά να εξάγουμε τις σημαντικές λέξεις μόνο από μακροσκελείς περιγραφές. Έτσι, το chunking είναι ένα βήμα στην εξαγωγή πληροφοριών.
Είναι ενδιαφέρον ότι αυτή η διαδικασία τεμαχισμού στο NLP επεκτείνεται σε διάφορες άλλες εφαρμογές. Για παράδειγμα, να ομαδοποιήσετε φρούτα μιας συγκεκριμένης κατηγορίας, ας πούμε, φρούτα πλούσια σε πρωτεΐνες ως ομάδα, φρούτα πλούσια σε βιταμίνες ως μια άλλη ομάδα, και ούτω καθεξής. Επιπλέον, το chunking μπορεί επίσης να χρησιμοποιηθεί για την ομαδοποίηση παρόμοιων αυτοκινήτων, ας πούμε, αυτοκινήτων που υποστηρίζουν αυτόματο κιβώτιο ταχυτήτων σε μια ομάδα και τα άλλα που υποστηρίζουν χειροκίνητη ταχύτητα σε ένα άλλο κομμάτι και ούτω καθεξής.
Τύποι τεμαχισμού
Υπάρχουν, γενικά, δύο τύποι τεμαχισμού:
- Τεμαχισμό
- Κομματοποίηση
Τεμαχισμός:
Εδώ, δεν βουτάμε βαθιά. Αντίθετα, χαιρόμαστε μόνο με μια επισκόπηση των πληροφοριών. Απλώς μας βοηθά να έχουμε μια σύντομη ιδέα των δεδομένων που δίνονται.
Τεμαχισμός:
Σε αντίθεση με τον προηγούμενο τύπο τεμαχισμού, το τεμαχισμό μας βοηθά να λάβουμε λεπτομερείς πληροφορίες.
Έτσι, αν θέλετε απλώς μια εικόνα, σκεφτείτε το ενδεχόμενο να «μαζέψετε» διαφορετικά προτιμήστε το «κοψίματα».
Εφαρμογή του chunking στην Python
Φανταστείτε μια κατάσταση στην οποία θέλετε να εξαγάγετε όλα τα ρήματα από το δεδομένο κείμενο για την ανάλυσή σας. Έτσι, σε αυτή την περίπτωση, πρέπει να εξετάσουμε το τεμάχιο των ρηματικών φράσεων. Αυτό συμβαίνει επειδή ο στόχος μας είναι να εξαγάγουμε όλες τις ρηματικές φράσεις από το συγκεκριμένο κομμάτι κειμένου. Το τεμάχιο γίνεται με τη βοήθεια κανονικών εκφράσεων.
Μην ανησυχείτε αν είναι η πρώτη φορά που συναντάτε τον όρο «κανονικές εκφράσεις». Ο παρακάτω πίνακας είναι εδώ, για να σας σώσει:
|
|
|
|
|
|
|
|
|
|
|
|
Ο παραπάνω πίνακας περιλαμβάνει τις πιο συνηθισμένες τυπικές εκφράσεις που χρησιμοποιούνται. Οι τυπικές εκφράσεις είναι πολύ χρήσιμες στη γραμμή εντολών, ειδικά κατά τη διαγραφή, τον εντοπισμό, τη μετονομασία ή τη μετακίνηση αρχείων.
Τέλος πάντων, για αυτήν την υλοποίηση, θα χρησιμοποιήσουμε μόνο *. Μη διστάσετε να δείτε τον παραπάνω πίνακα για να εξοικειωθείτε με το σύμβολο!
Θα κάνουμε chunking χρησιμοποιώντας το nltk, την πιο δημοφιλή βιβλιοθήκη NLP. Λοιπόν, ας το εισάγουμε πρώτα.
εισαγωγή nltk
Ας εξετάσουμε το παρακάτω δείγμα κειμένου που δημιούργησα μόνος μου. Μη διστάσετε να αντικαταστήσετε το παρακάτω με οποιοδήποτε δείγμα κειμένου θέλετε να εφαρμόσετε το chunking!
sample_text=""""Ο Ράμα σκότωσε τον Ραβάνα για να σώσει τη Σίτα από τη Λάνκα. Ο θρύλος του Ραμαγιάν είναι το πιο δημοφιλές ινδικό έπος. Πολλές ταινίες και σίριαλ έχουν ήδη γυριστεί σε πολλές γλώσσες εδώ στην Ινδία βασισμένες στο Ραμαγιάνα. """
Σαφώς, τα δεδομένα πρέπει να είναι διακριτικά προτάσεων και, στη συνέχεια, διακριτικά λέξεων πριν προχωρήσουμε. Tokenization δεν είναι παρά η διαδικασία διάσπασης του δεδομένου κομματιού κειμένου σε μικρότερες ενότητες όπως προτάσεις, στην περίπτωση του tokenization προτάσεων και των λέξεων, στην περίπτωση του tokenization λέξεων.
Ακολουθεί το tokenization, η επισήμανση POS (part-of-speech) γίνεται για κάθε λέξη, στην οποία θα προσδιορίζεται το τμήμα του λόγου κάθε λέξης. Τώρα, μας ενδιαφέρει μόνο το ρήμα part-of-speech και επιθυμούμε να εξαγάγουμε το ίδιο.
Ως εκ τούτου, καθορίστε το μέρος του λόγου που μας ενδιαφέρει χρησιμοποιώντας την απαιτούμενη κανονική έκφραση ως εξής:
VB: {}
tokenized=nltk.sent_tokenize(sample_text) for i σε tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()
Η κανονική έκφραση (RE) περικλείεται μέσα σε γωνιακές αγκύλες() οι οποίες με τη σειρά τους περικλείονται μέσα σε σγουρές αγκύλες ({ και }).
ΣΗΜΕΊΩΣΗ: Καθορίστε το RE σύμφωνα με το απαιτούμενο POS
Το VB σημαίνει το ρήμα POS. Η κουκκίδα που διαδέχεται το VB σημαίνει ότι ταιριάζει με οποιονδήποτε χαρακτήρα που ακολουθεί το VB. Το ερωτηματικό μετά την τελεία προσδιορίζει ότι οποιοσδήποτε χαρακτήρας μετά το B πρέπει να εμφανίζεται μόνο μία φορά ή να μην εμφανίζεται καθόλου. Ωστόσο, από τον πίνακα που είδαμε προηγουμένως, αυτός ο χαρακτήρας είναι προαιρετικός. Έχουμε πλαισιώσει την κανονική έκφραση με αυτόν τον τρόπο επειδή, στο NLTK, οι ρηματικές φράσεις περιλαμβάνουν τις ακόλουθες ετικέτες POS:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Έτσι, οι ρηματικές φράσεις μπορούν να ανήκουν σε οποιοδήποτε από τα παραπάνω POS. Γι' αυτό η κανονική έκφραση πλαισιώνεται ως VB.; που περιλαμβάνει όλες τις παραπάνω κατηγορίες. Το πακέτο RegexpParser χρησιμοποιείται για να ελέγξει εάν ένα POS ικανοποιεί το απαιτούμενο μοτίβο μας, το οποίο αναφέραμε χρησιμοποιώντας το RE προηγουμένως.
Ολόκληρος ο κώδικας μπορεί να φανεί ως εξής:
import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Ο Ράμα σκότωσε τον Ραβάνα για να σώσει τη Σίτα από τη Λάνκα. Ο θρύλος του Ραμαγιάν είναι το πιο δημοφιλές ινδικό έπος. Πολλές ταινίες και σίριαλ έχουν ήδη γυριστεί σε πολλές γλώσσες εδώ στην Ινδία με βάση το Ramayana. """ tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()
Αποτελέσματα
Τέλος, λαμβάνουμε μια δενδρική μορφή του POS των λέξεων μαζί με τις λέξεις των οποίων το POS ταιριάζει με το δεδομένο RE. Το στιγμιότυπο της εξόδου που λήφθηκε για το δείγμα κειμένου που πέρασε από εμάς φαίνεται στα παραπάνω σχήματα.
Παρατηρήστε ότι οι λέξεις που ικανοποιούν το RE μας μόνο για ρηματικές φράσεις επισημαίνονται ξεκάθαρα στην έξοδο. Ως εκ τούτου, το τεμάχιο των ρηματικών φράσεων πραγματοποιήθηκε με επιτυχία.
Ελπίζω να βρήκατε το άρθρο μου χρήσιμο.
Ευχαριστώ!
αναφορές
1. Εφαρμογή chunking στην Python
2. Θεωρία πίσω από το chunking
3. Πλήρης λίστα με τα διαθέσιμα POS στο NLP
Σχετικά με εμάς
Είμαι ο Nithyashree V, τελειόφοιτος BTech Computer Science and Engineering. Μου αρέσει να μαθαίνω τέτοιες cool τεχνολογίες και να τις εφαρμόζω στην πράξη, ειδικά παρατηρώντας πώς μας βοηθούν να λύσουμε τα δύσκολα προβλήματα της κοινωνίας. Οι τομείς ενδιαφέροντός μου περιλαμβάνουν την Τεχνητή Νοημοσύνη, την Επιστήμη Δεδομένων και την Επεξεργασία Φυσικής Γλώσσας.
Εδώ είναι το προφίλ μου στο LinkedIn: Το LinkedIn μου
Μπορείτε να διαβάσετε τα άλλα άρθρα μου στο Analytics Vidhya από εδώ.
Πηγή: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/
- "
- 7
- Όλα
- ανάλυση
- analytics
- εφαρμογές
- γύρω
- άρθρο
- εμπορεύματα
- τεχνητή νοημοσύνη
- Blog
- Breakfast
- αυτοκίνητα
- κωδικός
- ερχομός
- Κοινός
- Πληροφορική
- ημερομηνία
- επιστημονικά δεδομένα
- Μηχανική
- Αγγλικά
- εξαγωγή
- Όνομα
- πρώτη φορά
- μορφή
- Δωρεάν
- Εξοπλισμος
- καλός
- πιάσε
- Γραμματική
- Group
- εδώ
- Τόνισε
- Πως
- HTTPS
- ιδέα
- προσδιορίσει
- Συμπεριλαμβανομένου
- Ινδία
- πληροφορίες
- εξαγωγή πληροφοριών
- Νοημοσύνη
- τόκος
- IT
- Γλώσσα
- Γλώσσες
- ΜΑΘΑΊΝΩ
- μάθηση
- Βιβλιοθήκη
- γραμμή
- Λίστα
- αγάπη
- σημάδι
- Ταίριασμα
- Εικόνες / Βίντεο
- Δημοφιλέστερα
- Κινηματογράφος
- και συγκεκριμένα
- Φυσική γλώσσα
- Επεξεργασία φυσικής γλώσσας
- nlp
- ΑΛΛΑ
- Άλλα
- πρότυπο
- φράσεις
- Δημοφιλής
- PoS
- παρόν
- Προφίλ ⬇️
- Python
- RE
- αναγνώστες
- ΠΕΡΙΦΕΡΕΙΑ
- Σχολείο
- Επιστήμη
- Κοντά
- Στιγμιότυπο
- So
- SOLVE
- Spot
- παραμονή
- Φοιτητής
- υποστήριξη
- Τεχνολογίες
- ώρα
- Τεκμηρίωση
- us
- Τι είναι
- εντός
- λόγια
- έτος
- μηδέν