Naturlig sprogbehandling er et aspekt af maskinlæring, der lader dig behandle skrevne ord til et maskinvenligt sprog. Sådanne tekster bliver derefter justerbare, og du kan køre beregningsalgoritmer på dem, som du vil.

Logikken bag denne fængslende teknologi virker kompleks, men er det ikke. Og selv nu, med en solid forståelse af grundlæggende Python -programmering, kan du oprette en ny DIY tekstbehandler med det naturlige sprogværktøj (NLTK).

Sådan kommer du i gang med Pythons NLTK.

Hvad er NLTK, og hvordan fungerer det?

NLTK er skrevet med Python og har en række forskellige strengmanipulerende funktioner. Det er et alsidigt naturligt sprogbibliotek med et stort modelopbevaringssted til forskellige applikationer med naturligt sprog.

Med NLTK kan du behandle rå tekster og udtrække meningsfulde funktioner fra dem. Det tilbyder også tekstanalysemodeller, funktionsbaserede grammatikker og rige leksikale ressourcer til opbygning af en komplet sprogmodel.

Sådan opsættes NLTK

Opret først en projektrodmappe hvor som helst på din pc. For at begynde at bruge NLTK -biblioteket skal du åbne din terminal til rodmappen, du har oprettet tidligere og

instagram viewer
skabe et virtuelt miljø.

Installer derefter det naturlige sprogværktøjssæt i dette miljø ved hjælp af pip:

pip installer nltk

NLTK har imidlertid en række datasæt, der tjener som grundlag for nye modeller for naturligt sprog. For at få adgang til dem skal du spinde den NLTK indbyggede datadownloader op.

Så når du har installeret NLTK, skal du åbne din Python -fil ved hjælp af en hvilken som helst kodeditor.

Importer derefter nltk modul og instantier datadownloaderen ved hjælp af følgende kode:

pip installer nltk
nltk.download ()

Kørsel af ovenstående kode via terminalen giver en grafisk brugergrænseflade til valg og download af datapakker. Her skal du vælge en pakke og klikke på Hent knappen for at få det.

Enhver datapakke, du downloader, går til det angivne bibliotek, der er skrevet i Download bibliotek Mark. Du kan ændre dette, hvis du vil. Men prøv at opretholde standardplaceringen på dette niveau.

Relaterede: De bedste gratis kodeditorer til at skrive din første app

Bemærk: Datapakkerne føjes som standard til systemvariablerne. Så du kan blive ved med at bruge dem til efterfølgende projekter, uanset hvilket Python -miljø du bruger.

Sådan bruges NLTK Tokenizers

I sidste ende tilbyder NLTK uddannede tokeniseringsmodeller for ord og sætninger. Ved hjælp af disse værktøjer kan du generere en liste med ord fra en sætning. Eller omdanne et afsnit til et fornuftigt sætningsmateriale.

Her er et eksempel på, hvordan du bruger NLTK word_tokenizer:

import nltk
fra nltk.tokenize import word_tokenize
word = "Dette er en eksempeltekst"
tokenWord = word_tokenizer (word)
print (tokenWord)
Produktion:
['Dette', 'er', 'et', 'eksempel', 'tekst']

NLTK bruger også en forududdannet sætningstokenizer kaldet PunktSentenceTokenizer. Det fungerer ved at dele et afsnit i en sætningsliste.

Lad os se, hvordan dette fungerer med et afsnit med to sætninger:

import nltk
fra nltk.tokenize import word_tokenize, PunktSentenceTokenizer
sætning = "Dette er en eksempeltekst. Dette er en tutorial til NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (sætning)
print (tokenized_sentence)
Produktion:
['Dette er en eksempeltekst.', 'Dette er en vejledning til NLTK']

Du kan yderligere tokenisere hver sætning i arrayet genereret ud fra ovenstående kode ved hjælp af word_tokenizer og Python til loop.

Eksempler på, hvordan man bruger NLTK

Så selvom vi ikke kan demonstrere alle mulige brugstilfælde af NLTK, er her et par eksempler på, hvordan du kan begynde at bruge det til at løse problemer i virkeligheden.

Få orddefinitioner og deres dele af talen

NLTK indeholder modeller til at bestemme taledele, få detaljeret semantik og mulig kontekstuel brug af forskellige ord.

Du kan bruge wordnet model til at generere variabler for en tekst. Bestem derefter dens betydning og del af talen.

Lad os f.eks. Kontrollere de mulige variabler for "Monkey:"

import nltk
fra nltk.corpus import wordnet som wn
print (wn.synsets ('abe'))
Produktion:
[Synset ('abe.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Ovenstående kode udsender mulige ordalternativer eller syntakser og taledele for "Monkey".

Kontroller nu betydningen af ​​"Monkey" ved hjælp af definition metode:

Monkey = wn.synset ('abe.n.01'). Definition ()
Produktion:
enhver af forskellige langhalede primater (undtagen prosimianerne)

Du kan erstatte strengen i parentesen med andre genererede alternativer for at se, hvilke NLTK -output.

Det pos_tag model bestemmer imidlertid ordets taledele. Du kan bruge dette med word_tokenizer eller PunktSentenceTokenizer () hvis du har at gøre med længere afsnit.

Sådan fungerer det:

import nltk
fra nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Dette er en eksempeltekst. Dette er en tutorial om NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (word)
for i i tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Produktion:
[('Dette', 'DT'), ('er', 'VBZ'), ('et', 'DT'), ('eksempel', 'NN'), ('tekst', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Ovenstående kode parrer hvert tokeniseret ord med sit talemærke i en tuple. Du kan kontrollere betydningen af ​​disse tags på Penn Treebank.

For et renere resultat kan du fjerne perioderne i output ved hjælp af erstatte() metode:

for i i tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Renere output:
[('Dette', 'DT'), ('er', 'VBZ'), ('et', 'DT'), ('eksempel', 'NN'), ('tekst', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Visualisering af funktionstendenser ved hjælp af NLTK -plot

Udtræk af funktioner fra rå tekster er ofte kedeligt og tidskrævende. Men du kan se de stærkeste funktionsbestemmere i en tekst ved hjælp af trenddiagrammet for NLTK -frekvensfordeling.

NLTK synkroniserer dog med matplotlib. Du kan udnytte dette til at se en bestemt tendens i dine data.

Koden herunder sammenligner f.eks. Et sæt positive og negative ord på et distributionsplot ved hjælp af deres to sidste alfabeter:

import nltk
fra nltk import ConditionalFreqDist
Lister over negative og positive ord:
negativer = [
'unormal', 'afskaffelse', 'afskyelig',
'afskyeligt', 'afskyeligt', 'vederstyggeligt'
]
positive = [
'overflod', 'overflod', 'overflod',
'rigelig', 'tilgængelig', 'tilgængelig'
]
# Opdel emnerne i hvert array i mærkede tuppelpar
# og kombiner begge arrays:
pos_negData = ([("negativ", neg) for neg i negativer]+[("positiv", pos) for pos i positive])
# Udtræk de to sidste alfabeter fra det resulterende array:
f = ((pos, i [-2:],) for (pos, i) i pos_negData)
# Opret et distributionsplot af disse alfabeter
cfd = ConditionalFreqDist (f)
cfd.plot ()

Alfabetets fordelingsplot ser sådan ud:

Ser man nøje på grafen, ord der slutter med ce, ds, le, nd, og nt har større sandsynlighed for at være positive tekster. Men dem, der slutter med al, ly, , og te er mere sandsynligt negative ord.

Bemærk: Selvom vi har brugt selvgenererede data her, kan du få adgang til nogle af NLTK's indbyggede datasæt ved hjælp af sin Corpus-læser ved at ringe til dem fra korpus klasse af nltk. Du vil måske se på corpus pakke dokumentation for at se, hvordan du kan bruge det.

Med fremkomsten af ​​teknologier som Alexa, spam-opdagelse, chatbots, følelsesanalyse og mere ser det ud til, at behandling af naturligt sprog udvikler sig til sin sub-menneskelige fase. Selvom vi kun har overvejet et par eksempler på, hvad NLTK tilbyder i denne artikel, har værktøjet mere avancerede applikationer højere end omfanget af denne vejledning.

Efter at have læst denne artikel, bør du have en god idé om, hvordan du bruger NLTK på et baseniveau. Det eneste, du skal gøre nu, er selv at sætte denne viden i aktion!

DelTweetE -mail
7 Maskinlæringsbiblioteker for håbefulde eksperter

Interesseret i maskinlæring? Kom i gang med disse biblioteker.

Læs Næste

Relaterede emner
  • Programmering
  • Python
  • Programmeringssprog
  • Programmering
Om forfatteren
Idowu Omisola (96 artikler udgivet)

Idowu brænder for alt smart teknologi og produktivitet. I fritiden leger han med kodning og skifter til skakbrættet, når han keder sig, men han elsker også at bryde væk fra rutinen en gang imellem. Hans passion for at vise folk vejen rundt om moderne teknologi motiverer ham til at skrive mere.

Mere fra Idowu Omisola

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere