2010. június 22.

A minimalista program I - Elvek, paraméterek és miért is kell minimalizmusra törekednünk

A minimalizmus megpróbálja a lehetséges emberi nyelvek szerevezőelveinek leírását adni. Ebben két fő elvre támaszkodik; maximális megszorítás mellett (azaz csakis kizárólag az emberi nyelveket szándékozik leírni) a lehető leggazdaságosabban (minél kevesebb szabályt alkalmazva) igyekszik célját elérni. Most nem próbáljuk meg a minimalista programot teljes egészében leírni, hanem csak erre a két alapelvre szorítkozunk.

(Ez a bejegyzés az olvasók kérésére született. Örömmel teszek eleget kéréseiteknek, de így sajnos a Ubiquity-t bemutató sorozat következő darabja csúszik egy kicsit)

A lehetséges emberi nyelvek összessége valamilyen formában egy kalap alá tartozik már csak az intuíció szerint is. Valamiért azt tapasztaljuk hogy minden egészséges ember (és nagyon sok különböző betegséggel küzdő is) beszél legalább egy nyelvet. Beszédszerveink léte és egyéb biológiai és pszichológiai kutatások is alátámasztják hogy van valamilyen nyelvi képességünk (elég itt csak a különböző specifikus beszédzavarokra gondolnunk).

Chomsky, a minimalista program atyja, feltételezi hogy ez egy univerzális, velünk született képességre utal. Az egyes nyelvek közötti különbségek oka hogy nem egy adott nyelvel jön világra egy újszülött, hanem annak elsajátítását lehetőtévő elvekkel. Ez egy tanuláselméleti érv, amit a pszicholingvisztika szerelmesei szeretnek kutatni, de van egy formális megközelítése is, Gold elmélete.

Gold elmélete
Képzeljünk el egy kísérletet. Van egy szerkezetünk aminek az a dolga hogy a beérkező karakter-sor inputok alapján eldöntse milyen grammatika generálta őket. Amennyiben semmilyen tudással nem vértezzük fel gépünket a beérkező inputok lehetséges természetéről, úgy nem tud megállapodni egy grammatikánál. Legyen S a karakterek véges halmaza, G1, G2, és G3 pedig három grammatika amely S-ből mondatokat generál, G4 pedig egy olyan grammatika amely szimplán generálja mindegyik grammatika lehetséges mondatait. Kezdjük el gépünknek adagolni G1 mondatait, ha elég okos egy idő után felismeri hogy melyik grammatikával van dolga. Ezután adagoljuk neki G2 mondatait, azzal a feltétellel hogy minden korábbi mondat szintén helyes. Ekkor minden további nélkül következtethet arra hogy G4-ről van szó (vagy esetleg egy másik, számunkra ismeretlen grammatikáról), holott nem találkozott G3 mondataival. Bonyolítsuk a dolgot azzal hogy G4 tartalmazza G3-at és nem bővebb , G3 tartalmazza G2-t ám bővebb, G2 pedig G1-et de egyben bővebb is. El tudja dönteni gépünk egy akármekkora mondat halmaz segítségével hogy melyik grammatika tartozik ahhoz? Biztos lehet abban hogy a következő input nem kényszeríti nézetei felülvizsgálatára? Mivel a generálható mondatok száma megszámlálhatóan végtelen mindegyik grammatika esetében, végtelen inputra számíthat a szerkezetünk, és sohasem lehet biztos hogy melyik grammatikát kapta éppen meg.

Elvek és paraméterek
Ahhoz hogy tudjuk milyen grammatikát rendeljünk a beérkező inputokhoz, szükségünk van egyrészt 1) a lehetséges grammatikák ismeretére 2) a grammatikák megkülönböztető jegyeire. Vegyük előre a kettes pontot. Miben térnek el az emberi nyelvek? Ennek kutatása a tipológia területe, amely egyrészt univerzálékat keres (azaz minden emberi nyelvre jellemző tulajdonságokat), másrészt olyan specifikus paramétereket amiben a nyelvek különböznek. A minimalista program a különbözőségekre (több-kevesebb empirikus bizonyossággal) szigorú előfeltevésekkel él. Minden paraméter függetlenek és binárisak. Ez annyit tesz hogy egy adott paraméter vagy megvan egy nyelvben, vagy nem. Ha X paraméter megléte maga után vonja Y-ét, akkor értelmetlen külön kezelni őket, hiszen amúgy is összetartoznak mindig.

Ennek fényében az anyanyelv elsajátítása nem más mint a lehetséges paraméterek értékeinek beállítása (és a lexikon elsajátítása). Hogy ez valóban így van-e az kérdéses (mint minden), minden esetre mellette szól hogy a nyelvet a gyermekek viszonylag hamar, negatív példák nélkül, jórészt saját maguk sajátítják el. Érdemes itt megjegyezni hogy különbség van az egyes természetes nyelvek, és a velünk született nyelv között. Az univerzális grammatika a velünk született képességet, belső nyelvet (I-nyelv/ internal language) írja le. Az paraméterek ezt az általános szabályhalmazt szorítják meg, kijelölve ezzel egy-egy természetes nyelv grammatikáját.

Eddig is láttuk hogy minimalista program szeret gazdaságossági elveket használni. Ilyen például a paraméterek binaritása és függetlensége. Ezekhez hasonlóan szeretné elérni hogy a lehető legkevesebb szabály írja le az I-nyelvet. Ez nem csak elméletileg indokolt (Occam borotvája), hanem gyakorlatilag is egy zsúfolt rendszerbe kell beilleszkednie a nyelvnek. Az elme így is tele van pakolva mindennel, a nyelv pedig egy nem túl régi dolog. Biológiai érvek is szólnak amellett hogy a lehető legkisebbnek képzeljük el hát nyelvi képességünk velünk született szervező elveit. Technikailag is könnyebb ha nem kell sok szabállyal bajlódni, a következő részben ezt vesszük szemügyre.

Összegzés
A minimalista program nem egy kiforrott kutatási program, hanem egy vállalkozás, ami néha úgy tűnik túl sokat vállal. Viszont nagyon csábító és elegáns. A Ubiquity projekt szépségét számomra pont az adja hogy megpróbálja felhasználni ezt az elméletet és egyszerűbbé tenni a ember-gép interakciót és a lokalizációt is egyben. Habár sokszor úgy mutatják be Chomsky gondolatait hogy ez a "mainstream" irányzat, ez nem igaz. A minimalista program hívei valójában kisebbségben vannak, viszont a többség hozzájuk képest határozza meg magát (a nyelvészek körében egyfajta identifikációs tényező lett az "amiben Chomskyval nem értek egyet" listák készítése).

Fontos azonban belátnunk hogy ennek a megközelítésnek van egy erős esztétikai oldala is. A végletekig vitt egyszerűsítés nem biztos hogy célra vezető, viszont nagyon erős érvek szólnak a biológiai és esztétikai érveken túl hogy nem egy nagy szabályhalmazzal kell kezelnünk a nyelv leírását. A következő részeb ezeket a nagyrészt technikai okokat mutatom majd be.

2010. június 9.

Nyelvészet és interakciódizájn II. - elvek, paraméterek, minimlaizmus és Ubiquity

Ahogy arról már posztoltam a Ubiquity projekt teljesen új irányt jelent a számítógépes nyelvészet és az interakciódizájn területén. De milyen elvek rejlenek mögötte?

Az örök kérdés: szabályok vagy statisztika?
A számítógépes nyelvészet, nevéhez híven egyre inkább elmozdul a számítástudomány megoldásai felé. Ez azt jelenti hogy előtérbe kerültek az adatbányászat, a statisztikai és a nosql mozgalom kellékei. Hogy jó irány-e ez (ahogy egy kedves olvasó kérdezte) nem tudom megmondani. Nyilvánvaló hogy egy probléma megoldása ilyen eszközökkel lehetséges és értelmes, ezért az ilyen módszerek léte nem megkérdőjelezhető. A nyelvészetben is teret nyert a statisztikai megközelítés, és szerintem ez is rendben van.

Azonban ezen megközelítéseknek van egy amolyan "buherálós fílingje". Ezzel nem nézem le az snlp művelőit, sőt! Az ilyen buherálás szüli a legtöbb jó dolgot az életben, ezt hívjuk mérnöki munkának. Egy adott problémát megoldani (persze a rendelkezésre álló eszközökkel) nagy dolog. A tudományos ismeretek bizonyos értelemben művészetté válnak a jó szakemberek kezében. Igen ám, de mennyire lehetnek ezek a megoldások hordozhatóak? Vannak bizonyos mintázatok, az egyes problémák osztályokba sorolhatóak, de nem tudunk előre adott módszerekkel ráugrani egyre. A kedves olvasó végezhet egy kis gyakorlatot is. Keressen egy szöveget angolul. A GoogleTranslate segítségével fordítsa le magyarra és franciára/németre vagy egy másik nyelvre amit ismer (ok, lehetőleg indoeurópai nyelvre). Melyik fordítás jobb? [Igaz ez csak személyes élmény, de én ezt franciával és spanyollal szoktam eljátszani, de kértem már erre hollandul és németül beszélőket és tudománytalan felmérésem eredménye hogy ezen nyelvekre értelmesebb fordítások születnek.]

A  fenti kísérlet eredménye elvileg az hogy valamelyiket (hacsak kicsit is) jobbnak találjuk. Minnél közelebb van a két nyelv egymáshoz, annál jobb lesz a fordítás eredménye. A rendszer finomhangolása során nem tudjuk az általános elméleti hátteret felhasználni, hanem bütykölnünk kell. A nyelvészettel foglalkozók most hátradőlnek és vagy azt mondják "Na ugye! Nincs univerzális grammatika", vagy pedig mosolyognak "Nem tudják hogy vannak univerzális szabályok?".

És valóban ha a minimalista program működik egy-egy nyelvi rendszer leírása univerzális kell hogy legyen. Az elvek és paraméterek elmélete szerint az egyes nyelvek közötti különbségek csupán a paraméterek bináris értékeiben rejlenek. Ha ez igaz és ezen paraméterek formálisan is leírhatóak a nyelvi elemeken végzett műveletekkel együtt, akkor alapjaiban változtathatjuk meg az ember-gép interakciót és a számítógépes nyelvészetet. De hogyan is?

A Ubiquity projekt születése

Minden a régi görögöknél kezdődött! Oké ez csak vicc, de visszamehetnénk akár hozzájuk is. Egyszer egy srác, Aza Raskin, apja nyomdokaiba lépve elgondolkodott milyen is egy jó interfész és mi a baj a mostaniakkal. [A hivatkozott wikipedia oldalon találhatók linkek Raskin írásaihoz, érdemes őket elolvasni, ha nem akkor olvass tovább egy kis összefogalóért]

Raskin szerint a grafikus felhasználói interfészek forradalmiak voltak a maguk korában, azonban a technika fejlődése kihívások elé állítja ezt a technológiát is:
  1. A mai GUI alapú rendszereken futó programok redundáns funkciókat tartalmaznak, a sztenderdek hiánya miatt a funkciók helye nehezen található meg
  2. Nem veszik figyelembe hogy manapság egy felhasználó egyszerre több programot használ munkára/szórakozásra
  3. A GUI bogarászása a bonyolult menük esetében nem természetes, gyakran hosszadalmas
Ezzel szemben a régi, jól bevált unix alapú rendszerek rendelkeznek az interakciódizájn szempontjából is érdekes tulajdonságokkal
  1. Az operációs rendszerbe integrált apró, feladatspecifikus programok kerülik a redundanciát
  2. A különböző programok között az I/O átirányítás sztenderd módozatai könnyűvé együttműködésüket
  3. A szövegbevitel gyorsabb mint a grafikus navigáció
Ellenben a unix típusú rendszerek nem véletlenül nem lettek felkapottak az átlagfelhasználók körében, mivel
  1. A különböző kapcsolók, parancsnevek teljesen esetlegesek
  2. A bash és egyéb shell-ek szintaxisa eléggé távol áll a természetes nyelvtől
  3. Parancssorban nem élvezhetjük a modern multimédiás tartalmakat
Raskin alapötlete az Enso projekt, ami később a Mozilla Foundation Ubiquity-je lett elegánsan oldja meg ezt a problémát. A széttagolt alkalmazásokat, legyenek azok a gépen vagy a neten egy közös interfésszel köti össze. Ez az interfész egy egyszerű szövegbeviteli felületet mutat a felhasználónak aki természetes nyelvi parancsokat adhat ki. Így megmarad a szép GUI, és megkapjuk a shell előnyeit is.

Persze ez nagyon szépen hangzik, de a gyakorlatban az Enso projekt jégre került, helyét a Ubiquity vette át. Ez a projekt annyit visszavett az eredeti elképzelésből hogy nem törekszik a desktop alkalmazások integrálására, viszont annyiban előre mutat hogy lehetővé teszi a különböző netes felületek összekötését (nem csak gyári parancsokkal, hanem lehetőséget biztosít bővítésre is).

Lokalizáció újratöltve
A Ubiquity lokalizációja nem hagyományos módon történik. Amíg egy alkalmazás/honlap honosítása egyszerű fordítás, a Ubiquity-nél teljesen más a helyzet. Itt a parancsok természetes nyelvi (általában felszólító módú) mondatok. A program tkp. megérti hogy felhasználó mire utasítja, azaz interpretálja a parancsot.

Persze az egyik út az hogy az "e-mail this map to John" parancsot simán lefordítjuk és magyarul "küld el ezt Jánosnak" parancsot várunk. De akkor hogyan írhat valaki egyedi parancsokat? Ha van egy parancskészletünk angolul, akkor annak minden elemét le kell fordítanunk a célnyelvre?

Michael (mitcho) Erlewine MIT-s PhD hallgató erre egy nagyon okos ötlettel állt elő. [Írásait (nem csak a Ubiquity projektről) érdemes elolvasni] Válasszuk szét a parancsok írását és azok megértését! A saját nyelvén bárki írhat parancsokat, minden különösebb szakértelem nélkül. A parancsok megértését bízzuk egy külön rendszerre s lokalizáljuk azt!

Habár jómagam is csak pár hete ismerkedem a rendszerrel, teljesen magával ragadott. Viszont nagyon nehéz elmagyarázni másoknak. A parancs írás és értelmezés szétválasztása után sokan visszakérdeznek "Hogyan?". [Itt csak röviden térek ki erre, a következő részben próbálom ezt felvázolni bővebben.] Adott egy parancs "e-mailezd ezt el Katinak " és a hozzá tartozó akció ("vágd ki ezt a képet, nyisd meg a gmail fiókomat, nyiss egy üres levelet Katinak címezve és másold be a képet az üzenetbe") és az ennek megfelelő természetes nyelvi mondat "e-mail this to Kate". A szintaktikai viszonyok elemzése kapcsolja hozzá a parancsot és az annak megfelelő akciót a természetes nyelvi parancshoz.

"Na ez ugyanaz, csak hosszabban!" - szokták nekem mondani mostanában. OK! Megvan az elvek és paraméterek elmélet? Ha nincs akkor nagyon röviden összefoglalva: A nyelv univerzális emberi képesség, ezen alapul minden természetes nyelv. A nyelvek közötti különbségek arra vezethetők vissza hogy ez nem egy "kemény" képesség, csak elveket tartalmaz arra nézve hogy milyen lehet egy-egy nyelv. Amikor elsajátítjuk anyanyelvünket, akkor ezen képesség segít nekünk. Azaz nem tudjuk előre anyanyelvünket, azt meg kell tanulnunk. Viszont kulcsokat ad nekünk amikre figyelünk (elvek amiket a nyelv használ és paraméterek amik a nyelv jellemzői). Egyszerűbben kötött-e a szórend, agglutináló nyelvet akarunk-e elsajátítani, a főnévhez viszonyítva hol vannak a melléknevek stb. Elvileg a mélyben a nyelv az nyelv, a paraméterek határozzák meg milyennek halljuk (angol, dán, kantoni, malájállam, stb). Legyenek a parancsok a mélyben meghúzódó univerzális grammatika nyelvén megírva, így elvileg egy általános parancsot kapunk. Ha meg tudjuk adni egy-egy nyelv paramétereit, akkor a parancsok lokalizálása tkp. annyi hogy eldöntjük milyen nyelven fogalmazódott az meg.

Ha nem érted kedves olvasóm nem a te hibád, én is ismerkedem ezzel a megközelítéssel!

Miért nagy dolog ez?
Egyrészt a lokalizáció új dimenzióba kerül. Nem kerülnek utcára az alkalmazások fordítói, de megváltozhat az interakció gép és ember között, és a nyelvi akadályokat is eltüntetheti (vagy legalábbis csökkentheti). Gondolj bele egy kicsit ma mennyien használják a netet? Milyen nyelveken? Hol növekszik legjobban  felhasználók száma? Hol fog növekedni a felhasználók száma? Mennyire tudnak angolul az emberek? Mit szeretnek jobban, anyanyelvükön vagy egy idegen nyelven interakcióba lépni?

A szép az hogy a gyakorlatban is tesztelhetjük a minimalista program elveit. Ez az elmélet elegáns és szép, nem is beszélve arról hogy gazdaságos. Ahelyett hogy hatalmas adatmennyiséget szednénk össze lelassítunk! Csak az érdekel bennünket a nyelvi adatokból amik paraméterekre utalnak. De hisz ezt már a nyelvészek elvégezték! OK vannak még fehér foltok, de kb megvan ami kell. Van egy elméleted egy paraméterről, teszteld le, van már hol! Persze a Ubiquity-ben használt Parser2 nem tökéletes, de akár erre is használható. Mit nyerünk? Nem kell adatokkal bajlódni folyton, nem kell próba-hiba módszerekkel toldozgatni a rendszer amikor új nyelvre alkalmazzuk.  Ha minden jól megy, a távoli jövőben a repülő autók idejében, a lokalizáció annyit tesz majd hogy beállítjuk a paramétereket és kész!

2010. június 7.

Van-e (számítógépes) nyelvészeti paradigma?

Kuhn paradigma fogalmát nem tudjuk a társadalom- és humán tudományokra egy az egyben ráhúzni, és egy kicsit értelmetlennek tűnhet ezt erőltetni amikor a nyelvészet maga is úgy tűnik hogy ezer megközelítést fogad el. Azonban (szerintem) megmozdult valami!

Akit érdekel jobban mi is az a paradigma, az olvassa el Kuhn A tudományos forradalmak szerkezete c. kiváló művét. Én nagyon hevenyészett módon így jellemezném a fogalmat:
  1. szabályok egy tudományterület problémáinak vizsgálatára
  2. kommunikációs protokollok (hogyan mutatunk be egy problémát, tálaljuk annak megoldását, milyen folyóiratokat járatunk, konferenciázás stb)
  3. indokrinációs utak (kit tekinthetünk az adott tudomány művelőjének?, mit fedjen egy-egy képzési szint az egyetemeken stb)
Ez persze nem egy pontos definíció, de fogadjuk el most egy kicsit. A nyelvészetben szerintem az első pontban nem tudunk megegyezésre jutni. Annyi megközelítés létezik, ahány nyelvész, de legalábbis ahány tanszék. Szerintem ez önmagában nem lehet probléma, hiszen a fizika vagy a természettudományok is rengeteg kis részterületre "estek szét" és talán nincs senki aki egyben tudná látni már a "tudományt". De akkor mi adja ki azt hogy valakit egyszerűen fizikusnak titulálunk és nem terjedelmesen részecske- vagy vagy szilárdtest- nano- stb. fizikusnak. Persze, sokszor ezt a hosszú terminust is alkalmazzuk, de a közembernek csak simán fizikusok.

Én a kettes és hármas pontokban látom azt ami összeköti őket. Egyrészt az indokrináció bevett, a világban szinte mindenhol elfogadott tankönyveken alapul, a tantervek kb. azonosak (eltérés az adott tanszéken oktató emberek kutatási területéből adódik, hiszen választható és magasabb stúdiumok nyilván ebből az irányból lehetségesek csak). De a közös alap megteremti a közös kommunikációs csatornákat, és persze ez visszafelé is igaz.

A nyelvészet területén azonban szerintem más a helyzet. Persze vannak nagy nyelvészeti konferenciák, lehet menni nyári egyetemekre, fasza folyóiratok is akadnak amik nem szűkítik le magukat egy-egy alterületre, és mindenki kedvence a LINGUIST List tényleg mindenről beszámol minden területről (nyelvfilozófiától a fonetikáig tényleg mindenről).

De mi a helyzet az indokrinációval? Nos ez zűrösebb terület! Vannak ugye a nyelvszakosok (ide értve a magyarosokat is), meg a sima nyelvészeket. De vannak akik pszichológiát tanulnak vagy számítástudományt és aztán lesznek nyelvészek. Szerintem ez gyönyörű dolog! De nem szabad elfelejteni hogy ennek veszélyei is vannak!

Ahhoz hogy megtaláljuk a közös hangot, kell egy közös alap. A tudomány nem csak a tudás összehalmozása, hanem kultúra is. De lehet-e ebben a szépséges káoszban rendet rakni? Kell ez nekünk? Az én válaszom egy határozott igen. Nem kell elsorvasztani a sokszínűséget, de egy minimumot meg kell határozni. Ez persze lehet bővíteni (pl alap- mester és PhD képzésre bővítgetni), de ez nem szükségszerű, sőt néhány részt felesleges ahogy egyre jobban szakosodunk.

Itt az én listám:
  1. Alapvető valószínűségszámítás és statisztika
  2. Gráfelméleti alapok
  3. Logika és naiv halmazelmélet
  4. Minimális programozási ismeretek egy OO nyelvben
  5. Korpusznyelvészet és nyelvészeti adatbázisok ismerete
  6. Kísérleti nyelvészet
  7. Szakmai ismeretek (kutatás etika, a szakma szerepe, szakmai szervezetek stb)
Ezt persze ki lehet egészíteni szintaxissal és szemantikával. Vagy éppen egy adott nyelv történeti leírásával, tipológiával stb. De ne felejtsük el hogy egy olyan minimumot keresünk amit egy képzeletbeli pszichológia szak "pszicholingvisztika specializációját" ill egy számítástudomány szak "számítógépes nyelvészet" szakirányát is képviselhetik. Nyilván nem lehet egyszerre bepasszírozni ennyi mindent egy már meglévő szakba, de erről a palettáról lehet válogatni.

Úgy gondolom amíg nincs meg legalább egy minimális közös alap, vagy amíg mindenki magának szedegeti azt össze, addig nem beszélhetünk paradigmáról (az én használatomban). Hogy ez baj-e, azt nem tudom, csak érzem. A poszt végén ajánlott két cikk rámutat ennek hiányára és hátulütőire.

A poszt megírását az alábbi két írás ihlette:
Ted Pedersen: Empiricism Is Not a Matter of Faith, Computational Linguistics September 2008, Vol. 34, No. 3: 465–470.
Stefan Th. Gries: Methodological skills in corpus linguistics: a polemic and some pointers towards quantitative methods