Python

NLTK-zelfstudie in Python

NLTK-zelfstudie in Python
Het datatijdperk is al aangebroken. De snelheid waarmee de gegevens tegenwoordig worden gegenereerd, is hoger dan ooit en groeit altijd. Meestal werken de mensen die dagelijks met gegevens omgaan meestal met ongestructureerde tekstuele gegevens. Sommige van deze gegevens hebben bijbehorende elementen zoals afbeeldingen, video's, audio enz. Enkele van de bronnen van deze gegevens zijn websites, dagelijkse blogs, nieuwswebsites en nog veel meer. Het sneller analyseren van al deze gegevens is noodzakelijk en veel tijd, ook cruciaal.

Een bedrijf kan bijvoorbeeld een tekstanalyse-engine gebruiken die de tweets over zijn bedrijf verwerkt met vermelding van de bedrijfsnaam, locatie, het verwerken en analyseren van de emotie met betrekking tot die tweet. Correcte acties kunnen sneller worden ondernomen als dat bedrijf te weten komt over het groeien van negatieve tweets voor het op een bepaalde locatie om zichzelf te redden van een blunder of iets anders. Een ander veelvoorkomend voorbeeld is voor: Youtube. De YouTube-beheerders en -moderators leren het effect van een video kennen, afhankelijk van het type opmerkingen dat op een video of de videochatberichten wordt gemaakt. Hierdoor kunnen ze veel sneller ongepaste inhoud op de website vinden, omdat ze nu het handmatige werk hebben uitgeroeid en geautomatiseerde slimme tekstanalyse-bots hebben gebruikt.

In deze les zullen we enkele concepten bestuderen die verband houden met tekstanalyse met behulp van de NLTK-bibliotheek in Python. Sommige van deze concepten zullen betrekking hebben op:

NLP zal het belangrijkste aandachtsgebied zijn in deze les, omdat het toepasbaar is op enorme real-life scenario's waar het grote en cruciale problemen kan oplossen. Als je denkt dat dit ingewikkeld klinkt, dan is dat ook zo, maar de concepten zijn even gemakkelijk te begrijpen als je voorbeelden naast elkaar probeert. Laten we beginnen met het installeren van NLTK op uw computer om ermee aan de slag te gaan.

NLTK . installeren

Even een opmerking voordat je begint, je kunt voor deze les een virtuele omgeving gebruiken die we kunnen maken met het volgende commando:

python -m virtualenv nltk
bron nltk/bin/activate

Zodra de virtuele omgeving actief is, kunt u de NLTK-bibliotheek binnen de virtuele omgeving installeren, zodat de voorbeelden die we vervolgens maken, kunnen worden uitgevoerd:

pip install nltk

We zullen in deze les gebruik maken van Anaconda en Jupyter. Als je het op je computer wilt installeren, kijk dan naar de les die beschrijft "Hoe Anaconda Python op Ubuntu 18 te installeren".04 LTS" en deel uw feedback als u problemen ondervindt. Om NLTK met Anaconda te installeren, gebruik je de volgende opdracht in de terminal van Anaconda:

conda install -c anaconda nltk

We zien zoiets als dit wanneer we het bovenstaande commando uitvoeren:

Zodra alle benodigde pakketten zijn geïnstalleerd en klaar zijn, kunnen we aan de slag met het gebruik van de NLTK-bibliotheek met de volgende importverklaring:

import nltk

Laten we beginnen met basis-NLTK-voorbeelden nu we de vereiste pakketten hebben geïnstalleerd.

Tokenisatie

We beginnen met tokenisatie, wat de eerste stap is bij het uitvoeren van tekstanalyse. Een token kan elk kleiner deel van een stuk tekst zijn dat kan worden geanalyseerd. Er zijn twee soorten tokenisatie die met NLTK kunnen worden uitgevoerd:

Je kunt raden wat er op elk van de tokenisaties gebeurt, dus laten we in codevoorbeelden duiken.

Zintokenisatie

Zoals de naam al aangeeft, breekt Sentence Tokenizers een stuk tekst op in zinnen. Laten we een eenvoudig codefragment proberen voor hetzelfde waar we gebruik maken van een tekst die we hebben gekozen uit de Apache Kafka-zelfstudie. Wij voeren de nodige importen uit

import nltk
van nltk.tokenize import sent_tokenize

Houd er rekening mee dat er een fout kan optreden vanwege een ontbrekende afhankelijkheid voor nltk genaamd punker. Voeg de volgende regel direct na de import in het programma toe om waarschuwingen te voorkomen:

nltk.downloaden('punkt')

Bij mij gaf het de volgende output:

Vervolgens maken we gebruik van de zin-tokenizer die we hebben geïmporteerd:

text = """Een onderwerp in Kafka is iets waar een bericht naar wordt verzonden. De consument
toepassingen die in dat onderwerp geïnteresseerd zijn, halen de boodschap daarin naar binnen
onderwerp en kan alles met die gegevens. Tot een bepaalde tijd, een willekeurig aantal
consumententoepassingen kunnen dit bericht een willekeurig aantal keren ophalen."""
zinnen = sent_tokenize(tekst)
afdrukken (zinnen)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Zoals verwacht was de tekst correct ingedeeld in zinnen.

Woord tokenisatie

Zoals de naam al aangeeft, breekt Word Tokenizers een stuk tekst in woorden. Laten we een eenvoudig codefragment proberen met dezelfde tekst als in het vorige voorbeeld:

van nltk.tokenize import word_tokenize
woorden = word_tokenize(tekst)
afdrukken (woorden)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Zoals verwacht was de tekst correct in woorden ingedeeld.

Frequentieverdeling

Nu we de tekst hebben gebroken, kunnen we ook de frequentie berekenen van elk woord in de tekst die we hebben gebruikt. Het is heel eenvoudig te doen met NLTK, hier is het codefragment dat we gebruiken:

van nltk.waarschijnlijkheidsimport FreqDist
distributie = FreqDist(woorden)
print(distributie)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Vervolgens kunnen we de meest voorkomende woorden in de tekst vinden met een eenvoudige functie die het aantal te tonen woorden accepteert:

# Meest voorkomende woorden
distributie.meest_gemeenschappelijk(2)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Ten slotte kunnen we een frequentieverdelingsplot maken om de woorden en hun aantal in de gegeven tekst te wissen en de verdeling van woorden duidelijk te begrijpen:

stopwoorden

Net zoals wanneer we met een andere persoon praten via een oproep, is er meestal wat ruis tijdens de oproep, wat ongewenste informatie is. Op dezelfde manier bevat tekst uit de echte wereld ook ruis die wordt genoemd als stopwoorden. Stopwoorden kunnen van taal tot taal verschillen, maar ze kunnen gemakkelijk worden geïdentificeerd. Sommige stopwoorden in de Engelse taal kunnen zijn - is, zijn, a, the, an etc.

We kunnen kijken naar woorden die door NLTK worden beschouwd als stopwoorden voor de Engelse taal met het volgende codefragment:

van nltk.corpus import stopwoorden
nltk.download('stopwoorden')
taal = "engels"
stop_words = set(stopwoorden.woorden (taal))
print(stop_words)

Omdat de set stopwoorden natuurlijk groot kan zijn, wordt deze opgeslagen als een aparte dataset die kan worden gedownload met NLTK zoals we hierboven hebben getoond. We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Deze stopwoorden moeten uit de tekst worden verwijderd als u een nauwkeurige tekstanalyse wilt uitvoeren voor het aangeleverde stuk tekst. Laten we de stopwoorden uit onze tekstuele tokens verwijderen:

gefilterde_woorden = []
voor woord in woorden:
indien woord niet in stop_words:
gefilterde_woorden.toevoegen (woord)
gefilterde_woorden

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Woord stammen

Een stam van een woord is de basis van dat woord. Bijvoorbeeld:

We zullen stammen uitvoeren op de gefilterde woorden waaruit we stopwoorden in de laatste sectie hebben verwijderd. Laten we een eenvoudig codefragment schrijven waarin we de stemmer van NLTK gebruiken om de bewerking uit te voeren:

van nltk.stuurpen import PorterStemmer
ps = PorterStemmer()
stemmed_words = []
voor woord in gefilterde_woorden:
stemmed_words.toevoegen (ps.stam (woord))
print("Stemmed Zin:", stemmed_words)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

POS-tagging

De volgende stap in tekstanalyse is om na stammen elk woord te identificeren en te groeperen in termen van hun waarde, i.e. als elk woord een zelfstandig naamwoord of een werkwoord of iets anders is. Dit wordt Part of Speech tagging genoemd. Laten we nu POS-tagging uitvoeren:

tokens=nltk.word_tokenize(zinnen[0])
afdrukken (penningen)

We zien zoiets als dit wanneer we het bovenstaande script uitvoeren:

Nu kunnen we de tagging uitvoeren, waarvoor we een andere dataset moeten downloaden om de juiste tags te identificeren:

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


Hier is de uitvoer van de tagging:

Nu we eindelijk de getagde woorden hebben geïdentificeerd, is dit de dataset waarop we sentimentanalyse kunnen uitvoeren om de emoties achter een zin te identificeren.

Conclusie

In deze les hebben we gekeken naar een uitstekend pakket voor natuurlijke taal, NLTK, waarmee we met ongestructureerde tekstuele gegevens kunnen werken om eventuele stopwoorden te identificeren en een diepere analyse uit te voeren door een scherpe gegevensset voor tekstanalyse voor te bereiden met bibliotheken zoals sklearn.

Vind alle broncode die in deze les wordt gebruikt op Github. Deel uw feedback over de les op Twitter met @sbmaggarwal en @LinuxHint.

Hoe Xdotool te gebruiken om muisklikken en toetsaanslagen in Linux te stimuleren
Xdotool is een gratis en open source opdrachtregelprogramma voor het simuleren van muisklikken en toetsaanslagen. Dit artikel behandelt een korte hand...
Top 5 ergonomische computermuisproducten voor Linux
Veroorzaakt langdurig computergebruik pijn in uw pols of vingers?? Heb je last van stijve gewrichten en moet je constant de hand schudden?? Voelt u ee...
Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...