Python

NLTK Tutorial i Python

NLTK Tutorial i Python
Datas æra er allerede her. Den hastighed, hvormed data genereres i dag, er højere end nogensinde, og de vokser altid. For det meste arbejder de mennesker, der beskæftiger sig med data hverdag, for det meste med ustrukturerede tekstdata. Nogle af disse data har tilknyttede elementer som billeder, videoer, lyd osv. Nogle af kilderne til disse data er websteder, daglige blogs, nyhedswebsteder og mange flere. Det er nødvendigt at analysere alle disse data i en hurtigere hastighed, og det er også meget tid, også afgørende.

For eksempel kan en virksomhed køre en tekstanalysemotor, der behandler tweets om sin virksomhed, der nævner firmanavn, placering, proces og analyserer følelser relateret til denne tweet. Korrekte handlinger kan træffes hurtigere, hvis virksomheden får kendskab til voksende negative tweets for den på et bestemt sted for at redde sig selv fra en bommert eller noget andet. Et andet almindeligt eksempel er for Youtube. Youtube-administratorer og moderatorer lærer at vide om effekten af ​​en video afhængigt af typen af ​​kommentarer, der er fremsat til en video eller videochatbeskederne. Dette vil hjælpe dem med at finde upassende indhold på hjemmesiden meget hurtigere, for nu har de udryddet det manuelle arbejde og ansat automatiserede smarte tekstanalysebots.

I denne lektion vil vi studere nogle af begreberne relateret til tekstanalyse ved hjælp af NLTK-biblioteket i Python. Nogle af disse begreber vil involvere:

NLP vil være hovedfokusområdet i denne lektion, da det gælder for enorme virkelige scenarier, hvor det kan løse store og afgørende problemer. Hvis du synes, det lyder komplekst, gør det det, men begreberne er lige så lette at forstå, hvis du prøver eksempler side om side. Lad os hoppe over installation af NLTK på din maskine for at komme i gang med det.

Installation af NLTK

Bare en note, før du starter, kan du bruge et virtuelt miljø til denne lektion, som vi kan lave med følgende kommando:

python -m virtualenv nltk
kilde nltk / bin / aktiver

Når det virtuelle miljø er aktivt, kan du installere NLTK-biblioteket i den virtuelle env, så eksempler, vi opretter næste, kan udføres:

pip install nltk

Vi bruger Anaconda og Jupyter i denne lektion. Hvis du vil installere det på din maskine, skal du se på lektionen, der beskriver “Sådan installeres Anaconda Python på Ubuntu 18.04 LTS ”og del din feedback, hvis du står over for problemer. For at installere NLTK med Anaconda skal du bruge følgende kommando i terminalen fra Anaconda:

conda install -c anaconda nltk

Vi ser noget som dette, når vi udfører ovenstående kommando:

Når alle de nødvendige pakker er installeret og færdige, kan vi komme i gang med at bruge NLTK-biblioteket med følgende importerklæring:

import nltk

Lad os komme i gang med grundlæggende NLTK-eksempler, nu hvor vi har forudsætningspakkerne installeret.

Tokenisering

Vi starter med tokenisering, som er det første skridt i udførelsen af ​​tekstanalyse. Et token kan være en hvilken som helst mindre del af et stykke tekst, der kan analyseres. Der er to typer tokenisering, der kan udføres med NLTK:

Du kan gætte, hvad der sker på hver af tokeniseringen, så lad os dykke ned i kodeeksempler.

Sætningstokenisering

Som navnet afspejler, bryder Sentence Tokenizers et stykke tekst i sætninger. Lad os prøve et simpelt kodestykke til det samme, hvor vi bruger en tekst, vi valgte fra Apache Kafka tutorial. Vi udfører den nødvendige import

import nltk
fra nltk.tokenize import sent_tokenize

Bemærk, at du muligvis står over for en fejl på grund af manglende afhængighed af kaldet nltk punkt. Tilføj følgende linje lige efter importen i programmet for at undgå advarsler:

nltk.download ('punkt')

For mig gav det følgende output:

Dernæst bruger vi sætningstokeneren, vi importerede:

text = "" "Et emne i Kafka er noget, hvor en besked sendes. Forbrugeren
applikationer, der er interesserede i dette emne, trækker beskeden inde i det
emne og kan gøre alt med disse data. Op til et bestemt tidspunkt, et hvilket som helst antal
forbrugerapplikationer kan trække denne besked et vilkårligt antal gange."" "
sætninger = sent_tokenize (tekst)
print (sætninger)

Vi ser noget som dette, når vi udfører ovenstående script:

Som forventet var teksten korrekt organiseret i sætninger.

Ordtokenisering

Som navnet afspejler, bryder Word Tokenizers et stykke tekst i ord. Lad os prøve et simpelt kodestykke til det samme med den samme tekst som det foregående eksempel:

fra nltk.tokenize import word_tokenize
ord = ord_tokenize (tekst)
print (ord)

Vi ser noget som dette, når vi udfører ovenstående script:

Som forventet var teksten ordnet ordentligt.

Frekvensfordeling

Nu hvor vi har brudt teksten, kan vi også beregne hyppigheden af ​​hvert ord i den tekst, vi brugte. Det er meget simpelt at gøre med NLTK, her er det kodestykke, vi bruger:

fra nltk.sandsynlighedsimport FreqDist
distribution = FreqDist (ord)
print (distribution)

Vi ser noget som dette, når vi udfører ovenstående script:

Dernæst kan vi finde de mest almindelige ord i teksten med en simpel funktion, der accepterer antallet af ord, der skal vises:

# Mest almindelige ord
fordeling.mest almindelige (2)

Vi ser noget som dette, når vi udfører ovenstående script:

Endelig kan vi lave et frekvensfordelingsdiagram for at rydde ordene og deres antal i den givne tekst og tydeligt forstå fordelingen af ​​ord:

Stopord

Ligesom når vi snakker med en anden person via et opkald, er der en tendens til at være noget støj over opkaldet, som er uønsket information. På samme måde indeholder tekst fra den virkelige verden også støj, der betegnes som Stopord. Stopord kan variere fra sprog til sprog, men de kan let identificeres. Nogle af stopordene på engelsk kan være - er, er, en, den, en osv.

Vi kan se på ord, der betragtes som stopord af NLTK for engelsk med følgende kodestykke:

fra nltk.corpus import stopord
nltk.download ('stopord')
sprog = "engelsk"
stop_words = sæt (stopord.ord (sprog))
udskriv (stop_words)

Da sæt af stopord naturligvis kan være stort, gemmes det som et separat datasæt, som kan downloades med NLTK som vist ovenfor. Vi ser noget som dette, når vi udfører ovenstående script:

Disse stopord bør fjernes fra teksten, hvis du vil udføre en præcis tekstanalyse for det tekststykke, der leveres. Lad os fjerne stopordene fra vores tekstlige tokens:

filtreret_ord = []
til ord i ord:
hvis ord ikke er i stop_words:
filtrerede_ord.tilføje (ord)
filtrerede_ord

Vi ser noget som dette, når vi udfører ovenstående script:

Word Stemming

En stamme af et ord er grundlaget for dette ord. For eksempel:

Vi udfører stemming på de filtrerede ord, hvorfra vi fjernede stopord i det sidste afsnit. Lad os skrive et simpelt kodestykke, hvor vi bruger NLTKs stemmer til at udføre operationen:

fra nltk.stammeimport PorterStemmer
ps = PorterStemmer ()
stemmed_words = []
for ord i filtrerede_ord:
stammede_ord.tilføje (ps.stamme (ord))
print ("Stemmed Sentence:", stemmed_words)

Vi ser noget som dette, når vi udfører ovenstående script:

POS-tagging

Næste trin i tekstanalyse er efter stemming at identificere og gruppere hvert ord med hensyn til deres værdi, dvs.e. hvis hvert af ordet er et substantiv eller et verbum eller noget andet. Dette betegnes som en del af talemærkning. Lad os udføre POS-tagging nu:

tokens = nltk.word_tokenize (sætninger [0])
print (tokens)

Vi ser noget som dette, når vi udfører ovenstående script:

Nu kan vi udføre mærkning, som vi bliver nødt til at downloade et andet datasæt for at identificere de korrekte tags:

nltk.download ('averaged_perceptron_tagger')
nltk.pos_tag (tokens)


Her er output af taggingen:

Nu hvor vi endelig har identificeret de taggede ord, er dette datasættet, hvor vi kan udføre sentimentanalyse for at identificere følelserne bag en sætning.

Konklusion

I denne lektion så vi på en fremragende naturlig sprogpakke, NLTK, der giver os mulighed for at arbejde med ustrukturerede tekstdata for at identificere eventuelle stopord og udføre dybere analyser ved at forberede et skarpt datasæt til tekstanalyse med biblioteker som sklearn.

Find al kildekoden, der blev brugt i denne lektion, på Github. Del din feedback på lektionen på Twitter med @sbmaggarwal og @LinuxHint.

Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...
Mus Museklik på venstre museknap fungerer ikke på Windows 10
Museklik på venstre museknap fungerer ikke på Windows 10
Hvis du bruger en dedikeret mus med din bærbare computer eller stationære computer, men musens venstre-klik-knap fungerer ikke på Windows 10/8/7 af en...