Natuurlijke taalverwerking is een aspect van machine learning waarmee u geschreven woorden kunt verwerken tot een machinevriendelijke taal. Dergelijke teksten kunnen vervolgens worden aangepast en u kunt er naar believen rekenalgoritmen op uitvoeren.

De logica achter deze boeiende technologie lijkt ingewikkeld, maar is het niet. En zelfs nu, met een goed begrip van de basisprogrammering van Python, kun je een nieuwe doe-het-zelf-tekstverwerker maken met de natuurlijke taal-toolkit (NLTK).

Hier leest u hoe u aan de slag gaat met Python's NLTK.

Wat is NLTK en hoe werkt het?

NLTK is geschreven met Python en biedt een verscheidenheid aan stringmanipulerende functionaliteiten. Het is een veelzijdige natuurlijke taalbibliotheek met een uitgebreide modelrepository voor verschillende natuurlijke taaltoepassingen.

Met NLTK kunt u onbewerkte teksten verwerken en er betekenisvolle functies uit halen. Het biedt ook tekstanalysemodellen, op functies gebaseerde grammatica's en uitgebreide lexicale bronnen voor het bouwen van een compleet taalmodel.

instagram viewer

NLTK instellen

Maak eerst een projecthoofdmap waar dan ook op uw pc. Om de NLTK-bibliotheek te gaan gebruiken, opent u uw terminal naar de hoofdmap die u eerder hebt gemaakt en een virtuele omgeving creëren.

Installeer vervolgens de toolkit voor natuurlijke taal in deze omgeving met behulp van Pip:

pip install nltk

NLTK beschikt echter over een verscheidenheid aan datasets die als basis dienen voor nieuwe natuurlijke taalmodellen. Om toegang te krijgen, moet je de ingebouwde NLTK-gegevensdownloader starten.

Dus, zodra je NLTK met succes hebt geïnstalleerd, open je je Python-bestand met een code-editor.

Importeer vervolgens de nltk module en start de gegevensdownloader met behulp van de volgende code:

pip install nltk
nltk.download()

Als u de bovenstaande code via de terminal uitvoert, wordt een grafische gebruikersinterface weergegeven voor het selecteren en downloaden van datapakketten. Hier moet je een pakket kiezen en op de. klikken Downloaden knop om het te krijgen.

Elk gegevenspakket dat u downloadt, gaat naar de opgegeven map die is geschreven in de Directory downloaden veld. U kunt dit desgewenst wijzigen. Maar probeer de standaardlocatie op dit niveau te behouden.

Verwant: De beste gratis code-editors voor het schrijven van uw eerste app

Opmerking: De datapakketten worden standaard toegevoegd aan de systeemvariabelen. U kunt ze dus blijven gebruiken voor volgende projecten, ongeacht de Python-omgeving die u gebruikt.

NLTK-tokenizers gebruiken

Uiteindelijk biedt NLTK getrainde tokenizing-modellen voor woorden en zinnen. Met deze tools kunt u een lijst met woorden uit een zin genereren. Of verander een alinea in een zinvolle zinsreeks.

Hier is een voorbeeld van het gebruik van de NLTK word_tokenizer:

import nltk
van nltk.tokenize import word_tokenize
word = "Dit is een voorbeeldtekst"
tokenWord = word_tokenizer (woord)
afdrukken (tokenWord)
Uitgang:
['Dit', 'is', 'een', 'voorbeeld', 'tekst']

NLTK gebruikt ook een vooraf getrainde zin-tokenizer genaamd PunktSentenceTokenizer. Het werkt door een alinea op te delen in een lijst met zinnen.

Laten we eens kijken hoe dit werkt met een alinea van twee zinnen:

import nltk
van nltk.tokenize import word_tokenize, PunktSentenceTokenizer
zin = "Dit is een voorbeeldtekst. Dit is een tutorial voor NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (zin)
print (tokenized_sentence)
Uitgang:
['Dit is een voorbeeldtekst.', 'Dit is een tutorial voor NLTK']

U kunt elke zin in de array die is gegenereerd op basis van de bovenstaande code verder tokeniseren met behulp van word_tokenizer en Python voor lus.

Voorbeelden van het gebruik van NLTK

Dus hoewel we niet alle mogelijke use-cases van NLTK kunnen demonstreren, zijn hier een paar voorbeelden van hoe je het kunt gaan gebruiken om echte problemen op te lossen.

Krijg woorddefinities en hun woordsoorten

NLTK biedt modellen voor het bepalen van woordsoorten, het verkrijgen van gedetailleerde semantiek en mogelijk contextueel gebruik van verschillende woorden.

U kunt de wordnet model om variabelen voor een tekst te genereren. Bepaal vervolgens de betekenis en woordsoort.

Laten we bijvoorbeeld eens kijken naar de mogelijke variabelen voor "Monkey:"

import nltk
van nltk.corpus importeer wordnet als wn
print (wn.synsets('aap'))
Uitgang:
[Synset('aap.n.01'), Synset('imp.n.02'), Synset('tamper.v.01'), Synset('putter.v.02')]

De bovenstaande code geeft mogelijke woordalternatieven of syntaxis en woordsoorten voor "Aap".

Controleer nu de betekenis van "Aap" met behulp van de definitie methode:

Monkey = wn.synset('monkey.n.01').definition()
Uitgang:
een van de verschillende langstaart primaten (met uitzondering van de halfapen)

U kunt de tekenreeks tussen haakjes vervangen door andere gegenereerde alternatieven om te zien wat NLTK uitvoert.

De pos_tag model bepaalt echter de woordsoorten van een woord. U kunt dit gebruiken met de word_tokenizer of PunktSentenceTokenizer() als je te maken hebt met langere alinea's.

Zo werkt dat:

import nltk
van nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Dit is een voorbeeldtekst. Dit is een tutorial over NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (woord)
voor i in tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Uitgang:
[('Dit', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('voorbeeld', 'NN'), ('tekst', 'NN'), ('.', '.')]
[('Dit', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('aan', 'IN'), ('NLTK', 'NNP')]

De bovenstaande code koppelt elk tokenized woord met zijn spraaklabel in een tupel. U kunt de betekenis van deze tags controleren op Penn Treebank.

Voor een schoner resultaat kunt u de punten in de uitvoer verwijderen met de vervangen() methode:

voor i in tokenized_sentence:
tokenWordArray = word_tokenize (i.replace('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Schonere output:
[('Dit', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('voorbeeld', 'NN'), ('tekst', 'NN') ]
[('Dit', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('aan', 'IN'), ('NLTK', 'NNP')]

Functietrends visualiseren met NLTK-plot

Het extraheren van functies uit onbewerkte teksten is vaak vervelend en tijdrovend. Maar u kunt de sterkste kenmerkbepalers in een tekst bekijken met behulp van de NLTK-frequentieverdelingstrendplot.

NLTK synchroniseert echter met matplotlib. U kunt dit gebruiken om een ​​specifieke trend in uw gegevens te bekijken.

De onderstaande code vergelijkt bijvoorbeeld een reeks positieve en negatieve woorden op een distributieplot met behulp van hun laatste twee alfabetten:

import nltk
van nltk import ConditionalFreqDist
Lijsten met negatieve en positieve woorden:
negatieven = [
'abnormaal', 'afschaffen', 'verschrikkelijk',
'afschuwelijk', 'afschuwelijk', 'gruwel'
]
positieven = [
'overvloedig', 'overvloedig', 'overvloed',
'overvloedig', 'toegankelijk', 'toegankelijk'
]
# Verdeel de items in elke array in gelabelde tupple-paren
# en combineer beide arrays:
pos_negData = ([("negative", neg) voor neg in negatieven]+[("positieve", pos) voor pos in positieven])
# Extraheer de laatste twee alfabetten uit de resulterende array:
f = ((pos, i[-2:],) voor (pos, i) in pos_negData)
# Maak een distributieplot van deze alfabetten
cfd = ConditionalFreqDist (f)
cfd.plot()

De alfabetdistributieplot ziet er als volgt uit:

Kijk goed naar de grafiek, woorden die eindigen op ce, ds, le, nd, en nt hebben een grotere kans om positieve teksten te zijn. Maar degenen die eindigen met al, ly, Aan, en te zijn waarschijnlijker negatieve woorden.

Opmerking:Hoewel we hier zelf gegenereerde gegevens hebben gebruikt, kunt u toegang krijgen tot enkele van de ingebouwde datasets van de NLTK met behulp van de Corpus-lezer door ze op te roepen vanuit de corpus klas van nltk. Misschien wil je kijken naar de corpus pakket documentatie om te zien hoe u het kunt gebruiken.

Met de opkomst van technologieën zoals Alexa, spamdetectie, chatbots, sentimentanalyse en meer, lijkt natuurlijke taalverwerking te evolueren naar een submenselijke fase. Hoewel we in dit artikel slechts een paar voorbeelden hebben bekeken van wat NLTK biedt, heeft de tool meer geavanceerde toepassingen die verder gaan dan het bestek van deze zelfstudie.

Na het lezen van dit artikel zou u een goed idee moeten hebben van hoe u NLTK op basisniveau kunt gebruiken. Het enige dat u nu nog hoeft te doen, is deze kennis zelf in praktijk brengen!

DeelTweetenE-mail
7 Machine Learning-bibliotheken voor aspirant-experts

Geïnteresseerd in het vakgebied Machine Learning? Ga aan de slag met deze bibliotheken.

Lees volgende

Gerelateerde onderwerpen
  • Programmeren
  • Python
  • Programmeertalen
  • Programmeren
Over de auteur
Idowu Omisola (96 artikelen gepubliceerd)

Idowu is gepassioneerd door alles wat slimme technologie en productiviteit betreft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij vindt het ook heerlijk om af en toe uit de routine te stappen. Zijn passie om mensen de weg te wijzen in moderne technologie motiveert hem om meer te schrijven.

Meer van Idowu Omisola

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren