NLP tutorials del -I fra Basics til Advance

Kildeknude: 1581227

Jeg har besluttet at skrive en række artikler, der forklarer alt det grundlæggende til de avancerede begreber i NLP ved hjælp af python. Så hvis du vil lære NLP ved at læse det og kode, vil dette være en perfekt serie af artikler til dig.

Enhver ny eller nul i NLP kan starte med os og følge denne serie af artikler.

Brugte biblioteker: Keras, Tensorflow, Scikit learning, NLTK, Glove osv.

Alle emner vil blive forklaret ved hjælp af koder for python og populære deep learning- og maskinlæringsrammer, såsom sci-kit learning, Keras og TensorFlow.

Hvad er NLP?

Naturlig sprogbehandling er en del af datalogi, der gør det muligt for computere at forstå sprog naturligt, som en person gør. Det betyder, at den bærbare computer vil forstå følelser, tale, besvare spørgsmål, tekstresuméer osv. Vi vil ikke tale meget om dens historie og udvikling. Hvis du er interesseret, foretrækker du dette .

Trin 1 Datarensning

De rå tekstdata kommer direkte efter, at de forskellige kilder ikke er renset. Vi anvender flere trin for at gøre data rene. Ikke-rensede tekstdata indeholder ubrugelig information, der afviger fra resultaterne, så det er altid det første skridt at rense dataene. Nogle standard forbehandlingsteknikker bør anvendes for at gøre data renere. Rensede data forhindrer også modeller i at overmontere.

I denne artikel vil vi se følgende emner under tekstbehandling og eksplorativ dataanalyse.

Jeg konverterer de rå tekstdata til en panda-dataramme og udfører forskellige datarensningsteknikker.

import pandas as pd text = ['Dette er NLP-OPGAVER-ARTIKLEN skrevet af ABhishek Jaiswal** ','I denne artikel vil jeg forklare forskellige DATA-RENSE-teknikker', 'Så følg med efter YDERLIGERE MERE &&','Nah Jeg tror ikke, han går til usf, han bor omkring'] df = pd.DataFrame({'text':text})

Output:

Datarensning | NLP tutorials
                                                                                  Kilde: Lokalt

Små bogstaver

Metoden lower()konverterer alle store bogstaver til små bogstaver og returnerer.

Anvendelse lower() metode ved hjælp af lambda-funktion

df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() for x i x.split()))
Små bogstaver | NLP tutorials
                                                                                           Kilde: Lokalt

Fjernelse af tegnsætning 

Fjerner tegnsætning(*,&,%#@#()) er et afgørende skridt, da tegnsætning ikke tilføjer nogen ekstra information eller værdi til vores data. Fjernelse af tegnsætning reducerer derfor datastørrelsen; derfor forbedrer det beregningseffektiviteten.

Dette trin kan udføres ved hjælp af Regex- eller Replace-metoden.

Fjernelse af tegnsætning
                                                                                                 Kilde: Lokalt

string.punctuation returnerer en streng, der indeholder alle tegnsætninger.

Tegnsætning | NLP tutorials
                                                                                               Kilde: Lokalt

Fjernelse af tegnsætning vha regulære udtryk:

Fjernelse af tegnsætning
                                                                                                 Kilde: Lokalt

Stop fjernelse af ord

Ord, der ofte forekommer i sætninger og ikke har nogen væsentlig betydning i sætninger. Disse er ikke vigtige for forudsigelse, så vi fjerner stopord for at reducere datastørrelsen og forhindre overtilpasning. Bemærk: Før du filtrerer stopord, skal du sørge for at skrive data med små bogstaver, da vores stopord er små bogstaver.

Ved at bruge NLTK-biblioteket kan vi filtrere vores stopord fra datasættet.

# !pip install nltk import nltk nltk.download('stopwords') fra nltk.corpus import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() hvis jeg ikke er i allstopwords))
Stop ord Fjernelse
                                                                                          Kilde: Lokalt

Stavekorrektion

De fleste tekstdata, der udvindes i kundeanmeldelser, blogs eller tweets, har nogle chancer for stavefejl.

Korrigering af stavefejl forbedrer modellens nøjagtighed.

Der er forskellige biblioteker til at rette stavefejl, men den mest bekvemme metode er at bruge en tekstklat.

Metoden correct() virker på tekstklatobjekter og retter stavefejlene.

#Installer textblob-bibliotek !pip installer textblob fra textblob-import TextBlob
Stavekorrektion
                                                                        Kilde: Lokalt

tokenization

Tokenisering betyder at opdele tekst i meningsfulde enhedsord. Der er sætnings-tokenizere såvel som ord-tokenizers.

Setningstokenizer opdeler et afsnit i meningsfulde sætninger, mens ordtokenizer opdeler en sætning i enhedsbetydende ord. Mange biblioteker kan udføre tokenisering som SpaCy, NLTK og TextBlob.

At opdele en sætning på mellemrum for at få individuelle enhedsord kan forstås som tokenisering.

import nltk mystring = "Mit yndlingsdyr er kat" nltk.word_tokenize(mystring)
mystring.split(" ")

produktion:

['Min', 'favorit', 'dyr', 'er', 'kat']

Tilsyn

Stemming konverterer ord til deres rodord ved hjælp af et sæt regler uanset betydning. dvs.

  • "fisk", "fisk" og "fiskeri" stammer fra "fisk".
  • "leger", "spillet", skuespil" stammer fra "leg".
  • Stemming hjælper med at reducere ordforrådet og forbedrer dermed nøjagtigheden.

Den enkleste måde at udføre stemming på er at bruge NLTK eller et TextBlob-bibliotek.

NLTK leverer forskellige stammeteknikker, f.eks. Snowball, PorterStemmer; forskellig teknik følger forskellige sæt regler for at konvertere ord til deres rodord.

import nltk fra nltk.stem import PorterStemmer st = PorterStemmer() df['tekst'].apply(lambda x:" ".join([st.stem(ord) for ord i x.split()]))
Tilsyn
Kilde: lokal

"artikel" stammer fra "articl","lives“ — -> “live".

lemmatisering

Lemmatisering er at konvertere ord til deres rodord ved hjælp af ordforrådsmapping. Lematisering sker ved hjælp af ordled og dens betydning; derfor genererer det ikke meningsløse rodord. Men lemmatisering er langsommere end stemming.

  • "godt, ""bedre, "Eller"bedste” er lemmatiseret til ”godt".
  • Lemmatisering vil konvertere alle synonymer til et enkelt rodord. dvs "bil","bil"" lastbil"" køretøjer” lemmatiseres til ”bil”.
  • Lematisering giver normalt bedre resultater.

Dvs.. leafs Stammede til. blade stammede til leav mens leafs , leaves lemmatiseret til leaf

Lemmatisering kan udføres ved hjælp af NLTK, TextBlob-biblioteket.

Lematisering
                                                                                                 Kilde: lokal

Lemmatiser hele datasættet.

Lematisering 2 | NLP tutorials
                                                                                                   Kilde: lokal

Trin 2 Udforskende dataanalyse

Indtil videre har vi set de forskellige tekstforbehandlingsteknikker, der skal udføres efter at have fået rådataene. Efter at have renset vores data, kan vi nu udføre undersøgende dataanalyse og udforske og forstå tekstdataene.

Ordfrekvens i data

At tælle de unikke ord i vores data giver en idé om vores datas hyppigste, mindst hyppige udtryk. Ofte dropper vi de mindst hyppige kommentarer for at gøre vores modeltræning mere generaliseret.

nltk giver Freq_dist klasse til at beregne ordfrekvens, og det kræver en pose ord som input.

all_words = [] for sætning i df['processed']: all_words.extend(sætning.split())

all_words Indeholder alle de ord, der er tilgængelige i vores datasæt. Vi kalder det ofte ordforråd.

import nltk nltk.Freq_dist(alle_ord)
Ordfrekvens i data
                                                                                                 Kilde: Lokalt

Dette viser ordet som nøgle og antallet af forekomster i vores data som værdi.

Word Cloud

Wordcloud er den billedlige repræsentation af datasættets ordfrekvens. WordCloud er lettere at forstå og giver en bedre idé om vores tekstdata.

bibliotek wordcloud Lad os skabe en ordsky i et par linjer kode.

importere biblioteker:

fra wordcloud import WordCloud fra wordcloud import STOPORD importer matplotlib.pyplot som plt

Vi kan tegne en ordsky ved hjælp af tekst, der indeholder alle ordene i vores data.

words = [] for besked i df['processed']: words.extend([ord for ord i message.split() hvis ord ikke er i STOPWORDS]) wordcloud = WordCloud(bredde = 1000, højde = 500).generere( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
Word Cloud | NLP tutorials
                                                             Kilde: Lokalt
  • background_color = 'white' ved at bruge denne parameter kan vi ændre baggrundsfarven på ordskyen.
  • collocations = False Hvis du holder det som Falsk, ignoreres samlokaliseringsordene. Kollokationer er de ord, der er dannet af de ord, der forekommer sammen. Dvs være opmærksom, hjemmearbejde mv.
  • Vi kan justere højde og bredde ved hjælp af parametrene.

Bemærk : Før du laver ordskyen, skal du altid fjerne stopordene.

Slutnoter

I denne artikel så vi forskellige nødvendige teknikker til tekstdataforbehandling. Efter datarensning udførte vi undersøgende dataanalyse ved hjælp af ordsky og skabte en ordfrekvens.

I den anden artikel i denne serie lærer vi følgende emner:

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

Tidsstempel:

Mere fra Analyse Vidhya