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.)

2010. május 9.

Logika mindenkinek II - automaták, formális nyelvek és kiszámíthatóság

Sorozatom első darabjában bevezető könyveket ajánlottam a különféle hátterű embereknek. Ebben a részben a logikával szorosan összefüggő, és történeti okok miatt is nehezen elválasztható, ún automata elmélettel foglalkozom. Olyan könyveket igyekeztem összeszedni amelyek segítenek egyfajta minimum tudás elsajátítását. A hangsúly most is azon van hogy a filozófia/logika és a nyelvészet felől érkezők találjanak olyan könyveket melyek segíthetnek nekik. Persze nem szabad elfeledkeznem arról hogy akadnak programozó/programtervező informatikus olvasóim is, így röviden nekik is ajánlok egy könyvet majd.

Boolos et all.: Computability and Logic

Ha már van egy alapvető logikai műveltséged, ez a könyv nem okozhat meglepetést. Ugyanis nem elég tudni hogy mire képes a logika, jó tudni a határait is (Wittgenstein Tractátusa is erről szól, hol húzhatjuk meg a logika határait). Miért érdekes ez? Nos ha a nyelvvel foglalkozunk, és számítógépes feldolgozásról beszélünk, akkor tudnunk kell hogy mire képes a formális rendszerünk. Nyilván valamilyen szabályrendszert állítunk fel és bízunk benne hogy használható eredményünk lesz, de tudnunk kell hogy meddig mehetünk el. Ezért ez a könyv nem csak a kiszámíthatóság fogalmát tálalja a filoszoknak szépen, de előkészíti a talajt hogy az algoritmusok nehezebb világát is megismerhesd majd. A könyv feladatai kötelezőek! Megoldásuk/végig gondolásuk nélkül szerintem nem lehet megérteni a témát. Fontos! A korábbi kiadások sok nyomdahibát, pontatlanságot tartalmaztak, ezért a hivatkozott kiadást vagy későbbit használj!

Smith: An Introduction to Gödel's Theorems
Nagel et all.: Godel's Proof

Gödel tételei központi helyet foglalnak el a logika elméletében. Megértésük nem csak ezért fontos, sokkal inkább egy gyakorlati oldalát emelném ki ennek: az alapok biztos ismerete elengedhetetlen hozzá. Nem beszélve a személyes "aha" élményre, amiben sokaknak volt része ezen könyveket olvasgatva (persze ez csak az én szűk baráti köröm).

Partee et all. Mathematical Methods in Lignuistics
Az előző posztban már írtam erről a könyvről és az egekig magasztaltam. Nincs más ennyire átfogó könyv a piacon. Nyelvészeknek az első laptól az utolsóig kötelező! Filoszok, ha már olvasták a BML-t vagy a GAMUT-ot, lapozzanak a formális nyelvek és az automata elmélet részhez! Sajnos nem tudok olyan könyvről, amely filoszoknak tálalná a formális nyelvek elméletét. Szerencsére a nyelvészek és filoszok logikához való viszonya hasonló, ezért könyveik is nagy átfedést mutatnak. Ezért bátran olvashatja ezt a könyvet egy filozófia felől érkező is, de matekosok és számítás tudorok is haszonnal forgathatják.

Itt egy kicsit elkanyarodok. "Miért is kell nekem ezeket is tudnom?" "OK, Gödel kell nekem hogy lássam hol a határ, de ez nagyon nem logika." Ilyen kérdéseket hallottam már párszor, még olyantól is aki profi számítógépes nyelvész lett (azaz ebből él). Persze nem kell profinak lenned, hiszen nem logikusnak készülsz. De formális nyelveket használunk, abban reménykedve hogy ezek legalább valamennyire leírják a "támadott" természetes nyelvet. A számítógép buta, világos szabályokat követel meg. Sajnos a természetes nyelvek nem ilyenek. Így a nyelvek és automaták elmélete ad alapot arra hogy tisztában legyünk mennyire lehetünk sikeresek. Megint a határok problémájánál vagyunk, és ennyiben (is) összefügg az automata elmélet és a formális nyelvek elmélete a logikával.

Hopcroft et all.: Introduction to Automata Theory, Languages, and Computation
Sipser: Introduction to the Theory of Computation

Ezeket a könyveket azoknak ajánlom akik a szigorúan formális tálalást szeretik, azaz matekosoknak és számítás tudoroknak. Az érdeklődő bölcsészek szerintem csak akkor képesek megemészteni ezeket, ha előtte már átrágták magukat a fenti könyveken (vagy azok egy részén). Itt már nem csak szimplán tálalják a szükséges ismereteket egy kis magyarázattal, hanem az egyes tételek bizonyításait is olvashatjuk. Habár nem árt tudni ezeket, és nagyon hasznos pár tétel formálisabb átnézése, nyugodt lelkiismerettel ki lehet hagyni a nehezebb részeket.


Összegezve
Habár ez a terület elhanyagolt, nem szabad megfeledkezni róla. Már csak azért sem, mert a logikán kívül, az algoritmusok területével is érintkezik, és remek terep hogy ennek befogadására is felkészülj.

Nem győzőm hangsúlyozni azonban hogy itt csak támpontot találsz. A döntés rajtad múlik. Ismerned kell önmagad, és időt kell szánnod a megfelelő könyv kiválasztására.

2010. május 4.

Logika mindenkinek I - bevezetés

Egyáltalán nem bánom, de a blog lassan kezd átmenni olvasmány ajánlóba. Azért remélem hogy hamarosan áttérhetek más írásokra is, de Anita kérésének eleget téve most arról írok hogy hol/mit érdemes logikáról olvasni/tudni.

A logikát sok terület felől lehet megközelíteni, hiszen talán az egyetlen igazán interdiszciplináris tudomány. Mivel a tudomány nyelve az angol, főleg angol nyelvű könyveket fogok ajánlani, egy kivételével (ami viszont a legtöbb könyvön túltesz!!!).

Ruzsa - Máté: Bevezetés a Modern Logikába
Sajnos a későbbi kiadásokból kimaradt Máté András történeti áttekintése, de Ruzsa munkája továbbra is kapható. Ha még nem hallottál Ruzsa Imréről, érdemes elolvasni legalább a wikipédia szócikket róla. Itt röviden csak annyit, hogy a modern logika hazai meghonosítója, eredeti hozzájárulása sem elhanyagolható a tudományhoz. Ha filosz vagy, Mekis Péter könyvismertetőjét/kritikáját is érdemes elolvasnod.

A könyv egy középiskolai tudásszintnél többet nem tételez fel az olvasótól, talán csak átlagon felüli érdeklődést. Alapvetően két részből áll a könyv, extenzionális és intenzionális logikákkal foglalkozik. Mivel elsősorban filozófusoknak íródott, halmazelméleti szemantikát alkalmaz, de nem marad ki belőle a természetes levezetés és a Gentzen kalkulus sem. Az extenzionális részben pedig a magyar nyelv egy töredékének formalizálásával (Montague grammatika) is megismerkedhet az olvasó.

A könyv egyszerűen remek. Minden benne van amit tudnod kell! Nem csak filozófusok, hanem nyelvészek és számítástudományi szakemberek is hasznát vehetik, a matekosoknak is érdekes kiegészítő olvasmány lehet a könyv. Sajnos azonban a magyar logika irodalom behatárolt. Így érdemes az angol kiadványokat is megismerned. Ha megvan a BML, a végén található  angol-magyar szakmai szószedetnek nagy hasznát veheted!

CMU Open Learning Initiative Logic & Proofs (ingyenes!)
A Carnegie Mellon egyetem filó tanszéke nekem nagyon szimpatikus, egyrészt mert sok ingyenes anyagot készítenek, másrészt meg szerintem amit ők csinálnak az a nagybetűs analitikus filozófia (vess egy pillantást a honlapjukra). Nos ez az igen helyre kis tanszék részt vette egy jó bevezető elkészítésében aminek nem is olyan meglepő módon a Logic and Proofs címet adták.

Maga az anyag jó és igényes, de nem igazán átfogó és ennél mindenképpen többre van annak szüksége aki a nyelvvel akar foglalkozni (szerintem még akkor is ha ez a szociolingvisztikát jelenti éppen valakinek).

Partee et all: Mathematical Methods in Linguistics
Nyelvészeknek ez alapmű! A címe lehetne inkább bevezetés a diszkrét matekba nyelvészeti példákkal. Nagyon jó és érthető könyv. A halmazelmélettől kezd, az extenzionális és intencionális logikát halmazelméleti szemantikával mutatja be, emellett még algebrával és automata elmélettel is ismerkedhet segítségével az olvasó. Ha önállóan dolgoznád fel a könyvet, érdemes Partee egyik órájának honlapját is átbogarásznod hogy jobban képben lehess s kiegészítőket is találj.

Gamut: Logic,Language, and Meaning Vol 1&2
Én nagyon szeretem a GAMUT-ot, habár egy megközelítést tükröz erősen és két kötete ellenére sem fedi le a "nemzeti minimumot". Viszont érthető, sok feladatot tartalmaz és nagyon logikusan vannak egymásra építve a fejezetek (hogyan máshogy lehetnének!). Az első kötet az extenzionális logikai alapjaival, a második az intencionálissal foglalkozik. A természetes levezetés és az automata elmélet nem marad ismeretlen az olvasó előtt, viszont ha ezek érdekelnek akkor irány Partee. A második kötet viszont utánozhatatlan!

Enderton A Mathematical Introduction to Logic és Elements of Set Theory
Akik nem állnak hadilábon a matekkal, azok mindenképpen ezekkel a könyvekkel kezdjék az ismerkedést. Alapos képet adnak és itt már a bizonyítások sem maradnak el. Biztos vannak még más jó könyvek forgalomban, de azokat nem ismerem, ezekről meg a címük mindent elmond.

Fitting - Mendelson First-Order Modal Logic
Szintén matekosoknak való könyv, nagyon jó (szerintem) és a címe erről is elárul mindent.

Összegezve
Számít a háttered, ennek alapján válassz magadnak könyvet! Nyugodtan használd ki hogy a GoogleBooks és az Amazon segítségével belelapozhatsz a könyvekbe és legalább a tartalmukat átnézheted. Jó tudni hogy sok szerző és/vagy kiadó is elérhetővé tesz egy-egy fejezetet online, érdemes ezeket is megnézni.

A lényeg hogy legyen egy átfogó fogalmad a klasszikus logikáról és a halmazelméleti szemantikáról - tehát mindegy honnét jössz, a lényeg hogy ide kell elérned ha érdekel a nyelv.

Sajnos/szerencsére ez még nem minden. Ezért hamarosan még jelentkezem egy poszttal hogy mit érdemes olvasni még. Kedvcsinálónak annyit hogy a logika eredetileg összefüggött az ún. automataelmélettel és a kiszámíthatóság fogalmával, erről is illik egy keveset tudni. Egy kicsit érdemes foglalkozni a logika alkalmazásával is természetes nyelvekre, ebben a témában is olvashattok majd hamarosan.