Naturlig språkbehandling er et aspekt av maskinlæring som lar deg behandle skrevne ord til et maskinvennlig språk. Slike tekster blir deretter justerbare, og du kan kjøre beregningsalgoritmer på dem som du vil.

Logikken bak denne fengslende teknologien virker kompleks, men er ikke det. Og selv nå, med et solid grep om grunnleggende Python -programmering, kan du lage en ny DIY -tekstbehandler med verktøysettet for naturlig språk (NLTK).

Slik kommer du i gang med Pythons NLTK.

Hva er NLTK og hvordan fungerer det?

Skrevet med Python, har NLTK en rekke strengmanipulerende funksjoner. Det er et allsidig naturspråkbibliotek med et stort modelllager for ulike programmer for naturlig språk.

Med NLTK kan du behandle rå tekster og trekke ut meningsfulle funksjoner fra dem. Den tilbyr også tekstanalysemodeller, funksjonsbaserte grammatikker og rike leksikale ressurser for å bygge en komplett språkmodell.

Slik konfigurerer du NLTK

Lag først en prosjektrotmappe hvor som helst på PCen. For å begynne å bruke NLTK -biblioteket, åpner du terminalen til rotmappen du opprettet tidligere og

skape et virtuelt miljø.

Installer deretter verktøysettet for naturlig språk i dette miljøet ved å bruke pip:

pip installer nltk

NLTK har imidlertid en rekke datasett som fungerer som grunnlag for nye modeller for naturlig språk. For å få tilgang til dem må du spinne opp NLTKs innebygde datalaster.

Så når du har installert NLTK, åpner du Python -filen ved hjelp av en hvilken som helst kodeditor.

Importer deretter nltk modul og instansier dataoverføringen ved å bruke følgende kode:

pip installer nltk
nltk.download ()

Å kjøre koden ovenfor via terminalen gir et grafisk brukergrensesnitt for valg og nedlasting av datapakker. Her må du velge en pakke og klikke på nedlasting knappen for å få den.

Enhver datapakke du laster ned går til den angitte katalogen som er skrevet i Last ned katalog felt. Du kan endre dette hvis du vil. Men prøv å opprettholde standardplasseringen på dette nivået.

I slekt: De beste gratis kodeditorene for å skrive din første app

Merk: Datapakkene tilføyer systemvariablene som standard. Så du kan fortsette å bruke dem til påfølgende prosjekter uavhengig av Python -miljøet du bruker.

Hvordan bruke NLTK Tokenizers

Til syvende og sist tilbyr NLTK trente tokeniseringsmodeller for ord og setninger. Ved å bruke disse verktøyene kan du generere en liste med ord fra en setning. Eller forvandle et avsnitt til en fornuftig setningsoppstilling.

Her er et eksempel på hvordan du bruker NLTK word_tokenizer:

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

NLTK bruker også en forhåndsutdannet setningstokener kalt PunktSentenceTokenizer. Det fungerer ved å dele et avsnitt inn i en setningsliste.

La oss se hvordan dette fungerer med et avsnitt med to setninger:

import nltk
fra nltk.tokenize import word_tokenize, PunktSentenceTokenizer
setning = "Dette er en eksempeltekst. Dette er en opplæring for NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (setning)
print (tokenized_sentence)
Produksjon:
['Dette er en eksempeltekst.', 'Dette er en opplæring for NLTK']

Du kan videre symbolisere hver setning i matrisen generert fra koden ovenfor ved å bruke word_tokenizer og Python for loop.

Eksempler på hvordan du bruker NLTK

Så selv om vi ikke kan demonstrere alle mulige brukstilfeller av NLTK, er det noen eksempler på hvordan du kan begynne å bruke det for å løse virkelige problemer.

Få orddefinisjoner og deres deler av talen

NLTK inneholder modeller for å bestemme taledeler, få detaljert semantikk og mulig kontekstuell bruk av forskjellige ord.

Du kan bruke wordnet modell for å generere variabler for en tekst. Bestem deretter betydningen og del av talen.

La oss for eksempel sjekke de mulige variablene for "Monkey:"

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

Koden ovenfor sender ut mulige ordalternativer eller syntakser og taledeler for "Monkey".

Sjekk nå betydningen av "Monkey" ved å bruke definisjon metode:

Monkey = wn.synset ('monkey.n.01'). Definisjon ()
Produksjon:
noen av de forskjellige langhalede primatene (unntatt prosimianerne)

Du kan erstatte strengen i parentesen med andre genererte alternativer for å se hva NLTK sender ut.

De pos_tag modellen bestemmer imidlertid orddelene i et ord. Du kan bruke dette med word_tokenizer eller PunktSentenceTokenizer () hvis du har å gjøre med lengre avsnitt.

Slik fungerer det:

import nltk
fra nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Dette er en eksempeltekst. Dette er en opplæring om NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (word)
for jeg i tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Produksjon:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Koden ovenfor parer hvert tokenisert ord med sin talekode i en tupel. Du kan sjekke betydningen av disse taggene på Penn Treebank.

For et renere resultat kan du fjerne periodene i utdataene ved hjelp av erstatte() metode:

for jeg i tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Renere utgang:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Visualisere funksjonstrender ved hjelp av NLTK -plott

Å trekke ut funksjoner fra rå tekster er ofte kjedelig og tidkrevende. Men du kan se de sterkeste funksjonsbestemmerne i en tekst ved hjelp av NLTK -frekvensdistribusjonstrendplottet.

NLTK synkroniserer imidlertid med matplotlib. Du kan dra nytte av dette for å se en bestemt trend i dataene dine.

Koden nedenfor sammenligner for eksempel et sett med positive og negative ord på et distribusjonsplott ved å bruke de to siste alfabeter:

import nltk
fra nltk import ConditionalFreqDist
Lister over negative og positive ord:
negative = [
'unormal', 'avskaffe', 'avskyelig',
'avskyelig', 'avsky', 'avsky'
]
positivt = [
'florerer', 'florerer', 'overflod',
'rikelig', 'tilgjengelig', 'tilgjengelig'
]
# Del elementene i hver matrise i merkede tuppelpar
# og kombiner begge matrisene:
pos_negData = ([("negativ", neg) for neg i negativ]+[("positiv", pos) for pos i positivt])
# Pakk ut de to siste alfabettene fra den resulterende matrisen:
f = ((pos, i [-2:],) for (pos, i) i pos_negData)
# Lag et distribusjonsplott av disse alfabeter
cfd = ConditionalFreqDist (f)
cfd.plot ()

Alfabetisk distribusjonsplott ser slik ut:

Ser du nøye på grafen, ord som slutter på ce, ds, le, nd, og nt har større sannsynlighet for å være positive tekster. Men de som slutter med al, ly, , og te er mer sannsynlig negative ord.

Merk: Selv om vi har brukt egengenererte data her, kan du få tilgang til noen av NLTKs innebygde datasett ved å bruke Corpus-leseren ved å ringe dem fra korpus klasse av nltk. Det kan være lurt å se på corpus pakke dokumentasjon for å se hvordan du kan bruke den.

Med fremveksten av teknologier som Alexa, søppeldeteksjon, chatbots, sentimentanalyse og mer, ser det ut til at naturlig språkbehandling utvikler seg til sin sub-menneskelige fase. Selv om vi bare har vurdert noen få eksempler på hva NLTK tilbyr i denne artikkelen, har verktøyet mer avanserte applikasjoner høyere enn omfanget av denne opplæringen.

Etter å ha lest denne artikkelen, bør du ha en god ide om hvordan du bruker NLTK på basenivå. Alt du trenger å gjøre nå er å sette denne kunnskapen i verk selv!

DelekvitringE -post
7 Maskinlæringsbiblioteker for aspirerende eksperter

Interessert i maskinlæring? Kom i gang med disse bibliotekene.

Les neste

Relaterte temaer
  • Programmering
  • Python
  • Programmerings språk
  • Programmering
Om forfatteren
Idowu Omisola (96 artikler publisert)

Idowu brenner for alt smart teknologi og produktivitet. På fritiden leker han med koding og bytter til sjakkbrettet når han kjeder seg, men han liker også å bryte fra rutinen en gang i blant. Hans lidenskap for å vise folk veien rundt moderne teknologi motiverer ham til å skrive mer.

Mer fra Idowu Omisola

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere