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:
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()))
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.
string.punctuation
returnerer en streng, der indeholder alle tegnsætninger.
Fjernelse af tegnsætning vha regulære udtryk:
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))
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
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()]))
"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.
Lemmatiser hele datasættet.
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)
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()
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/
- "
- &
- Om
- Alle
- analyse
- omkring
- artikel
- artikler
- til rådighed
- Taske med ord
- Grundlæggende
- blogs
- ringe
- odds
- lave om
- Rengøring
- Cloud
- kode
- Kodning
- kommentarer
- Datalogi
- computere
- data
- dataanalyse
- dyb læring
- forskellige
- Er ikke
- Drop
- effektivitet
- Engelsk
- etc.
- evolution
- Fornavn
- Fix
- følger
- generere
- få
- hjælpe
- hjælper
- historie
- Home
- HTTPS
- idé
- vigtigt
- forbedring
- individuel
- oplysninger
- IT
- holde
- Keras
- Nøgle
- Sprog
- laptop
- LÆR
- læring
- lemmatisering
- Bibliotek
- machine learning
- Making
- medium
- model
- mere
- NLP
- Betal
- Populær
- forudsigelse
- giver
- Python
- Raw
- rådata
- Læsning
- reducere
- erstatte
- Resultater
- afkast
- Anmeldelser
- regler
- Videnskab
- Series
- sæt
- Størrelse
- So
- Space
- starte
- forblive
- Stem
- taler
- teknikker
- tensorflow
- sammen
- tokenization
- Emner
- Kurser
- tutorials
- us
- sædvanligvis
- værdi
- ord
- virker
- X
- nul