szerda, szeptember 05, 2007

Természetes nyelvek számítógépes abajgatása

A természetes nyelvek fontosak, mert ugye sokat használjuk őket, néha talán többet is mint kéne, mindenesetre olyan sokat, hogy lassan ideje volt számítógépekkel segíteni a feldolgozásukat, ennek a területnek vagyok én a csicskása, szóval ideje volt írni róla, hátha valakit érdekel, hogy mi is a "big picture" amikor éppen úgy teszek, mintha dolgoznék.

A természetes nyelvek számítógépes feldolgozását a számítógépes nyelvészeti elméletek teszik lehetővé. Ezzel az a baj, hogy néha nagyon nem hasonlít a rendes nyelvészetre és az sem világos, hogy kellene-e neki. A számítógép az agytól egy nagyon eltérő szerkezet, ezért eléggé nehéz neki megmagyarázni egyszerű dolgokat, de vannak olyan nehéz dolgok, amiket viszont nagyon ügyesen meg tud oldani. Ezért az informatikusok gyakran próbálkoznak azzal, hogy bonyolult dolgokkal egyszerűeket utánozzanak, de ha véletlenül még működik is a dolog, akkor sajnos nehéz megérteni, hogy pontosan miért is működik és hogy milyen körülmények között fog szintén jól működni. Ez a kijelentés nagyjából az egész informatika tudományra igaz, de kiemelten igaz a természetes nyelvfeldolgozásra (NLP ezután).

Az egyik klaszikus és talán a legelső NLP feladatot Turing fogalmazta meg, amikor 1950-ben azt tette a mesterséges intelligencia mértékévé, hogy kimondottan szöveges kommunikációval egy számítógép meg tudja-e 80%-os pontossággal határozni a beszélgetőpartnerének a nemét úgy, hogy az akármit válaszolhat a feltett kérdésekre, tehát hazudhat is. Anno úgy képzelték, hogy ez a kérdés 2000-re megoldódik, de messze vagyunk ettől az álomtól, én erősen kételkedem abban, hogy 2050-re megoldott lesz.

Az első harminc év az álmodozások kora volt az NLP-ben is, mint az egész mesterséges intelligenciában, mindenféle szimbólikus módszerrel próbálkoztak amelyek csak nagyon kevés esetben működtek jól és jelentős hackolás és hozzáértés kellett az elkészítésükhöz és kibővítésükhöz. Mindenesetre kialakultak az alapvető területek, ezek egy része elsődleges, vagyis önmagában érdekes és fontos feladat, mint mondjuk a fordítás (machine translation), összefoglalás (summarization), kulcsszó kiválasztás (keyword extracion), kérdésekre válaszolás (question answering), vagy másodlagos, tehát valamilyen összetettebb feladat önállóként kezelhető része, mint pl. a mondatelemzés (parsing), szófaj megállapítása egy mondat szavaira (part of speech tagging), többértelmű szavaknál a helyes értelem kiválasztása (word sense disambiguation), dokumentumok visszakeresése kulcsszavak alapján (information retrieval) (ebben az a nehéz a sima indexelésen túl, hogy szeretnénk azokat a dokumentumokat is megkapni, amelyekben nem használt a keresett szó, mégis nagyjából arról szól, amire gondoltunk a keresésnél).

Aztán jöttek a statisztikus módszerek (és most újabban a nemparametrikus statisztikai módszerek) és a gépi tanulási módszerek és rengeteg feladatot egy szinttel jobban megoldottak mint a régi okoskodós módszerek azért, mert
jobban modellezik a bizonytalanságot. Ezeknél már nem kell érteni a megoldást, egyszerűen csak rengeteg helyes példát (és néhol a kimondottan helytelenekre is szükség van) fel kell sorolni egy tanulási algoritmusnak és ő valamilyen mágikus információkat leszűr az egészből és néha ezek alapján egész jól meg tudja mondani az újabb és újabb esetekben, hogy mi a helyes válasz. Közben nagyon sok új részfeladat és nagyobb feladat is megfoglamazódott és egyesek igencsak előtérbe kerültek, mint pl a dokumentumok visszanyerése, ami magyar az, amit a keresők csinálnak és most mindenki az új és okos algoritmuson töri a fejét, amivel átvehetné a Googletől a vezetést. Érdekes, hogy a Googlet megalapozó algoritmus, a PageRank nagyjából ismert volt már jóval régebben, kutatták páran a gráfok spektrumát, mindenféle elvi határokat felállítva mindenféle sajátértékekre meg minden, de nem jutott eszükbe, hogy a weblapok gráfjára alkalmazzák, pedig akkor most lehet, hogy Szlovéniában székelne a Google (Bojan Mohar szlovén kutató pl sok jó cikket írt a témában). Na szóval egy pár újabb feladat pl. a szöveg kategorizálás, amivel mi is foglalkozunk, vagy mondjuk annak megállapítása, hogy egyik mondatból logikailag következik-e egy másik, ami egy elég frissen megfogalmazott feladat (2004-es talán) de nagyon sok feladatnak részfeladataként elképzelhető (és én pl. nagyon érdekesnek találom), a szavak értelmi hasonlóságának vizsgálata, mindenféle fordítási feladatok és persze egy érdekes metafeladat, hogyan tudjuk az interneten fellelhető egyre több információt automatikus módon felhasználni (mostanában lassan már az etikussága is terítékre kerül ennek, főleg az AOL fiaskó óta).

Szóval nagyon ágas-bogas ez a téma és hát hasznos lenne a haladás benne, merthogy ha valaki elkottyantja a blogjában van messengeren, hogy mosógépet szeretne venni, akkor legközelebb amikor nézi a méljét, már lehet is reklámozni neki a vadiúj mosógépeket. És ha majd a Holdon az asztronauták arra kérik a robotot, hogy tartsák meg egy kicsit azt az elektromos vezetéket, amíg elmennek pisilni, nehogy leszakítsák, mert azt értik, hogy el kell tegyék. És hogy a technológiákban mennyire lesz a nyelvészetnek és mennyire a statisztikának szerepe, azt még meglátjuk, én mindenesetre annak drukkolok, hogy ne legyen Chomskynak igaza és a nyelv használata egy tanult és nem genetikailag drótozott képesség legyen.

3 megjegyzés:

csikiati írta...

Kösz, hogy kissé kibontottad a témát, jó tudni dolgokat. Sok sikert!

kövi sára írta...

programoznám én a nyelvet
ha tudnám az Alapelvet... :D

mzsolt írta...

programoznám én a nyelvet
ha lenne hozzá kedvem :)