NLP Tutorials Μέρος -I από τα βασικά έως τα προχωρημένα

Κόμβος πηγής: 1581227

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

Οποιοσδήποτε νέος ή μηδενικός στο NLP μπορεί να ξεκινήσει μαζί μας και να ακολουθήσει αυτήν τη σειρά άρθρων.

Βιβλιοθήκες που χρησιμοποιούνται: Keras, Tensorflow, Scikit Learn, NLTK, Glove, κ.λπ.

Όλα τα θέματα θα εξηγηθούν χρησιμοποιώντας κώδικες python και δημοφιλή πλαίσια βαθιάς μάθησης και μηχανικής μάθησης, όπως το sci-kit Learn, το Keras και το TensorFlow.

Τι είναι το NLP;

Η Επεξεργασία Φυσικής Γλώσσας είναι ένα μέρος της επιστήμης των υπολογιστών που επιτρέπει στους υπολογιστές να κατανοούν τη γλώσσα φυσικά, όπως κάνει ένα άτομο. Αυτό σημαίνει ότι ο φορητός υπολογιστής θα κατανοεί συναισθήματα, την ομιλία, θα απαντά σε ερωτήσεις, θα συνοψίζει κείμενο κ.λπ. Δεν θα μιλάμε πολύ για την ιστορία και την εξέλιξή του. Αν σας ενδιαφέρει, προτιμήστε αυτό σύνδεσμο.

Βήμα 1 Καθαρισμός δεδομένων

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

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

Μετατρέπω τα ακατέργαστα δεδομένα κειμένου σε πλαίσιο δεδομένων pandas και εκτελώ διάφορες τεχνικές καθαρισμού δεδομένων.

εισαγωγή pandas ως κείμενο pd = ['Αυτό είναι το ΑΡΘΡΟ NLP TASKS γραμμένο από τον ABhishek Jaiswal** ','Σε αυτό το άρθρο θα εξηγήσω διάφορες τεχνικές ΚΑΘΑΡΙΣΜΟΥ ΔΕΔΟΜΕΝΩΝ', 'Έτσι μείνετε συντονισμένοι για ΠΕΡΙΣΣΟΤΕΡΑ &&','Μα Δεν νομίζω ότι πηγαίνει στο usf, ζει γύρω του'] df = pd.DataFrame({'text':text})

Παραγωγή:

Καθαρισμός δεδομένων | NLP Tutorials
                                                                                  Πηγή: Τοπικό

Χαμηλότερο περίβλημα

Η μέθοδος lower()μετατρέπει όλους τους κεφαλαίους χαρακτήρες σε πεζούς και επιστρέφει.

εφαρμόζοντας lower() μέθοδος που χρησιμοποιεί τη συνάρτηση λάμδα

df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() for x σε x.split()))
Πεζό | NLP Tutorials
                                                                                           Πηγή: Τοπικό

Αφαίρεση σημείων στίξης 

Αφαίρεση σημείων στίξης(*,&,%#@#()) είναι ένα κρίσιμο βήμα, καθώς τα σημεία στίξης δεν προσθέτουν επιπλέον πληροφορίες ή αξία στα δεδομένα μας. Ως εκ τούτου, η κατάργηση των σημείων στίξης μειώνει το μέγεθος των δεδομένων. Ως εκ τούτου, βελτιώνει την υπολογιστική απόδοση.

Αυτό το βήμα μπορεί να γίνει χρησιμοποιώντας τη μέθοδο Regex ή Replace.

Αφαίρεση σημείων στίξης
                                                                                                 Πηγή: Τοπικό

string.punctuation επιστρέφει μια συμβολοσειρά που περιέχει όλα τα σημεία στίξης.

Σημεία στίξης | NLP Tutorials
                                                                                               Πηγή: Τοπικό

Αφαίρεση σημείων στίξης χρησιμοποιώντας κανονικές εκφράσεις:

Αφαίρεση σημείων στίξης
                                                                                                 Πηγή: Τοπικό

Σταματήστε την αφαίρεση λέξεων

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

Χρησιμοποιώντας τη βιβλιοθήκη NLTK, μπορούμε να φιλτράρουμε τα Stopwords από το σύνολο δεδομένων.

# !pip install nltk εισαγωγή nltk nltk.download('stopwords') from nltk.corpus εισαγωγή stopwords allstopwords = stopwords.words('αγγλικά') df.lower.apply(lambda x: " ".join(i for i in x .split() αν δεν είμαι στα allstopwords))
Σταματήστε την αφαίρεση λέξεων
                                                                                          Πηγή: Τοπικό

Διόρθωση ορθογραφίας

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

Η διόρθωση των ορθογραφικών λαθών βελτιώνει την ακρίβεια του μοντέλου.

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

Η μέθοδος correct() δουλεύει σε αντικείμενα με κηλίδες κειμένου και διορθώνει τα ορθογραφικά λάθη.

#Install textblob library !pip install textblob από textblob εισαγωγή TextBlob
Διόρθωση ορθογραφίας
                                                                        Πηγή: Τοπικό

Τεκμηρίωση

Tokenization σημαίνει διαχωρισμός του κειμένου σε λέξεις με νόημα. Υπάρχουν δείκτες προτάσεων καθώς και δείκτες λέξεων.

Το Sentence tokenizer διαχωρίζει μια παράγραφο σε προτάσεις με νόημα, ενώ το word tokenizer διαχωρίζει μια πρόταση σε λέξεις μονάδας με νόημα. Πολλές βιβλιοθήκες μπορούν να εκτελούν tokenization όπως οι SpaCy, NLTK και TextBlob.

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

import nltk mystring = "Το αγαπημένο μου ζώο είναι η γάτα" nltk.word_tokenize(mystring)
mystring.split(" ")

παραγωγή:

['Μου', 'αγαπημένο', 'ζώο', 'είναι', 'Γάτα']

Βλάστηση

Το Stemming είναι η μετατροπή λέξεων στη ρίζα τους χρησιμοποιώντας κάποιο σύνολο κανόνων ανεξαρτήτως σημασίας. Δηλ.,

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

Ο απλούστερος τρόπος για να εκτελέσετε το stemming είναι να χρησιμοποιήσετε το NLTK ή μια βιβλιοθήκη TextBlob.

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

εισαγωγή nltk από nltk.stem εισαγωγή PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(λέξη) προς λέξη σε x.split()]))
Βλάστηση
Πηγή: τοπική

Το "άρθρο" προέρχεται από "articl","lives" — -> "live".

Εξευγενισμός

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

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

Δηλαδή. leafs Προήλθε σε. φύλλων μίσχων προς leav ενώ leafs , leaves ληματοποιημένος να leaf

Η Lemmatization μπορεί να γίνει χρησιμοποιώντας τη βιβλιοθήκη NLTK, TextBlob.

Λεμματοποίηση
                                                                                                 Πηγή: τοπική

Λεμματοποιήστε ολόκληρο το σύνολο δεδομένων.

Λεμματοποίηση 2 | NLP Tutorials
                                                                                                   Πηγή: τοπική

Βήμα 2 Διερευνητική Ανάλυση Δεδομένων

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

Συχνότητα λέξεων στα δεδομένα

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

nltk παρέχει Freq_dist κλάση για τον υπολογισμό της συχνότητας των λέξεων και χρειάζεται μια τσάντα λέξεων ως είσοδο.

all_words = [] για πρόταση σε df['processed']: all_words.extend(sentence.split())

all_words Περιέχει όλες τις λέξεις που είναι διαθέσιμες στο σύνολο δεδομένων μας. Συχνά το ονομάζουμε λεξιλόγιο.

εισαγωγή nltk nltk.Freq_dist(all_words)
Συχνότητα λέξεων σε δεδομένα
                                                                                                 Πηγή: Τοπικό

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

λέξη σύννεφο

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

Η βιβλιοθήκη wordcloud Ας δημιουργήσουμε ένα σύννεφο λέξεων σε λίγες γραμμές κώδικα.

εισαγωγή βιβλιοθηκών:

από εισαγωγή wordcloud WordCloud από εισαγωγή wordcloud STOPWORDS εισαγωγή matplotlib.pyplot ως plt

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

λέξεις = [] για μήνυμα σε df['επεξεργασμένο']: words.extend([λέξη προς λέξη στο message.split() εάν η λέξη δεν είναι στα STOPWORDS]) wordcloud = WordCloud(πλάτος = 1000, ύψος = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
Σύννεφο λέξεων | NLP Tutorials
                                                             Πηγή: Τοπικό
  • background_color = 'white' χρησιμοποιώντας αυτήν την παράμετρο, μπορούμε να αλλάξουμε το χρώμα φόντου της λέξης σύννεφο.
  • collocations = False Διατηρώντας το ως Λάθος θα αγνοηθούν οι λέξεις συντοπισμού. Οι συνθέσεις είναι εκείνες οι λέξεις που σχηματίζονται από εκείνες τις λέξεις που εμφανίζονται μαζί. Δηλ. προσοχή, δουλειές στο σπίτι κ.λπ.
  • Μπορούμε να προσαρμόσουμε το ύψος και το πλάτος χρησιμοποιώντας τις παραμέτρους.

Note : Προτού δημιουργήσετε τη λέξη σύννεφο, αφαιρείτε πάντα τις ενδιάμεσες λέξεις.

Σημειώσεις τέλους

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

Στο δεύτερο άρθρο αυτής της σειράς, θα μάθουμε τα ακόλουθα θέματα:

Πηγή: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

Σφραγίδα ώρας:

Περισσότερα από Ανάλυση Vidhya