Tutoriale NLP Partea -I de la elemente de bază la avansare

Nodul sursă: 1581227

Am decis să scriu o serie de articole care explică toate conceptele de bază până la avansate ale NLP folosind python. Deci, dacă doriți să învățați NLP citindu-l și codând, aceasta va fi o serie perfectă de articole pentru dvs.

Oricine nou sau zero în NLP poate începe cu noi și urmează această serie de articole.

Biblioteci folosite: Keras, Tensorflow, Scikit Learn, NLTK, Glove etc.

Toate subiectele vor fi explicate folosind coduri python și cadre populare de deep learning și machine learning, cum ar fi sci-kit learning, Keras și TensorFlow.

Ce este NLP?

Procesarea limbajului natural este o parte a informaticii care permite computerelor să înțeleagă limbajul în mod natural, așa cum o face o persoană. Aceasta înseamnă că laptopul va înțelege sentimentele, vorbirea, va răspunde la întrebări, va rezuma text etc. Nu vom vorbi prea mult despre istoria și evoluția sa. Dacă ești interesat, preferă asta link-ul.

Pasul 1 Curățarea datelor

Datele text brute vin imediat după ce diferitele surse nu sunt curățate. Aplicăm mai mulți pași pentru a curăța datele. Datele text necurățate conțin informații inutile care deviază rezultatele, așa că este întotdeauna primul pas pentru curățarea datelor. Unele tehnici standard de preprocesare ar trebui aplicate pentru a face datele mai curate. Datele curățate împiedică, de asemenea, modelele să se supraajusteze.

În acest articol, vom vedea următoarele subiecte sub procesarea textului și analiza exploratorie a datelor.

Convertesc datele text brute într-un cadru de date panda și efectuez diverse tehnici de curățare a datelor.

import panda as pd text = ['Acesta este ARTICOLUL DE SARCINI NLP scris de ABhishek Jaiswal** ','ÎN acest articol voi explica diverse tehnici de CURĂȚARE A DATELOR', 'Așa că rămâneți pe fază pentru MAI MULTE &&','Nu Nu cred că merge la usf, trăiește în jur'] df = pd.DataFrame({'text':text})

ieșire:

Curățarea datelor | Tutoriale NLP
                                                                                  Sursa: Local

Minuscule

Metoda lower()convertește toate caracterele majuscule în minuscule și returnează.

Aplicarea lower() metoda folosind funcția lambda

df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() for x in x.split()))
Minuscule | Tutoriale NLP
                                                                                           Sursa: Local

Eliminarea punctuației 

Eliminarea semnelor de punctuație (*,&,%#@#()) este un pas crucial, deoarece punctuația nu adaugă informații suplimentare sau valoare datelor noastre. Prin urmare, eliminarea semnelor de punctuație reduce dimensiunea datelor; prin urmare, îmbunătățește eficiența de calcul.

Acest pas poate fi făcut folosind metoda Regex sau Replace.

Eliminarea punctuației
                                                                                                 Sursa: Local

string.punctuation returnează un șir care conține toate semnele de punctuație.

Punctuația | Tutoriale NLP
                                                                                               Sursa: Local

Eliminarea punctuației folosind expresii obisnuite:

Eliminarea semnelor de punctuație
                                                                                                 Sursa: Local

Opriți eliminarea cuvintelor

Cuvinte care apar frecvent în propoziții și nu au un sens semnificativ în propoziții. Acestea nu sunt importante pentru predicție, așa că eliminăm cuvintele oprite pentru a reduce dimensiunea datelor și a preveni supraadaptarea. Notă: înainte de a filtra cuvintele oprite, asigurați-vă că ați scris cu minuscule datele, deoarece cuvintele noastre oprite sunt litere mici.

Folosind biblioteca NLTK, ne putem filtra cuvintele oprite din setul de date.

# !pip install nltk import nltk nltk.download('stopwords') din nltk.corpus import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() dacă nu sunt în allstopwords))
Eliminarea cuvintelor oprite
                                                                                          Sursa: Local

Corectarea ortografiei

Cele mai multe dintre datele text extrase din recenziile clienților, bloguri sau tweet-uri au anumite șanse de greșeli de ortografie.

Corectarea greșelilor de ortografie îmbunătățește acuratețea modelului.

Există diverse biblioteci pentru a remedia greșelile de ortografie, dar cea mai convenabilă metodă este utilizarea unui blob de text.

Metoda correct() lucrează pe obiecte blob text și corectează greșelile de ortografie.

#Install textblob library !pip install textblob din textblob import TextBlob
Corectarea ortografiei
                                                                        Sursa: Local

tokenizarea

Tokenizarea înseamnă împărțirea textului în cuvinte unitare semnificative. Există tokenizatoare de propoziții, precum și tokenizatoare de cuvinte.

Sentence tokenizer împarte un paragraf în propoziții semnificative, în timp ce word tokenizer împarte o propoziție în unități de cuvinte semnificative. Multe biblioteci pot efectua tokenizare precum SpaCy, NLTK și TextBlob.

Împărțirea unei propoziții pe spațiu pentru a obține cuvinte unități individuale poate fi înțeleasă ca simbolizare.

import nltk mystring = „Animalul meu preferat este pisica” nltk.word_tokenize(mystring)
mystring.split(" ")

ieșire:

[„Meu”, „preferat”, „animal”, „este”, „pisica”]

Pentru a putea reduce

Stemming este convertirea cuvintelor în cuvântul lor rădăcină folosind un set de reguli, indiferent de sens. adica

  • „peștele”, „peștele” și „pescuitul” sunt derivate în „pește”.
  • „playing”, „played”, „plays” sunt derivate în „play”.
  • Stemming ajută la reducerea vocabularului, îmbunătățind astfel acuratețea.

Cel mai simplu mod de a efectua stemming este să utilizați NLTK sau o bibliotecă TextBlob.

NLTK furnizează diverse tehnici de stemming, adică Snowball, PorterStemmer; tehnica diferită urmează diferite seturi de reguli pentru a converti cuvintele în cuvântul lor rădăcină.

import nltk din nltk.stem import PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(word) for word in x.split()]))
Pentru a putea reduce
Sursa: locala

„articol” este derivat în „articl""lives„ — -> „live".

Lematizarea

Lematizarea înseamnă convertirea cuvintelor în cuvântul lor rădăcină folosind maparea vocabularului. Lematizarea se face cu ajutorul unei părți de vorbire și a sensului acesteia; prin urmare, nu generează cuvinte rădăcină fără sens. Dar lematizarea este mai lentă decât stemming.

  • bine, ""mai bine, "Sau"Cel mai bun” este lematizat în „bine".
  • Lematizarea va converti toate sinonimele într-un singur cuvânt rădăcină. adică „auto""mașină"" camion"" vehicule” sunt lematizate în „automobile”.
  • Lematizarea are de obicei rezultate mai bune.

ie. leafs Stăpânit la. frunzele tulpinite la leav în timp ce leafs , leaves lematizat la leaf

Lematizarea se poate face folosind NLTK, biblioteca TextBlob.

Lematizare
                                                                                                 Sursa: locala

Lematizați întregul set de date.

Lematizare 2 | Tutoriale NLP
                                                                                                   Sursa: locala

Pasul 2 Analiza exploratorie a datelor

Până acum, am văzut diferitele tehnici de preprocesare a textului care trebuie făcute după obținerea datelor brute. După ce ne curățăm datele, acum putem efectua o analiză exploratorie a datelor și putem explora și înțelege datele text.

Frecvența cuvintelor în date

Numărarea cuvintelor unice din datele noastre oferă o idee despre termenii cei mai frecventi și mai puțin frecvenți ai datelor noastre. Adesea, renunțăm la comentariile cele mai puțin frecvente pentru a face formarea modelului nostru mai generalizată.

nltk furnizează Freq_dist clasă pentru a calcula frecvența cuvintelor și este nevoie de o pungă de cuvinte ca intrare.

all_words = [] pentru propoziție în df['processed']: all_words.extend(sentence.split())

all_words Conține toate cuvintele disponibile în setul nostru de date. Adesea îi spunem vocabular.

import nltk nltk.Freq_dist(all_words)
Frecvența cuvintelor în date
                                                                                                 Sursa: Local

Aceasta arată cuvântul ca cheie și numărul de apariții din datele noastre ca valoare.

Cloud Word

Wordcloud este reprezentarea picturală a frecvenței cuvintelor din setul de date. WordCloud este mai ușor de înțeles și oferă o idee mai bună despre datele noastre textuale.

bibliotecă wordcloud Să creăm un nor de cuvinte în câteva rânduri de cod.

import biblioteci:

din wordcloud import WordCloud din wordcloud import STOPWORDS import matplotlib.pyplot ca plt

Putem desena un nor de cuvinte folosind text care conține toate cuvintele datelor noastre.

cuvinte = [] pentru mesaj în df['processat']: words.extend([cuvânt cu cuvânt în message.split() dacă cuvântul nu este în STOPWORDS]) wordcloud = WordCloud(lățime = 1000, înălțime = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
Cloud de cuvinte | Tutoriale NLP
                                                             Sursa: Local
  • background_color = 'white' folosind acest parametru, putem schimba culoarea de fundal a norului de cuvinte.
  • collocations = False Păstrând-o ca fals, vor ignora cuvintele de colocare. Colocările sunt acele cuvinte care sunt formate din acele cuvinte care apar împreună. Adică acordați atenție, lucrări la domiciliu etc.
  • Putem regla înălțimea și lățimea folosind parametrii.

notițe : Înainte de a crea un nor de cuvinte, eliminați întotdeauna cuvintele oprite.

Note de sfârșit

În acest articol, am văzut diverse tehnici necesare pentru preprocesarea datelor textuale. După curățarea datelor, am efectuat o analiză exploratorie a datelor folosind un nor de cuvinte și am creat o frecvență a cuvintelor.

În al doilea articol al acestei serii, vom afla următoarele subiecte:

Sursa: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

Timestamp-ul:

Mai mult de la Analize Vidhya