Obdelava naravnega jezika je vidik strojnega učenja, ki vam omogoča, da prevedete zapisane besede v stroju prijazen jezik. Taka besedila nato postanejo prilagodljiva in na njih lahko zaženete računske algoritme, kot želite.

Logika te očarljive tehnologije se zdi zapletena, vendar ni. In tudi zdaj, ko dobro razumete osnovno programiranje Python, lahko ustvarite nov urejevalnik besedil DIY z naborom orodij za naravni jezik (NLTK).

Evo, kako začeti z Pythonovim NLTK -jem.

Kaj je NLTK in kako deluje?

NLTK, napisan s Pythonom, vsebuje različne funkcije za upravljanje nizov. To je vsestranska knjižnica naravnih jezikov z ogromnim skladiščem modelov za različne aplikacije v naravnem jeziku.

Z NLTK lahko obdelujete surova besedila in iz njih izvlečete pomembne funkcije. Ponuja tudi modele za analizo besedila, slovnice, ki temeljijo na funkcijah, in bogate leksikalne vire za izgradnjo celovitega jezikovnega modela.

Kako nastaviti NLTK

Najprej ustvarite korensko mapo projekta kjer koli v računalniku. Če želite začeti uporabljati knjižnico NLTK, odprite svoj terminal v korenski mapi, ki ste jo ustvarili prej, in

ustvarite virtualno okolje.

Nato v to okolje z orodjem namestite komplet orodij naravnega jezika pip:

pip install nltk

NLTK pa vsebuje različne nabore podatkov, ki služijo kot osnova za nove modele naravnega jezika. Za dostop do njih morate zagnati vgrajen program za prenos podatkov NLTK.

Ko uspešno namestite NLTK, odprite datoteko Python s katerim koli urejevalnikom kod.

Nato uvozite nltk modul in z uporabo naslednje kode ustvarite primerek prenosnika podatkov:

pip install nltk
nltk.download ()

Z zagonom zgornje kode prek terminala se prikaže grafično-uporabniški vmesnik za izbiro in prenos podatkovnih paketov. Tukaj morate izbrati paket in klikniti na Prenesi gumb, da ga dobite.

Vsak podatkovni paket, ki ga prenesete, gre v določen imenik, zapisan v Prenesite imenik polje. Če želite, lahko to spremenite. Toda poskusite ohraniti privzeto lokacijo na tej ravni.

Povezano: Najboljši brezplačni urejevalniki kod za pisanje vaše prve aplikacije

Opomba: Podatkovni paketi so privzeto dodani sistemskim spremenljivkam. Torej jih lahko še naprej uporabljate za naslednje projekte, ne glede na okolje Python, ki ga uporabljate.

Kako uporabljati tokenizatorje NLTK

Na koncu NLTK ponuja usposobljene modele tokenizacije besed in stavkov. S temi orodji lahko iz stavka ustvarite seznam besed. Ali pa odstavek spremenite v smiselno niz stavkov.

Tukaj je primer uporabe NLTK word_tokenizer:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize
word = "To je primer besedila"
tokenWord = word_tokenizer (beseda)
tiskanje (tokenWord)
Izhod:
['To', 'je', 'an', 'primer', 'besedilo']

NLTK uporablja tudi vnaprej usposobljen tokenizator stavkov, imenovan PunktSentenceTokenizer. Deluje tako, da odstavek razdeli na seznam stavkov.

Poglejmo, kako to deluje z odstavkom iz dveh stavkov:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize, PunktSentenceTokenizer
stavka = "To je primer besedila. To je vadnica za NLTK "
žeton = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (stavek)
tiskanje (tokenized_sentence)
Izhod:
['To je primer besedila.', 'To je vadnica za NLTK']

Vsak stavek v matriki, ustvarjeni iz zgornje kode, lahko dodatno označite z uporabo word_tokenizer in Python za zanko.

Primeri uporabe NLTK

Čeprav ne moremo prikazati vseh možnih primerov uporabe NLTK, je tukaj nekaj primerov, kako ga lahko začnete uporabljati za reševanje težav v resničnem življenju.

Pridobite definicije besed in njihove dele govora

NLTK vsebuje modele za določanje delov govora, pridobivanje podrobne semantike in možno kontekstualno uporabo različnih besed.

Uporabite lahko wordnet model za ustvarjanje spremenljivk za besedilo. Nato določite njen pomen in del govora.

Preverimo na primer možne spremenljivke za "Monkey:"

uvoz nltk
iz nltk.corpus uvozite wordnet kot wn
print (wn.synsets ('opica'))
Izhod:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Zgornja koda prikazuje možne nadomestne besede ali skladnje in dele govora za "opico".

Zdaj preverite pomen "opica" z uporabo opredelitev metoda:

Opica = wn.synset ('opica.n.01'). Definicija ()
Izhod:
kateri od različnih primatov z dolgim ​​repom (razen prosimijanov)

Niz v oklepaju lahko zamenjate z drugimi ustvarjenimi alternativami, da vidite, kaj NLTK oddaja.

The pos_tag model pa določa dele govora besede. To lahko uporabite z word_tokenizer ali PunktSentenceTokenizer () če imate opravka z daljšimi odstavki.

Tako to deluje:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize, PunktSentenceTokenizer
word = "To je primer besedila. To je vadnica o NLTK "
žeton = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (beseda)
za jaz v tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tiskanje (partsOfSpeech)
Izhod:
[('To', 'DT'), ('je', 'VBZ'), ('an', 'DT'), ('primer', 'NN'), ('besedilo', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Zgornja koda združuje vsako tokenizirano besedo s svojo govorno oznako v naboru. Pomen teh oznak lahko preverite na Penn Treebank.

Za čistejši rezultat lahko odstranite pike v izhodu z uporabo zamenjati() metoda:

za jaz v tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tiskanje (partsOfSpeech)
Čistejši izhod:
[('To', 'DT'), ('je', 'VBZ'), ('an', 'DT'), ('primer', 'NN'), ('besedilo', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Vizualizacija trendov funkcij z uporabo NLTK Plot

Izvlečenje funkcij iz surovih besedil je pogosto dolgočasno in dolgotrajno. Lahko pa si ogledate najmočnejše določitelje lastnosti v besedilu z uporabo grafikona trenda porazdelitve frekvence NLTK.

NLTK pa se sinhronizira z matplotlib. To lahko uporabite za ogled določenega trenda v svojih podatkih.

Spodnja koda na primer primerja niz pozitivnih in negativnih besed na distribucijski ploskvi z uporabo zadnjih dveh abeced:

uvoz nltk
iz nltk uvoza ConditionalFreqDist
Seznami negativnih in pozitivnih besed:
negativno = [
„nenormalno“, „odpraviti“, „odvratno“,
'gnusno', 'gnusoba', 'gnusoba'
]
pozitivno = [
'obilo', 'obilo', 'obilje',
'obilno', 'dostopno', 'dostopno'
]
# Postavke v vsakem nizu razdelite na označene pare tupple
# in združite oba niza:
pos_negData = ([("negativno", neg) za neg v negativih)+[("pozitivno", pos) za poz v pozitivah])
# Iz nastale matrike izvlecite zadnji dve abecedi:
f = ((pos, i [-2:],) za (pos, i) v pos_negData)
# Ustvarite distribucijsko shemo teh abeced
cfd = ConditionalFreqDist (f)
cfd.plot ()

Načrt distribucije abecede izgleda tako:

Če natančno pogledamo graf, se besede končajo z ce, ds, le, nd, in nt imajo večjo verjetnost, da bodo pozitivna besedila. Toda tisti, ki se končajo z al, ly, naprej, in te so bolj verjetno negativne besede.

Opomba: Čeprav smo tukaj uporabili podatke, ki so bili ustvarjeni sami, lahko do bralnika Corpus dostopate do nekaterih vgrajenih podatkovnih nizov NLTK tako, da jih pokličete iz korpus razred nltk. Morda si želite ogledati dokumentacijo paketa corpus da vidite, kako ga lahko uporabite.

S pojavom tehnologij, kot so Alexa, odkrivanje neželene pošte, klepetalnice, analiza razpoloženja in drugo, se zdi, da se obdelava naravnega jezika razvija v svojo podčloveško fazo. Čeprav smo v tem članku obravnavali le nekaj primerov ponudbe NLTK, ima orodje naprednejše aplikacije, ki so višje od obsega te vadnice.

Ko ste prebrali ta članek, bi morali dobro vedeti, kako uporabljati NLTK na osnovni ravni. Vse, kar vam preostane, je, da to znanje sami uresničite!

DelitiCvrkutatiE-naslov
7 Knjižnice strojnega učenja za ambiciozne strokovnjake

Vas zanima področje strojnega učenja? Začnite s temi knjižnicami.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Python
  • Programski jeziki
  • Programiranje
O avtorju
Idowu Omisola (96 objavljenih člankov)

Idowu je navdušen nad vsemi pametnimi tehnologijami in produktivnostjo. V prostem času se igra s kodiranjem in se, ko mu je dolgčas, preklopi na šahovsko tablo, rad pa se občasno tudi odmika od rutine. Njegova strast, da ljudem pokaže pot okoli sodobne tehnologije, ga motivira, da piše več.

Več od Idowu Omisola

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite