Obrada prirodnog jezika

Izvor: Wikipedija
Prijeđi na navigaciju Prijeđi na pretraživanje

Obrada prirodnog jezika je potpodručje računarske znanosti, obrade informacija i umjetne inteligencije koje proučava interakciju između računala i ljudskih (prirodnih) jezika, posebno načine kako procesirati i analizirati velike količine podataka iz prirodnog jezika pomoću računala.

Izazovi obrade prirodnog jezika često uključuju raspoznavanje govora, razumijevanje prirodnog jezika i generiranje prirodnog jezika.


Povijesni pregled[uredi VE | uredi]

Povijest obrade prirodnog jezika započela je 1950-ih, iako je moguće pronaći radove i iz ranijih perioda. 1950. godine, Alan Turing je objavio članak pod nazivom "Inteligencija" koji predlaže ono što danas nazivamo Turingovim testom kao kriterij inteligencije.

Eksperiment iz Georgetowna iz 1954. uključivao je posve automatizirani prijevod više od šezdeset ruskih rečenica na engleski. Autori su tvrdili kako će za tri do pet godina strojno prevođenje biti riješen problem.[1] Međutim, pravi napredak bio je mnogo sporiji i, nakon izvještaja ALPAC iz 1966., koji je otkrio da desetogodišnje istraživanje nije ispunilo očekivanja, financiranje za strojno prevođenje dramatično je smanjeno. Malen broj istraživanja u području strojnog prevođenja proveden je do kasnih 1980-ih kad se razvijaju prvi sustavi temeljeni na statističkom strojnom prevođenju.

Neki od najznačajnijih uspješnih sustava za obradu prirodnog jezika razvijenih u 1960-ima su SHRDLU, sustav za obradu prirodnog jezika koji radi u ograničenom "svijetu blokova" s ograničenim vokabularom, i ELIZA, simulacija psihoterapeuta koju je napisao Joseph Weizenbaum između 1964. i 1966. Gotovo bez korištenja ikakvih informacija o ljuskom razmišljanju i emocijama, ELIZA je ponekad pružala interakciju zapanjujuće nalik ljudskoj. Kada "pacijent" nadiđe njezinu vrlo malenu bazu znanja, ELIZA bi mogla pružiti generički odgovor, primjerice odgovarajući na "Boli me glava" pitanjem "Zašto kažete da Vas boli glava?".

Tijekom 1970-ih, mnogi programeri počinju pisati "konceptualne ontologije" koje strukturiraju znanje iz stvarnog svijeta u podatke koji su razumljivi računalu. Primjeri uključuju MARGIE (Schank, 1975), SAM (Cullingford, 1978), PAM (Wilensky, 1978), TaleSpin (Meehan, 1976), QUALM (Lehnert, 1977), Politics (Carbonell, 1979) i Plot Units (Lehnert 1981). Tijekom ovog razdoblja napisani su mnogi chatbot-ovi kao što su PARRY, Racter i Jabberwacky.

Sve do 1980-ih, većina sustava za obradu prirodnog jezika bazirala se na kompleksnim skupovima ručno pisanih pravila. Kasnih 1980-ih dolazi do revolucije u obradi prirodnog jezika s uvođenjem algoritama strojnog učenja za obradu jezika. Za ovo su zaslužni postojan rast računalne moći (vidi Mooreov zakon) i postupno popuštanje dominacije Chomskyjevih teorija lingvistike (npr. transformacijska gramatika) čije su teoretičarske pretpostavke obeshrabrivale uporabu lingvistike korpusa koja je temelj pristupa obradi jezika temeljenog na strojnom učenju. Neki od najranije korištenih algoritama strojnog učenja, kao što su stabla odluke, generiranju sustave čvrstih ako-onda pravila sličnih postojećim ručno pisanim pravilima. Međutim, označavanje vrsta riječi u rečenicama uvodi uporabu skrivenih Markovljevih modela u područje obrade prirodnog jezika i istraživanja se sve više usredotočuju na statističke modele koji stvaraju meke probabilističke granice temeljene na povezivanju težina sačinjenih od realnih brojeva sa značajkama iz ulaznih podataka. Cache jezični modeli, na kojima se danas temelje mnogi sustavi za raspoznavanje govora, primjer su takvih statističkih modela. Takvi modeli su u pravilu robusniji kad rade s nepoznatim ulaznim podacima, posebice onima koji sadrže pogreške (što je vrlo često kod stvarnih podataka), i daju pouzdanije rezultate kad su integrirani u velik sustav koji se sastoji od brojnih podzadataka.

Mnogi rani uspjesi zabilježeni su u području strojnog prevođenja, posebice zahvaljujući radu IBM Research-a, gdje su razvijeni znatno složeniji statistički modeli. Ovi sustavi koristili su višejezične korpuse tekstova koje su sastavili Kanadski parlament i Europska Unija kao rezultat zakona koji zahtijevaju prevođenje svih vladinih odluka na sve službene jezike. Međutim, većina drugih sustava ovisi o korpusima teksta koji su izgrađeni specifično za zadatak na koji se ti sustavi primjenjuju, što je veliko ograničenje ovakvih sustava. Kao rezultat toga, velik broj istraživanja bavi se metodama koje omogućavaju efektivnije učenje na temelju ograničenih količina podataka.

Nedavna istraživanja su sve više usredotočena na algoritme nenadziranog i polunadziranog učenja. Takvi algoritmi mogu učiti na temelju podataka koji nisu ručno označeni željenim odgovorima ili mogu koristiti kombinaciju označenih i neoznačenih podataka. Ovakav način učenja je u pravilu mnogo zahtjevniji od nadziranog učenja te često daje gore rezultate za istu količinu ulaznih podataka. Međutim, u području prirodnog jezika postoji enormna količina neoznačenih podataka koji su javno dostupni (uključujući, između ostalog, i cjelokupni sadržaj World Wide Web-a) i koji često nadoknađuju gore rezultate ako korišteni algoritam ima dovoljno malu vremensku složenost da učenje na tolikom količinom podataka bude praktično.

U 2010-ima, učenje temeljeno na značajkama i strojno učenje temeljeno na dubokim neuronskim mrežama postaju rasprostranjeni pristupi u obradi prirodnog jezika, djelomice zahvaljujući naletu rezultata[2][3] koji pokazuju kako ovakve tehnike postižu najbolje rezultate na brojnim zadacima iz područja prirodnog jezika, primjerice modeliranju jezika[4], parsiranju[5][6] i brojnim drugima. Popularni pristupi uključuju korištenje vektorskih reprezentacija riječi kako bi uhvatili semantička svojstva riječi te učenje od kraja do kraja (engl. end-to-end) zadataka više razine (npr. odgovaranje na pitanja) umjesto korištenja cjevovoda sastavljenih od zasebnih zadataka. Ova je promjena u nekim područjima povukla za sobom značajne promjene u načinu na koji se sustavi za obradu prirodnog jezika dizajniraju pa se stoga pristupi temeljeni na dubokim neuronskim mrežama mogu smatrati novom paradigmom razdvojenom od statističke obrade prirodnog jezika. Primjerice, pojam [[neuronsko strojno prevođenje]] naglašava činjenicu da pristupi strojnom prevođenju temeljeni na dubokim modelima izravno uče transformacije iz sekvence u sekvencu, čime nestaje potreba za međukoracima kao što su određivanje poretka riječi ili modeliranje jezika koji se koriste u statističkom strojnom prevođenju.

Obrada prirodnog jezika temeljena na pravilima vs. statistička obrada prirodnog jezika[uredi VE | uredi]

U početku su mnogi sustavi za obradu jezika bili osmišljeni ručnim sastavljanjem skupa pravila[7][8], npr. pisanjem gramatika ili dizajniranjem heurističkih pravila za stemming. Međutim, ovakav je pristup rijetko robustan na varijacije u prirodnim jezicima.

Od takozvane "statističke revolucije"[9][10] u kasnim 1980-im i srednjim 1990-im, dobar dio istraživanja u području obrade prirodnog jezika uvelike se oslanjao na strojno učenje.

Paradigma strojnog učenja koristi statističko zaključivanje kako bi se pravila naučila automatiziranim postupkom kroz analizu velikih korpusa sastavljenih od tipičnih stvarnih primjera.

Mnogo različitih vrsta algoritama strojnog učenja primijenjeno je na probleme iz područja obrade prirodnog jezika. Ovi algoritmi kao ulaz primaju veliki skup značajki koje se generiraju na temelju ulaznih podataka. Neki od najranijih algoritama, kao što su stabla odluke, rezultiraju sustavima čvrstih ako-onda pravila koji su slični sustavima s ručno pisanim pravilima koji su tada bili česti. No, istraživanje se sve više fokusiralo na statističke modele koji donose meke probabilističke odluke na temelju odgovarajućih težina realnih brojeva koje su povezane sa svakom ulaznom značajkom. Takvi modeli imaju prednost da mogu izraziti u kojoj su mjeri sigurni u koje od mnogo različitih mogućih odgovora, čime se dobivaju pouzdaniji rezultati kad se ovakvi modeli koriste kao komponente većih sustava.

Sustavi temeljeni na strojnom učenju imaju mnoge prednosti u odnosu na ručno sastavljena pravila:

  • Postupci učenja automatski se usredotočuju na najčešće slučajeve, dok kod ručnog pisanja pravila često nije očito u kojem smjeru treba krenuti.
  • Automatizirani postupci učenja mogu iskoristiti algoritme temeljene na statističkom zaključivanju kako bi stvorili modele koji su robusni na nepoznate ulazne podatke (npr. koji sadrže riječi ili strukture koje algoritam nije ranije susreo) i ulazne podatke koji sadrže pogreške (npr. pogrešno napisane riječi ili riječi koje su greškom izostavljene iz teksta). U pravilu, stvaranje sustava temeljenih na rukom pisanim pravilima koji mogu raditi s takvim ulazima je vrlo teško, a proces njihove izgradnje je sklon pogreškama i vremenski zahtjevan.
  • Sustavi temeljeni na automatiziranom učenju pravila mogu se poboljšati tako da ih se jednostavno nauči na većoj količini podataka. Sustavi temeljeni na pravilima mogu postati točniji samo ako se poveća kompleksnost pravila, što je mnogo teži zadatak. Postoji granica do koje se može povećavati kompleksnost sustava temeljenih na pravilima nakon koje sustavi postaju nepodesni za rukovanje. S druge strane, stvaranje većeg broja ulaznih podataka za sustave koji koriste strojno učenje jednostavno zahtijeva veći broj sati rada, bez povećanja kompleksnosti posla koji se obavlja.

Glavni zadaci[uredi VE | uredi]

U nastavku je dan kratak pregled najčešćih zadataka kojima se bavi obrada prirodnog jezika. Neki od njih se izravno primjenjuju na stvarnim problemima, dok se kompleksniji problemi često razlažu u nekoliko podzadataka koji se rješavaju zasebno i potom nadovezuju u potpuno rješenje. Kako se isti podzadaci često pojavljuju u mnogim primjenama, danas su brojni od njih postali zaseban predmet istraživanja.

Iako su zadaci iz područja obrade prirodnog jezika često međusobno usko povezani ili isprepleteni, često se zbog praktičnosti dijele u nekoliko kategorija. U nastavku je dana grupa podjela.

Sintaksa[uredi VE | uredi]

Učenje formalne gramatike
Generiranje formalne gramatike koja opisuje sintaksu danog jezika.
Lematizacija
Svođenje riječi na kanonski oblik.
Morfološka segmentacija
Razdvajanje riječi na morfeme i identificiranje razreda morfema. Težina ovog zadatka uvelike ovisi o kompleksnosti morfologije jezika nad kojim se primjenjuje. Engleski jezik ima prilično jednostavnu morfologiju, posebice infleksijsku morfologiju, i stoga je moguće posve ignorirati ovaj zadatak i modelirati sve moguće oblike neke riječi kao zasebne riječi. U infleksijski kompleksnijim jezicima, kao što je hrvatski, takav pristup nije moguć jer jedna riječ može imati vrlo velik broj oblika.
Označavanje vrsta riječi
Označavanje vrsta riječi u danoj rečenici. Ponekad se ista riječ može upotrijebiti u više različitih značenja s obzirom na vrstu riječi. Ovo nije osobito čest slučaj u hrvatskom jeziku, no engleski jezik obiluje ovakvim primjerima. Često se ista riječ može koristiti kao imenica i kao glagol pa tako riječ 'book' može označavati imenicu "knjiga" ili glagol "rezervirati". Jezici s manje izraženom infleksijskom morfologijom, kao što je engleski, skloniji su ovakvoj dvoznačnosti.
Parsiranje
Određivanje stabla parsiranja (gramatička analiza) dane rečenice. Gramatika prirodnih jezika je dvoznačna i za rečenice je tipično moguće izgraditi više različitih stabala koja zadovoljavaju uvjete gramatike, iako mnoga od njih čitatelju neće imati smisla jer će on na temelju konteksta automatski odbaciti brojne mogućnosti.
Razdvajanje rečenica
Pronalaženje granica između rečenica u danom tekstu. Granice su obično označene rečeničnim znakovima: točkom, uskličnikom ili upitnikom. No, neki od njih mogu služiti i u druge svrhe, primjerice za pisanje datuma, kratica ili rednih brojeva.
Stemming (Korjenovanje)
Proces odstranjivanja nastavaka riječi nastalih infleksijskom ili derivacijskom morfologijom kako bi se u konačnici dobio korijen riječi.
Segmentacija riječi
Razdvajanje teksta na zasebne riječi. Za jezike kao što je hrvatski, ovo je relativno jednostavan zadatak budući da su riječi obično razdvojene razmacima. Međutim, neki jezici kao što su japanski ili kineski ne označavaju granice na taj način i za takve jezike je segmentacija značajan problem koji zahtijeva znanje vokabulara i morfologije jezika.
Izdvajanje termina
Automatizirano izdvajanje važnih termina (pojmova) iz teksta.

Semantika[uredi VE | uredi]

Leksička semantika
Značenje pojedinih riječi u kontekstu.
Distribucijska semantika
Učenje semantičkih reprezentacija iz podataka.
Strojno prevođenje
Automatizirano prevođenje teksta s jednog ljudskog jezika na drugi.
Prepoznavanje imenovanih entiteta
Prepoznavanje vlastitih imena, kao što imena ljudi ili mjesta, iz teksta i njihova kategorizacija (npr. osoba, lokacija ili organizacija). Velika početna slova mogu pomoći u prepoznavanju imenovanih entiteta kod jezika kao što su hrvatski ili engleski, no ova informacija često nije dovoljna i često ne pomaže kod određivanja tipa entiteta o kojem se radi. Nadalje, mnogi jezici uopće ne razlikuju velika i mala slova, dok se u nekima velika početna slova ne koriste samo za označavanje vlastiti imenica (primjerice, u njemačkom jeziku se sve imenice pišu velikim početnim slovom).
Generiranje prirodnog jezika
Pretvaranje strukturiranih podataka, kao što su podaci iz baza znanja ili baza podataka, u tekst napisan prirodnim jezikom.
Razumijevanje prirodnog jezika
Nastoji omogućiti računalima da čitaju s razumijevanjem.
Optičko očitavanje znakova
Za danu sliku na kojoj se nalazi otisnuti tekst, određuje odgovarajući tekst.
Odgovaranje na pitanja
Određivanje odgovora na dano pitanje postavljeno prirodnim jezikom. Kako bi mogao dati odgovori, sustav obično mora imati pristup nekoj bazi znanja, primjerice Wikipedija stranicama.
Prepoznavanje tekstualne implikacije
Za dva dana teksta, ako je prvi tekst istinit, proučava se što to govori o istinitosti drugog teksta. Istinitost prvog teksta može implicirati da je drugi tekst onda također istinit, da je drugi tekst onda nužno neistiniti ili tekstovi mogu biti takvi da između njih ne postoji zavisnost.
Izdvajanje odnosa
Za dani tekst treba odrediti odnose između imenovanih entiteta.
Analiza sentimenta
Izdvajanje subjektivnih informacija iz skupa dokumenata. Obično se koristi za određivanje polarnosti nekog skupa tekstova, točnije određivanje jesu li tekstovi pozitivni ili negativni. Vrlo je popularna za ispitivanje mišljenja javnosti o nekoj temi, osobi ili proizvodu (posebice na društvenim mrežama) te se često koristi u svrhu marketinga.
Izdvajanje tema
Razdvaja dani tekst na više dijelova, tako da je svaki dio posvećen jednoj temi, i određuje koja je konkretna tema svakog dijela.
Razrješavanje dvoznačnosti riječi
Mnoge riječi mogu imati više značenja. Cilj je odrediti koje od njih ima najviše smisla u danom kontekstu.

Diskurs[uredi VE | uredi]

Automatsko generiranje sažetaka
Generiranje pouzdanog sažetka na temelju nekog teksta, primjerice generiranje sažetaka vijesti ili znanstvenih radova.
Razrješavanje unakrsnih referenci
Odredi koje riječi (odnosno koja spominjanja) u tekstu se odnose na isti entitet. Primjerice, na početku teksta koji govori o Sveučilištu u Zagrebu, ono će se vjerojatno spomenuti svojim putnim imenom. No, kasnije u tekstu ono može biti spomenuto samo kao 'sveučilište' ili se na njega možemo referencirati zamjenicom 'ono'. Cilj je pronaći i povezati sve zamjenice i moguće alternativne nazive za isti entitet.
Analiza diskursa
Ovo područje uključuje brojne povezane zadatke. Zajedničko im je to što se bave analizom teksta kao veće cjeline, odnosno obično djeluju nad količinom teksta koja je veća od jedne rečenice.

Govor[uredi VE | uredi]

Prepoznavanje glasa (Prepoznavanje govora, Raspoznavanje govora)
Određuje tekstualnu reprezentaciju govora na temelju zvučnog odsječka.
Segmentacija govora
Za dani zvučni odsječak, cilj je razdvojiti odsječak na manje dijelove od kojih svaki predstavlja jednu riječ. Ovo je važan podzadatak prepoznavanja govora.
Pretvaranje teksta u govor
Pretvara dani pisani tekst u zvučnu reprezentaciju istog.


Izvori[uredi VE | uredi]

  1. Hutchins, J. (2005). The history of machine translation in a nutshell
  2. Goldberg, Yoav (2016). A Primer on Neural Network Models for Natural Language Processing. Journal of Artificial Intelligence Research 57 (2016) 345–420
  3. Ian Goodfellow, Yoshua Bengio and Aaron Courville. http://www.deeplearningbook.org/ Deep Learning]. MIT Press.
  4. Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu (2016). https://arxiv.org/abs/1602.02410 Exploring the Limits of Language Modeling
  5. Do Kook Choe and Eugene Charniak (EMNLP 2016). https://aclanthology.coli.uni-saarland.de/papers/D16-1257/d16-1257 Parsing as Language Modeling
  6. Vinyals, Oriol, et al. (NIPS2015). https://papers.nips.cc/paper/5635-grammar-as-a-foreign-language.pdf
  7. Winograd, Terry (1971). Procedures as a Representation for Data in a Computer Program for Understanding Natural Language. http://hci.stanford.edu/winograd/shrdlu/
  8. Roger C. Schank and Robert P. Abelson (1977). Scripts, plans, goals, and understanding: An inquiry into human knowledge structures
  9. Mark Johnson. How the statistical revolution changes (computational) linguistics. Proceedings of the EACL 2009 Workshop on the Interaction between Linguistics and Computational Linguistics.
  10. Philip Resnik. Four revolutions. Language Log, February 5, 2011.