2010. május 31.

Nyelvészet és interakciódizájn I. - Új irány?

Azt hitted hogy a számítógépes nyelvészet gépi fordításra, szövegbányászatra meg keresésre való? Miközben fákat rajzoltál, logikát tanultál, nyelvhierarchiával fárasztottad az agyadat, arra gondoltál milyen szexi dolog a webdizájn? Fáradtan nézted programozó barátodat, aki nagyon örült hogy végre összekötheti művészhajlamait tanult szakmájával a humán-komputer interakció vagy éppen az interakció dizájn területén? Na ennek most vége!

1. A számítógépes nyelvészet hagyományos felfogása
A nyelv számítógépes kezelése nagyon ígéretesnek tűnt a komputációs őskorban. Üss fel egy bevezető könyvet s azt fogod látni hogy az ötvenes években a gépi fordítást közelinek tartották. Aztán megváltozott a világ, de még mindig reménykedtek a kutatók és geekek hogy lesz egyszer saját HAL-juk. A nyolcvanas években Bill Gates meg volt győződve hogy a következő nagy áttörés a beszédalapú vezérlés lesz a számítástechnikában.

Mostanában pedig az van hogy nem tudjuk hogy mi van. Persze akadnak még szép számmal számítógépes nyelvészeti képzések, ezek nagy részére nyelvész (sőt a liberálisabb angoloknál filozófus, pszichológus) végzettsége is be lehet jutni. De, ha végig böngészed az elsnet vagy a linguist list jobs szekcióját, gyakran találsz "bs/ms/phd in computer science with experience in nlp" hirdetéseket. Persze láttam már olyat hogy valaki bejut ilyen helyekre (számítógépes) nyelvészként, de az ilyen muksók száma csökken.

Ennek igen egyszerű oka van szerintem: a statisztikai megközelítés nyert. Ez nem jelenti azt hogy a logikai megközelítésnek annyi, vagy hogy nem fog még feljönni. Momentán ez van.

No nem kell a kardunkba dőlni. Egyrészt ahogy már arról posztoltam, nekünk is fejlődni kell, a statisztikai módszerek megtanulhatóak. Habár nagyon szeretem Peter Norvigot, bizonyára nem értünk egyet legutóbbi esszéjével (segéd anyag itt), melyben nagyon leegyszerűsítve amellett érvel hogy igazán nagy adathalmazzal pusztán egyszerű, a nyelvi strukturát tkp figyelmen kívül hagyó, valószínűségi módszerekkel szofisztikált gépi fordítás is elérhető akár.

Szintén jó hír: a beszédfelismerés terén is kezd visszatérni a nyelvészeti tudás. Miért? Mert a hirdetések 99%-os pontossága bizony csak bizonyos speciális estekben igaz, és csak eléggé speciális területekre szűkítve. Ezen a területen, a jelfeldolgozás hagyománya miatt is, úgy gondolták minden megoldható egy "kis trükközéssel". Ennek ékes bizonysága egy névtelenség homályába burkolódzó IBM-es kutató elhíresült mondása: "Every time I fire a linguist my system improves." [Olvasni egy blogban olvastam először, de ha jól emlékszem fonetika órán hallottam először - jajj 2002-ben]. Persze ez így nagyon sarkos, de nyelvészeti tudás nélkül is lehet beszédfelismerő rendszereket építeni. Ami igazán érdekes hogy a gyakorlatban ez a hozzáállás 90% feletti eredményességet hozott. De elég ennyi? Miért nem lehet HMM módszerekkel sokkal tovább jutni? Azért mert nem egy sima bottom-up rendszerrel van dolgunk, hanem az alulról építkező feldolgozás kiegészíti egy top-down rendszer is. Itt jönnek képbe újra a nyelvészek, pszichológusok, fiziológusok és egyéb csodabogarak.

2. Számítógépes nyelvészet ma
Hol van akkor a helye egy számítógépes nyelvésznek ebben a katyvaszban? Egyrészt nem kell lemondanunk arról hogy a mesterséges intelligencia mellett mi is kivegyük a részünket korunk "buzz words" tengeréből. Text mining, data mining, computational intelligence, information retrieval, érezük hogy lenne itt keresni valónk. Korpusz nyelvészek szíve dobban ha belegondolnak mekkora adattömeggel dolgozhatnának ha nekik is lenne egy felhőben futó hatalmas adatbázisuk, vagy egyszerűbben fogalmazva a yahoo vagy a google hatalmas szöveges adataira gondolnak, "web as a corpus" mormolják lefekvés előtt. Van remény! (Nekik pl itt). Nem kell computer scientist átképzésre menni és a diplomát kidobni az ablakon! A nyelvész, még ha számítógépes is, elsősorban nyelvész. Viszont meg lehet, és meg is kell tanulni az alapokat, el kell sajátítani egy új nyelvet amit nevezzünk statisztikának (de értsük bele a valószínűségszámítást is). Ahogy angolból is van alap- közép- és felsőfok, úgy itt is. Lassan, de biztosan el lehet jutni egy erős középfokra, ami már elegendő munkánk elvégzéséhez. (Viszont ha nem tudsz diszkrét matekul, akkor azt is meg kell tanulnod).

Ma nyitva áll a pálya (no nem itthon, ezt tapasztalatból mondom), ha értelmesen koncentrálod erőidet. Szerintem ma egy nyelvész eszköztárába tartozik hogy ismerje a python és az R nyelveket, valamit pár adatbázissal képben legyen. Ezt lehet bővíteni egy kis web ismerettel (html, javascript alapok), prolog-ot és/vagy haskell-t sokan ismerik általában. Nagyon nagy előny a Java (esetleg egy SCJP certification) és alaposabb OOP ismeretek.

3. Számítógépes nyelvészet holnap
A holnap az interakció! Bill Gates álma még messze van, de a nyelv egy remek eszköz az interakcióra (meg arra hogy ne akarj interakcióba kerülni másokkal, de ez itt nem játszik). Igen, lassan elérünk a címben ígért interakció dizájnhoz.

Már most itt közlöm, hogy olvastam Hume-ot, és a jövőre nem tudok biztosat mondani, az sem tuti hogy holnap fel fog kelni a Nap. Ebből levezethető hogy amit itt mondani fogok az spekuláció, de van alapja, ma is láttam a Napot felkelni, és használtam a Ubiquity-t.

Hozzászoktunk a grafikus interfészekhez, de nagyon. Egy konzol olyan fapados. De kerestél már valamit mélyen egy menüben? Dolgoztál már egyszerre több alkalmazáson, amelyek mindegyik más struktúrát képzelt el a legjobb GUI alatt. És persze az egyikben van egyféle helyesírási progi, a másikban egy másik, esetleg egy kalkulátor, de mind más, más funkciókkal. Ellenben a konzolok élő őskövülete, a bash (és testvérei) más filozófián alapulnak. Minden kis részfeladatra egy-egy spéci kis program áll rendelkezésedre, alapvetően közös alapokon (pl. közös regex könyvtár) és alapból úgy tervezték hogy együtt dolgozhassanak (és az egyik ne a másik melóját végezze) a IO átirányítás és a csatornák(pipes) ha ismerősen hangzanak, erre valók.

Vissza akkor a konzolhoz? Ezt még a megrögzött bash-fanok sem akarják. Sokkal inkább egy közös interfészre van szükség. A Ubiquity project őse ezt célozta meg. A menük böngészése helyet, egy egyszerű, természetes nyelvszerű szöveges paranccsal meghívni a kívánt funkciót sokkal kézenfekvőbb mint végig sakkozni a menüket és control-c control-v nyomkodással tölteni az időt. Pl. "ezt a képed másold be ebbe a doksiba és küld el Ferinek". Na jó, ez jól hangzik, de ennyire flottul még nem megy.

Egy másik fontos tényező a lokalizálás (i18 mostanában menőbb nevén). Minden alkalmazás minden pontját lefordítani biza nagy munka, de elvben ha van egy fent leírt alkalmazásod, akkor csak a megadott parancsokhoz kell kapcsolódni a programnak. Pölö egy szövegszerkesztő értse a "szúrd be a képet" parancsot, oszt jó napot...

Kedvenc, sajnos most éppen egy kicsit a fősodorból kiesett Mozilla projectem ezt próbálja meg elérni. És figyelem! Megszállott generatívok, szintakták és egyéb fura alakok. A lokalizálás (elvben, gyakorlatban még nem teljesen) a mi szeretett "principels and parameters" elméletünkön alapul! Magyarán lokalizálni annyi, mint megírni az adott nyelv egy töredékének grammatikáját. Ez a grammatika pedig a paraméterek beállítása (elvben, gyakorlatban még nem).

A kör bezárult, vissza az eredethez. A (számítógépes) nyelvész tudását felhasználva segíti a polgárokat jobban boldogulni, azaz jobban uralni, kezelni, használni gépüket, túllépve a nyelvi korlátokon is. Csoda szép!

4. Folyt.köv.
A továbbiakban körbejárjuk a Ubiquity projectet. Kezdjük azzal milyen alapelvek mentén szerveződött, mit sikerült elérni, miért jegelték. Ezután egy kicsit megnézzük hogyan lehet szabályokat írni hozzá és majd egy kicsit arról is szólok hogy milyen szerepe lehet a nyelvnek/nyelvészetnek az interakciódizájn területén.

2010. május 17.

Valószínűség, statisztika és nyelv

Ha már túl vagy a statisztika alapjain, vagy élénken él benned a középiskolai matek, esetleg igazi matek zseni vagy, akkor itt az ideje egy kicsit a nyelv statisztikai tulajdonságaival is foglalkoznod. Ha nem, talán egy régebbi posztom segít neked felturbózni tudásodat.

A statisztikai/valószínűségi megközelítést sokan a nyelvtől idegennek tartják, maximum hallottak Zipf törvényéről, de alapvetően idegenkednek ezen módszerek alkalmazásától. Hagyományosan a nyelvészet szabályokat keres, ha-akkor formában megfogalmazott szabályokat. Ahol kivételek vannak, ott is szabályokat keresünk. Persze a nyelv nem éppen olyan mint amilyennek látni szeretnénk, de hát erre is van egy szép elméletünk, a kompetencia - performancia megkülönböztetés Chomskytól. Nagyon röviden, egy kicsit félreértelmezve, ez annyit tesz hogy vannak a szabályok (kompetencia), de hát mi véges lények vagyunk akik ezen szabályokat felépítésük folytán nem képesek 100%-ra hozni, azaz hibázunk.

Habár én hiszek ebben a megközelítésben, a helyzet az hogy egyre többen kérdőjelezik ezt meg. Ők már nem a szobában ülve találnak ki példamondatokat, hanem "kimennek az emberek közé", adatot gyűjtenek a nyelvhasználatról és azt elemzik ami van. Magyarán nem egy elmélethez gyártanak példákat, hanem az adatokból akarják kihámozni a mögöttük rejlő rendezőelvet (ezt ők mondják a szabálygyárosokról, nem én!). Egy nagyon jó, olvasmányos és átfogó kötet Probabilistic Linguistics mutatja be hogyan alkalmazzák a kutatók ezt a megközelítést a nyelvészet különböző területein. Ha nem is borítótól hátlapig, de a téged érdeklő részeket legalább érdemes elolvasni.

Személyes véleményem hogy a statisztikai megközelítés sokat segíthet nekünk, de önmagában nem képes megmagyarázni mindent. Viszont egyre népszerűbb, hiszen sok konkrét eredményt ért el és gyakorlati alkalmazásai sem elhanyagolhatóak. Gyakorlati alkalmazásai miatt a számítógépes nyelvészet ma legfelkapottabb megközelítése épp a statisztikai módszer, s ezért szivárog át a nyelvészetbe is. Ha nem kerülhetjük meg, akkor olvassunk olyan könyveket amik megszerettetik velünk!

Előzetes megjegyzések
Ha valaki meg akar tanulni valamit, akkor nem csak az elméletet kell bebifláznia, hanem valahogy kontextusba kell hoznia azt. Mire jó X elmélet és miben más mint Y, Z? Mire használjuk? De ezek mellett nem árt tudni hogy hogyan használjuk! Gondolj arra hogy ma Magyarországon mindenki ért a focihoz és a gazdasághoz elméletben, de mi van a gyakorlattal!

A nyelvészet terén olyan szerencsénk van hogy nyugodtan kibicelhetünk és végig követhetjük mások munkáját. Megismételhetjük és magunk is kísérletezhetünk, mégpedig otthon a fotelból. Ehhez viszont szükségünk van egy-két dologra.

A legfontosabb dolgunk az R statisztikai programozási nyelv. Itt nem részletezem hogyan töltsd le és telepítsd, ezt az R oldalán megtalálod. Kövesd az operációs rendszerednek megfelelő utasításokat és nem lesz gond. Szükséged lesz még egy programozó szövegszerkesztőre, ha linuxon vagy OSX-en nyomulsz én a Vim-et és az Emacs-et ajánlom, de a Google a barátod és a "programmers editor" kifejezésre keresve rátalálhatsz a saját kedvencedre, amely oprendszereden futni is tud.

Az itt következő könyvek az R használata során tanítanak neked hasznos módszereket és nem mellékesen programozni is megtanulhatsz (nem leszel egy guru, de jó alapod lesz velük). Mindegyik könyv tartalmaz technikai útmutatást az R letöltéséhez valamit a könyvben használt csomagok telepítéséhez. Kezd azzal hogy a csomagokat telepíted!!!

Ingyenesen hozzáférhető könyvek
Baayen: Analyzing Linguistic Data
Kicsit nehéz követni ha még nem  programoztál és nincs semmi fogalmad a statisztikáról, de nagyon jó könyv és egy igen kidolgozott vázlata ingyenesen letölthető. Majdnem megegyezik a hivatalos kiadással és nagyon hasznos útmutató.

Shravan Vasishth - Michael Broe : The foundations of statistics: A simulation-based approach
Baayen könyvénél nehezebb és egy kicsit nehézkesebb a nyelvezete is, de ingyenes és alapos könyv. Személyes élményem hogy elsőre untam és abba is hagytam az olvasását, de másodszorra nem tudtam letenni. (Pont a fenti könyv után jött ez)

Pénzes, de kiváló könyvek

Stefan Th. Gries: Quantitative Corpus Linguistics with R
Ha meg akarsz veni egy könyvet, ez az amire érdemes költened. Nagyon alaposan és érthetően magyarázza el a korpusz nyelvészet alapjait, a statisztika használatát ezen a területen és az R alapjait. Ez az amire azt mondom hogy a KÖNYV. Kontextus, gyakorlat és elmélet egy helyen.

Baayen: Analyzing Linguistics Data
Nos ezt fent már említettem az ingyenesen elérhető anyagok között, de itt is helyen van. A CUP által kiadott változat néhol eltér a vázlattól és azt kell mondjam jobb is. A különbségek nem eget verőek, de ebből a verzióból szerintem jobban lehet tanulni.

Keit Johnson: Quantitative Methods in Linguistics
Ez a könyv pár éve még szabadon elérhető volt a szerző honlapján, sajnos amióta megjelent nyomtatott formában is már nem tölthetjük le. Ez előbbi könyveknél sokkal nehezebb és a nyelvezete is nehezebben követhető (legalábbis nekem). Én mégis nagyon ajánlom, különösen nyelvészeknek, mivel igazi "nyelvészeti problémákat" vizsgál.

Összegezve
A fenti könyvek nagyon sokat segíthetnek annak aki a nyelvészet felől közelít a számítógépes nyelvészet felé. Biztos alapokat nyújtanak és az R nyelv ismerete hasznos, mivel egyre több álláshirdetésben találkozhatunk vele. Úgy érzem azonban, hogy nem lehet eléggé hangsúlyozni hogy a tárgyalt könyveket nem lehet egyszerűen olvasni. Aktív hozzáállást követelnek meg. Nem elég a példákon végig dolgozni, saját projekteket is kell készítened (gyakorlásnak és örömforrásnak is remek dolog ám ez).

2010. május 12.

Minek nevezzelek? - számítógépes nyelvészet, természetes nyelvi feldolgozás, vagy mi?

Minek is nevezzük azt amikor nyelvi adatot bütykölünk a géppel? Vagy egy szép elméletet akarunk tesztelni valahogy egy programmal. Van köze a kettőnek egymáshoz? Mi a különbség a számítógépes nyelvészet és a természetes nyelvi feldolgozás között? Mit takarnak az angol elnevezések (computational linguistics, natural language processing, natural language engineering)?

Kezdjük a végén! Olyan hogy számítógépes nyelvészet nincs. Illetve van, mert mi annak hívjuk, de ha lefordítjuk az angol terminust, nem számítógépes nyelvészetet, hanem komputációs nyelvészetet kapunk. Hogy van-e ilyen szó a magyarban azt nem tudom, és szerintem nem árul el sokat a tudományról, talán ezért jobb is a számítógépes nyelvészet kifejezés. Nem tudom a "computational fluid dynamics " magyar fordításának elfogadnák-e a "számítógépes folyadék dinamika" fordulatot, de lehet ott sincs jobb. Ennek analógiájára nincs hazánkban olyan hogy computer science, van informatika, programozó, programtervező meg kiskutyafüle. Nálam okosabbak döntöttek így és átment a köztudatba, de szerintem ez baromság.

Dijkstra mondotta hogy a számítástudomány annyira szól a számítógépekről, mint az asztronómia a teleszkópokról. Szóval maradjunk annyiban jelenleg hogy számítógépes nyelvészeten (computational linguistics) valami olyasmit értünk ami a nyelvészetet próbálja komputációs keretben tálalni. Ez azt jelentené hogy alaptudománnyal állunk szemben. De ahogy a computer science terminussal illetett cuccok is gyakran gyakorlatiak ill. alkalmazott tudományok, így a vizsgált fogalom alá is be lehet suvasztani akár egy spell checkert is.

Akkor mi van a természetes nyelvi feldolgozással (natural language processing). Biztos jó oka van ennek a fordításnak is, de nekem ez sem teccik. Van olyan hogy signal processing ami jel feldolgozás. Aztán ott van a speech processing, az annyit tesz hogy beszéd feldolgozás. Nekem az a fixa ideám hogy natural language processing alatt a természetes nyelv feldolgozását értjük. Nem nyelvi feldolgozást, mert a nyelvi feldolgozás nekem valami olyan hogy egy MRI képet nézek és látom mi aktiválódott bizonyos ingerek feldolgozásakor (amikor persze mi az inger, nyelv, ezért a nyelvi rész dógozza fel, ergo nyelvi feldolgozás).

A terminológián túl ott van a hagyomány. Anno nyelvészek rácuppantak a gépekre és elnevezték magukat computational linguist-nek (amúgy LinkedIn-en terjed a computational zárójelezése a linguist előtt). Aztán mérnökök, computer scientistek rácuppantak az AI-n keresztül a nyelvi problémákra. Nekik a signal processing mintájára jött a natural language processing ugrott be mint cool név.

Végül pedig ott a nagy különbség, szabály vagy statisztika! A mérnök emberek kapták fel először, de már a nyelvészeket is megfertőzte a statisztikai megközelítés. De a mérnökök az nlp-re tettek, ami átcsúszott a cl területére. Hogy bonyolódjon a helyzet sokan, főleg a biznisz világában, a natural language engineering nevet vették fel (ez ugye jól hangzik a befektetőknek - nyelvészetre pénzt nem hiszem hogy adnának).

A lényeg? Tök mindegy hogy nevezed! Én azt vettem észre hogy nyelvészek, kognitív tudorok, és AI végzettek szeretik a cl-t használni, a többiek az nlp-re tesznek, HR-esek meg nle-t mondanak néha. De ez csak tendencia, a kifejezések felcserélhetőek szabadon.

2010. május 10.

Logika mindenkinek III - a természetes nyelvek szemantikája

A bevezető könyvek bemutatása és az automata elmélet és kiszámíthatóság problémája után elérkezett az idő hogy egy kicsit gyakorlatibb terepre merészkedjünk. A természetes nyelvek szemantikája már gyakorlati terep, de még egy lépéssel a számítógépes alkalmazások előtt vagyunk, de innét már tényleg csak egy lépés. Ha nagyon türelmetlen vagy akkor régebbi blogbejegyzéseimből ajánlom neked a funkcionális programozásról ill. a logikai programozásról szólóakat.

A szemantika egy nagyon tág fogalom!
Volt már akit meglepett ez a kijelentés, de tényleg igaz. Nem, ebben nincs semmi ellentmondás! OK, jól tudod a szemantika a jelentés tudománya, tehát azzal foglalkozik miképp áll össze egy egy mondat, vagy akár szó vagy bármilyen kifejezés jelentése. Csak nem mindegy mit tekintesz alapnak és az sem hogy milyen elvek mentén kutatod a részek összekapcsolódását egésszé.

A logika alapfogalmait a természetes nyelveken keresztül vezeti minden tankönyv, de ha csak az implikációra gondolunk, érezzük hogy nincs teljes fedés a két fogalom között. Sokáig úgy gondolták hogy a filozófiai analízisen kívül nem is lehet fedésbe hozni logikai eszköztárunkat a nyelvvel - habár ez nem semmi, elég csak Frege Jelentés és jelöletére (és más esszéire) vagy Russel híres On denoting-jára gondolni.

És jött Montague
Aztán jött Montague, és minden megváltozott. A természetes és mesterséges nyelvek közötti éles választó vonalat a generatív elmélettől ihletve elvetette és arra gondolt hogy a szintaktikai struktúrával párhuzamosan jön létre a szemantikai interpretáció. Jól hangzik?! Nem kell félni, a legtöbb eddig említett könyvben találkozhatsz Montague módszerével, ha más nem intenzionális logikával. A filozófusok és logikusok persze örültek a megközelítésnek (vagy ízekre szedték), de a nyelvészek egy érdekes alfaja fogadta lelkesedéssel igazán. Egy kis idő elteltével egyesek odáig merészkedtek hogy nem egy egy mondat interpretálását akarták megadni, hanem egy-egy diskurzusét (ok igazából pár mondatét) és megszületett a diskurzus reprezentációs elmélet (DRT).

Mit olvass?
Mivel a dolog nagy részét már ismered, most csak egy rövid felsorolást adok, válasz magadnak egy, esetleg két könyvet a listáról. A lényeg hogy láss egy nyelvészeknek írt logikai bevezetőt, nyelvészek által végig gondolt példákkal.

Ha ez megvan akkor a Montague grammatika klasszikus bevezetőjét és a DRT alapművét kell kézbevenni.
Nos ha ez mind megvan, akkor már csak egy kiegészítőre van szükséged:
Ha unod a sok könyvet, akkor olvasd csak ezt! Ebből láthatod hogy mit is csinálnak ezen a területen.

Összegezve

Mostanában nem cool logikával foglalkozni és a szabály-alapú megközelítéssel sem gyakran találkozunk méjnstrímben, de
  • a logikai megközelítés még él
  • a hibrid modellek elterjedtek/visszatértek
  • az algoritmusok megértéséhez jól jön a logika ismerete
  • pedagógiai szempontból hasznos a programnyelvek elsajátítása előtt/közben logikát tanulni
Vége
Rövid ajánlóm végére értem. Köszönöm hogy olvastatok :D Nagyon jól esett hogy kértétek a sorozatot és az is hogy infósok érdeklődtek. Mivel a blogot olyanoknak szánom akik egyedül vagy kevés segítséggel indulnak neki ennek a szép tudománynak, a későbbiekben is fogok még ilyen "könyvismertetőket" írni. Mivel személyes élmények alapján írok és azt hiszem a humán tudományok felől érkezők ezen a téren nagy nehézségekbe ütközhetnek, az ő szempontjukból közelítem meg a témáimat (és örülök hogy a reáliák tanulói is hasznosnak találják mindezt.)