Η επεξεργασία φυσικής γλώσσας είναι μια πτυχή της μηχανικής μάθησης που σας επιτρέπει να επεξεργαστείτε γραπτές λέξεις σε μια γλώσσα φιλική προς τη μηχανή. Τέτοια κείμενα γίνονται στη συνέχεια τροποποιήσιμα και μπορείτε να εκτελέσετε υπολογιστικούς αλγόριθμους σε αυτά όπως σας αρέσει.

Η λογική πίσω από αυτή τη σαγηνευτική τεχνολογία φαίνεται περίπλοκη αλλά δεν είναι. Ακόμα και τώρα, με μια σταθερή κατανόηση του βασικού προγραμματισμού Python, μπορείτε να δημιουργήσετε έναν νέο επεξεργαστή κειμένου DIY με τη εργαλειοθήκη φυσικής γλώσσας (NLTK).

Δείτε πώς μπορείτε να ξεκινήσετε με το NLTK της Python.

Τι είναι το NLTK και πώς λειτουργεί;

Γραμμένο με Python, το NLTK διαθέτει μια ποικιλία λειτουργιών χειρισμού συμβολοσειρών. Είναι μια ευέλικτη βιβλιοθήκη φυσικών γλωσσών με ένα τεράστιο αποθετήριο μοντέλων για διάφορες εφαρμογές φυσικής γλώσσας.

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

instagram viewer

Πώς να ρυθμίσετε το NLTK

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

Στη συνέχεια, εγκαταστήστε την εργαλειοθήκη φυσικής γλώσσας σε αυτό το περιβάλλον χρησιμοποιώντας κουκούτσι:

pip εγκατάσταση nltk

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

Έτσι, μόλις εγκαταστήσετε με επιτυχία το NLTK, ανοίξτε το αρχείο Python χρησιμοποιώντας οποιοδήποτε πρόγραμμα επεξεργασίας κώδικα.

Στη συνέχεια, εισαγάγετε το nltk ενότητα και ενεργοποιήστε το πρόγραμμα λήψης δεδομένων χρησιμοποιώντας τον ακόλουθο κώδικα:

pip εγκατάσταση nltk
nltk.download ()

Η εκτέλεση του παραπάνω κώδικα μέσω του τερματικού εμφανίζει μια γραφική διεπαφή χρήστη για την επιλογή και τη λήψη πακέτων δεδομένων. Εδώ, θα πρέπει να επιλέξετε ένα πακέτο και να κάνετε κλικ στο Κατεβάστε κουμπί για να το αποκτήσετε.

Οποιοδήποτε πακέτο δεδομένων που κατεβάζετε πηγαίνει στον καθορισμένο κατάλογο γραμμένο στο Λήψη καταλόγου πεδίο. Μπορείτε να το αλλάξετε αν θέλετε. Προσπαθήστε όμως να διατηρήσετε την προεπιλεγμένη τοποθεσία σε αυτό το επίπεδο.

Σχετίζεται με: Οι καλύτεροι δωρεάν συντάκτες κώδικα για τη σύνταξη της πρώτης σας εφαρμογής

Σημείωση: Τα πακέτα δεδομένων προσαρτώνται στις μεταβλητές συστήματος από προεπιλογή. Έτσι, μπορείτε να συνεχίσετε να τα χρησιμοποιείτε για επόμενα έργα ανεξάρτητα από το περιβάλλον Python που χρησιμοποιείτε.

Πώς να χρησιμοποιήσετε τα NLTK Tokenizers

Τελικά, η NLTK προσφέρει εκπαιδευμένα μοντέλα συμβολισμού για λέξεις και προτάσεις. Χρησιμοποιώντας αυτά τα εργαλεία, μπορείτε να δημιουργήσετε μια λίστα λέξεων από μια πρόταση. Or να μετατρέψετε μια παράγραφο σε έναν λογικό πίνακα προτάσεων.

Ακολουθεί ένα παράδειγμα του τρόπου χρήσης του NLTK word_tokenizer:

εισαγωγή nltk
από το nltk.tokenize εισαγωγή word_tokenize
word = "Αυτό είναι ένα παράδειγμα κειμένου"
tokenWord = word_tokenizer (λέξη)
εκτύπωση (tokenWord)
Παραγωγή:
['Αυτό', 'είναι', 'an', 'παράδειγμα', 'κείμενο']

Το NLTK χρησιμοποιεί επίσης ένα προ-εκπαιδευμένο tokenizer προτάσεων που ονομάζεται PunktSentenceTokenizer. Λειτουργεί χωρίζοντας μια παράγραφο σε μια λίστα προτάσεων.

Ας δούμε πώς λειτουργεί αυτό με μια παράγραφο δύο προτάσεων:

εισαγωγή nltk
από το nltk.tokenize εισαγωγή word_tokenize, PunktSentenceTokenizer
πρόταση = "Αυτό είναι ένα παράδειγμα κειμένου. Αυτό είναι ένα σεμινάριο για το NLTK "
διακριτικό = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (πρόταση)
εκτύπωση (tokenized_sentence)
Παραγωγή:
['Αυτό είναι ένα παράδειγμα κειμένου.', 'Αυτό είναι ένα σεμινάριο για το NLTK']

Μπορείτε να συμβολίσετε περαιτέρω κάθε πρόταση στον πίνακα που δημιουργήθηκε από τον παραπάνω κώδικα χρησιμοποιώντας word_tokenizer και Python για βρόχο.

Παραδείγματα τρόπου χρήσης του NLTK

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

Λάβετε ορισμούς λέξεων και μέρη του λόγου τους

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

Μπορείτε να χρησιμοποιήσετε το wordnet μοντέλο για τη δημιουργία μεταβλητών για ένα κείμενο. Στη συνέχεια, καθορίστε το νόημα και το μέρος του λόγου.

Για παράδειγμα, ας ελέγξουμε τις πιθανές μεταβλητές για "Monkey:"

εισαγωγή nltk
από nltk.corpus εισαγωγή wordnet ως wn
εκτύπωση (wn.synsets («μαϊμού»))
Παραγωγή:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Ο παραπάνω κώδικας εξάγει πιθανές εναλλακτικές λέξεις ή συντακτικές λέξεις και τμήματα ομιλίας για το "Monkey".

Τώρα ελέγξτε την έννοια του "Monkey" χρησιμοποιώντας το ορισμός μέθοδος:

Πίθηκος = wn.synset ('monkey.n.01'). Ορισμός ()
Παραγωγή:
οποιοδήποτε από τα διάφορα πρωτεύοντα μακράς ουράς (εξαιρουμένων των προσιμιών)

Μπορείτε να αντικαταστήσετε τη συμβολοσειρά στην παρένθεση με άλλες εναλλακτικές λύσεις για να δείτε τι εξάγει το NLTK.

ο pos_tag το μοντέλο, ωστόσο, καθορίζει τα μέρη του λόγου μιας λέξης. Μπορείτε να το χρησιμοποιήσετε με το word_tokenizer ή PunktSentenceTokenizer () αν ασχολείστε με μεγαλύτερες παραγράφους.

Δείτε πώς λειτουργεί αυτό:

εισαγωγή nltk
από το nltk.tokenize εισαγωγή word_tokenize, PunktSentenceTokenizer
word = "Αυτό είναι ένα παράδειγμα κειμένου. Αυτό είναι ένα σεμινάριο για το NLTK "
διακριτικό = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (λέξη)
για i σε tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
εκτύπωση (partsOfSpeech)
Παραγωγή:
[("Αυτό", "DT"), ("είναι", "VBZ"), ("an", "DT"), ("παράδειγμα", "NN"), ("κείμενο", "NN"), ('.', '.')]
[("Αυτό", "DT"), ("είναι", "VBZ"), ("a", "DT"), ("tutorial", "JJ"), ("on", "IN"), ('NLTK', 'NNP')]

Ο παραπάνω κώδικας συνδυάζει κάθε διακριτική λέξη με την ετικέτα ομιλίας της σε μια πλειάδα. Μπορείτε να ελέγξετε τη σημασία αυτών των ετικετών Penn Treebank.

Για πιο καθαρό αποτέλεσμα, μπορείτε να αφαιρέσετε τις περιόδους στην έξοδο χρησιμοποιώντας το αντικαθιστώ() μέθοδος:

για i σε tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
εκτύπωση (partsOfSpeech)
Καθαρότερη έξοδος:
[("Αυτό", "DT"), ("είναι", "VBZ"), ("an", "DT"), ("παράδειγμα", "NN"), ("κείμενο", "NN") ]
[("Αυτό", "DT"), ("είναι", "VBZ"), ("a", "DT"), ("tutorial", "JJ"), ("on", "IN"), ('NLTK', 'NNP')]

Οπτικοποίηση των τάσεων χαρακτηριστικών χρησιμοποιώντας την πλοκή NLTK

Η εξαγωγή χαρακτηριστικών από ακατέργαστα κείμενα είναι συχνά κουραστική και χρονοβόρα. Αλλά μπορείτε να δείτε τους ισχυρότερους προσδιοριστές χαρακτηριστικών σε ένα κείμενο χρησιμοποιώντας το διάγραμμα τάσης κατανομής συχνότητας NLTK.

Το NLTK, ωστόσο, συγχρονίζεται με matplotlib. Μπορείτε να το αξιοποιήσετε για να δείτε μια συγκεκριμένη τάση στα δεδομένα σας.

Ο παρακάτω κώδικας, για παράδειγμα, συγκρίνει ένα σύνολο θετικών και αρνητικών λέξεων σε ένα γράφημα διανομής χρησιμοποιώντας τα δύο τελευταία αλφάβητά τους:

εισαγωγή nltk
από nltk εισαγωγή ConditionalFreqDist
Λίστες αρνητικών και θετικών λέξεων:
αρνητικά = [
«ανώμαλη», «κατάργηση», «αποτρόπαιο»,
«αποτρόπαια», «αποτρόπαιο», «βδέλυγμα»
]
θετικά = [
«αφθονούν», «αφθονούν», «αφθονία»,
«άφθονο», «προσβάσιμο», «προσβάσιμο»
]
# Χωρίστε τα στοιχεία σε κάθε πίνακα σε επισημασμένα ζευγάρια χελώνων
# και συνδυάστε και τους δύο πίνακες:
pos_negData = ([("αρνητικό", neg) για neg σε αρνητικά]+[("θετικό", pos) για pos σε θετικά])
# Εξαγάγετε τα δύο τελευταία αλφάβητα από τον πίνακα που προκύπτει:
f = ((pos, i [-2:],) για (pos, i) σε pos_negData)
# Δημιουργήστε ένα γράφημα διανομής αυτών των αλφαβήτων
cfd = ConditionalFreqDist (f)
cfd.plot ()

Το διάγραμμα κατανομής αλφαβήτου μοιάζει με αυτό:

Κοιτάζοντας προσεκτικά το γράφημα, οι λέξεις τελειώνουν με ce, ds, le, nd, και nt έχουν υψηλότερη πιθανότητα να είναι θετικά κείμενα. Αυτά όμως που τελειώνουν με al, λυ, επί, και te είναι πιθανότατα αρνητικές λέξεις.

Σημείωση: Παρόλο που έχουμε χρησιμοποιήσει δεδομένα που δημιουργούνται εδώ, μπορείτε να αποκτήσετε πρόσβαση σε ορισμένα από τα ενσωματωμένα σύνολα δεδομένων της NLTK χρησιμοποιώντας τον αναγνώστη Corpus, καλώντας τα από το σώμα τάξη του nltk. Mightσως θελήσετε να δείτε το τεκμηρίωση του πακέτου corpus για να δείτε πώς μπορείτε να το χρησιμοποιήσετε.

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

Έχοντας διαβάσει αυτό το άρθρο, θα πρέπει να έχετε μια καλή ιδέα για το πώς να χρησιμοποιήσετε το NLTK σε βασικό επίπεδο. Το μόνο που απομένει να κάνετε τώρα είναι να βάλετε αυτή τη γνώση σε δράση μόνοι σας!

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
7 Βιβλιοθήκες μηχανικής μάθησης για επίδοξους ειδικούς

Σας ενδιαφέρει ο τομέας της μηχανικής μάθησης; Ξεκινήστε με αυτές τις βιβλιοθήκες.

Διαβάστε Επόμενο

Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
  • Γλώσσες προγραμματισμού
  • Προγραμματισμός
Σχετικά με τον Συγγραφέα
Idowu Omisola (96 άρθρα δημοσιεύθηκαν)

Η Idowu είναι παθιασμένη με οτιδήποτε έξυπνη τεχνολογία και παραγωγικότητα. Στον ελεύθερο χρόνο του, παίζει με κωδικοποίηση και μεταβαίνει στη σκακιέρα όταν βαριέται, αλλά του αρέσει επίσης να ξεφεύγει από τη ρουτίνα κάθε τόσο. Το πάθος του για να δείξει στους ανθρώπους την πορεία της σύγχρονης τεχνολογίας τον παρακινεί να γράψει περισσότερα.

Περισσότερα από το Idowu Omisola

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή