Obrada prirodnog jezika aspekt je strojnog učenja koji vam omogućuje obradu pisanih riječi u jezik prilagođen stroju. Takvi tekstovi tada postaju prilagodljivi, a na njima možete izvoditi računske algoritme kako želite.

Logika iza ove zadivljujuće tehnologije čini se složenom, ali nije. A čak i sada, uz dobro razumijevanje osnovnog Python programiranja, možete stvoriti novi DIY procesor teksta s alatom za prirodni jezik (NLTK).

Evo kako započeti s Pythonovim NLTK -om.

Što je NLTK i kako funkcionira?

NLTK, napisan Pythonom, sadrži niz funkcija za manipuliranje nizovima. To je svestrana knjižnica prirodnih jezika s velikim spremištem modela za različite primjene na prirodnom jeziku.

Pomoću NLTK -a možete obrađivati ​​neobrađene tekstove i iz njih izvlačiti značajne značajke. Također nudi modele za analizu teksta, gramatike temeljene na značajkama i bogate leksičke izvore za izgradnju cjelovitog jezičnog modela.

Kako postaviti NLTK

Najprije stvorite korijensku mapu projekta bilo gdje na svom računalu. Da biste počeli koristiti NLTK knjižnicu, otvorite svoj terminal u korijenskoj mapi koju ste ranije stvorili i

instagram viewer
stvoriti virtualno okruženje.

Zatim instalirajte alat za prirodni jezik u ovo okruženje pomoću pip:

pip install nltk

NLTK, međutim, sadrži različite skupove podataka koji služe kao osnova za nove modele prirodnog jezika. Da biste im pristupili, morate pokrenuti ugrađeni program za preuzimanje podataka NLTK.

Dakle, nakon što uspješno instalirate NLTK, otvorite svoju Python datoteku pomoću bilo kojeg uređivača koda.

Zatim uvezite nltk modulom i instancirajte program za preuzimanje podataka pomoću sljedećeg koda:

pip install nltk
nltk.download ()

Pokretanje gornjeg koda putem terminala otvara grafičko korisničko sučelje za odabir i preuzimanje podatkovnih paketa. Ovdje ćete morati odabrati paket i kliknuti na preuzimanje datoteka gumb za preuzimanje.

Svaki paket podataka koji preuzmete ide u navedeni direktorij napisan u Preuzmite imenik polje. Ovo možete promijeniti ako želite. Ali pokušajte zadržati zadano mjesto na ovoj razini.

Povezano: Najbolji besplatni uređivači koda za pisanje vaše prve aplikacije

Bilješka: Paketi podataka prema zadanim se postavkama dodaju sistemskim varijablama. Dakle, možete ih nastaviti koristiti za sljedeće projekte bez obzira na Python okruženje koje koristite.

Kako koristiti NLTK tokenizatore

U konačnici, NLTK nudi obučene modele tokeniziranja riječi i rečenica. Pomoću ovih alata možete generirati popis riječi iz rečenice. Ili pretvorite odlomak u razumni niz rečenica.

Evo primjera kako se koristi NLTK word_tokenizer:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize
word = "Ovo je primjer teksta"
tokenWord = riječ_tokenizator (riječ)
ispis (tokenWord)
Izlaz:
['Ovo', 'je', 'an', 'primjer', 'tekst']

NLTK također koristi unaprijed obučeni tokenizator rečenice tzv PunktSentenceTokenizer. Djeluje tako da odlomak odlomi u popis rečenica.

Pogledajmo kako ovo funkcionira s odlomkom od dvije rečenice:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize, PunktSentenceTokenizer
rečenica = "Ovo je primjer teksta. Ovo je vodič za NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (rečenica)
ispis (tokenized_sentence)
Izlaz:
['Ovo je primjer teksta.', 'Ovo je vodič za NLTK']

Možete dodatno tokenizirati svaku rečenicu u nizu generiranom iz gornjeg koda pomoću word_tokenizer i Python za petlju.

Primjeri kako se koristi NLTK

Dakle, iako ne možemo pokazati sve moguće slučajeve uporabe NLTK-a, evo nekoliko primjera kako ga možete početi koristiti za rješavanje problema iz stvarnog života.

Dobijte definicije riječi i njihove dijelove govora

NLTK sadrži modele za određivanje dijelova govora, dobivanje detaljne semantike i moguću kontekstualnu upotrebu različitih riječi.

Možete koristiti wordnet model za generiranje varijabli za tekst. Zatim odredite njegovo značenje i dio govora.

Na primjer, provjerimo moguće varijable za "Monkey:"

uvoz nltk
iz nltk.corpus unesite wordnet kao wn
print (wn.synsets ('majmun'))
Izlaz:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Gornji kôd prikazuje moguće alternative riječi ili sintakse i dijelove govora za "Majmun".

Sada provjerite značenje "Majmun" pomoću definicija metoda:

Majmun = wn.synset ('majmun.n.01'). Definicija ()
Izlaz:
bilo koji od raznih dugorepih primata (isključujući prosimijance)

Niz u zagradama možete zamijeniti drugim generiranim alternativama da vidite što NLTK izlazi.

The pos_tag model, međutim, određuje dijelove govora riječi. Ovo možete koristiti sa word_tokenizer ili PunktSentenceTokenizer () ako imate posla s duljim odlomcima.

Evo kako to funkcionira:

uvoz nltk
iz nltk.tokenize uvoz word_tokenize, PunktSentenceTokenizer
word = "Ovo je primjer teksta. Ovo je vodič za NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (riječ)
za ja u tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
ispis (partsOfSpeech)
Izlaz:
[('Ovo', 'DT'), ('je', 'VBZ'), ('an', 'DT'), ('primjer', 'NN'), ('tekst', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Gornji kôd uparuje svaku tokeniziranu riječ sa svojom govornom oznakom u parci. Značenje ovih oznaka možete provjeriti na Penn Treebank.

Za čistiji rezultat možete ukloniti točke u ispisu pomoću zamijeniti() metoda:

za ja u tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
ispis (partsOfSpeech)
Čistiji izlaz:
[('Ovo', 'DT'), ('je', 'VBZ'), ('an', 'DT'), ('primjer', 'NN'), ('tekst', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Vizualizacija trendova značajki pomoću NLTK zapleta

Izdvajanje značajki iz sirovih tekstova često je zamorno i oduzima vrijeme. No, možete vidjeti najsnažnije odreditelje značajki u tekstu pomoću grafikona trenda distribucije frekvencije NLTK.

NLTK se, međutim, sinkronizira s matplotlib. To možete iskoristiti za pregled određenog trenda u svojim podacima.

Donji kôd, na primjer, uspoređuje skup pozitivnih i negativnih riječi na distribucijskom grafikonu koristeći njihova dva posljednja pisma:

uvoz nltk
iz nltk uvoza ConditionalFreqDist
Popisi negativnih i pozitivnih riječi:
negativno = [
'nenormalno', 'ukinuti', 'odvratno',
"odvratno", "odvratno", "odvratno"
]
pozitivno = [
'obilje', 'obilje', 'obilje',
'obilno', 'pristupačno', 'dostupno'
]
# Podijelite stavke u svakom nizu na označene parove tuplela
# i kombinirajte oba niza:
pos_negData = ([("negativno", neg) za neg u negativima)+[("pozitivno", pos) za poz u pozitivima])
# Izdvojite posljednja dva abeceda iz rezultirajućeg niza:
f = ((poz, i [-2:],) za (poz, i) u pos_negData)
# Napravite distribucijski grafikon ovih abeceda
cfd = ConditionalFreqDist (f)
cfd.plot ()

Raspored distribucije abecede izgleda ovako:

Pomno promatrajući grafikon, riječi završavaju sa ce, ds, le, nd, i nt imaju veću vjerojatnost da budu pozitivni tekstovi. Ali oni koji završavaju sa al, ly, na, i te vjerojatnije su negativne riječi.

Bilješka: Iako smo ovdje koristili podatke koji se sami generiraju, možete pristupiti nekim ugrađenim skupovima podataka NLTK-a pomoću čitača Corpus tako da ih pozovete sa korpus razred nltk. Možda biste htjeli pogledati dokumentaciju paketa korpusa da vidite kako ga možete koristiti.

Pojavom tehnologija poput Alexa, otkrivanja neželjene pošte, chatbotova, analize osjećaja i drugih, čini se da se obrada prirodnog jezika razvija u svoju podljudsku fazu. Iako smo u ovom članku razmotrili samo nekoliko primjera onoga što NLTK nudi, alat ima naprednije aplikacije veće od opsega ovog vodiča.

Nakon što ste pročitali ovaj članak, trebali biste imati dobru ideju o tome kako koristiti NLTK na osnovnoj razini. Sada vam preostaje samo da to znanje sami provedete u djelo!

UdioCvrkutE -pošta
7 knjižnica za strojno učenje za nadolazeće stručnjake

Zanima vas polje strojnog učenja? Započnite s ovim knjižnicama.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Piton
  • Programski jezici
  • Programiranje
O autoru
Idowu Omisola (96 objavljenih članaka)

Idowu je strastven u bilo čemu pametnom tehnologiji i produktivnosti. U slobodno vrijeme igra se kodiranjem i prebacuje na šahovsku ploču kad mu je dosadno, ali također voli povremeno odustati od rutine. Njegova strast prema pokazivanju ljudi suvremene tehnologije motivira ga da piše više.

Više od Idowua Omisole

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu