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:
- Tokenisering, hvordan man deler et stykke tekst i ord, sætninger
- Undgå stopord baseret på engelsk
- Udfører stemming og lemmatisering på et stykke tekst
- Identificering af de tokens, der skal analyseres
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 nltkkilde 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 nltkVi 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 nltkVi 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 nltkLad 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:
- Sætningstokenisering
- Ordtokenisering
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 nltkfra 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. Forbrugerenapplikationer, 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_tokenizeord = 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 FreqDistdistribution = 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 ordfordeling.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 stopordnltk.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 PorterStemmerps = 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.