2012. június 29.
Számítógépes nyelvészet 101: Programozás
2011. december 4.
Számítógépes nyelvfelismerés
2011. április 27.
A szöveg-osztályozás néhány kérdése
2011. április 26.
On NLTK and Python - an interview with Jacob Perkins
2011. április 17.
Szófaj-elemzés 2 – néhány újabb tapasztalat
2011. április 5.
Hogyan kezdtem szófajelemzőt írni?
2011. február 1.
Könyvismertető - Mining the Social Web [frissítve]
- Matthew A. Russel: Mining the Social Web
- O'Reilly, 2011
- 360 oldal
2011. január 9.
Adat, üzlet, tudomány (frissítve)
2010. július 29.
R, de miért is használjam? - I.
Az nltk dizájn hátrányai
Eddig a legjobb cikk amivel találkoztam az nltk mögötti dizájn filozófiáról Edward Loper NLTK: Building a Pedagogical Toolkit in Python című írása. Érdekes milyen követelményeket vettek figyelembe a rendszer tervezése során:
- könnyű használhatóság
- konzisztencia
- bővíthetőség
- dokumentáció
- egyszerűség
- modularitás
- nem kell mindenre kiterjedő, átfogó rendszert alkotni
- a teljesítményt épp annyira kell optimalizálni hogy diák projekteket lehessen kivitelezni vele
- okoskodás, a fenti ponthoz kapcsolódva nem trükkös hack-kek sorával kell tuningolni a programokat, hanem tiszta átlátható implementációt kell készíteni (hogy a diákok láthassák a forráskódban miképp valósítottak meg egy-egy elképzelést)
Milyen követelményeknek kell megfelelnie egy számítógépes nyelvészetben használt programozási nyelvnek?
Erre a kérdésre mindenki máshogy válaszolna nyilván, sőt úgy tűnik az ipar letette a voksát a Java mellett (követve az IT egész világát). Természetesen akadnak kivételek és sok számítógépes nyelvészeti feladatot egyszerűen túl bonyolult Java-ban elvégezni. Ha a mesterséges intelligencia felől közelítjük meg a kérdést (hiszen tekinthetjük kedvenc tudományunkat az AI egy részterületének is), akkor sokaknak rögtön eszébe jutnak az olyan egzotikus nyelvek mint a LISP, Scheme, Prolog. Nem véletlenül, a mesterséges intelligencia programozás klasszikusa, Norvig PAIP-ja kora ellenére még ma is kötelező olvasmány ezen a területen, még ma is hatással van a kezdőkre és profikra egyaránt. Ebben nagy érdekes követelményeket fogalmaz meg a szerző egy AI programozásban hasznos nyelvvel szemben:
- built-in support for lists
- automatic storage management
- dynamic typing
- first-class functions
- uniform syntax
- interactive environment
- extensibility
- history
A Python nyelv az eredeti nyolc pontból hét és félnek megfelel (lehet hogy egy csak az én személyes véleményem, de a 4. pontnak csak részben felel meg a pythonos lambdázás). A további két kritériumnak is megfeleltethetjük a kígyós nyelvet, de ehhez ki kell használnunk bővíthetőségét. A statisztikai elemzéshez és bonyolultabb adatstruktúrák létrehozásához szükségünk lehet a numpy/scipy csomagra, ezek használata kezdő kezekben bizony nagy teljesítmény csökkenéshez vezethet, nem beszélve hogy a nyelv "magján kívül" egy új csomagot kell elsajátítanunk.
Összegzés
Mind a Python, mind az nltk hasznos és sokoldalú eszközök, de dizájnjukból fakadóan nem felelnek meg az általunk felállított kritériumoknak. A következő részben végre rátérünk arra hogy az R miért is ideális nyelvészeti elemzésekre, de persze semmi sem tökéletes, az R-nek is vannak hátrányai!

2010. július 11.
NooJ, az Integrált Nyelvelemző Környezet I.
VENDÉGPOSZT!
Előzetesnek szánom ezt a cikket. Bemutatni, hogy mennyi és milyen minőségű nyelvelemző programok állnak már jelenleg is a rendelkezésünkre. De előzetes abban az értelemben is, hogy az eszközökről szeretnék majd több hosszabb-rövidebb leírást is adni. És nem utolsó sorban előzetes abból a szempontból is, hogy a későbbre tervezett Natural Language Toolkit használatát fogjuk a most bemutatott NooJ eszközzel megalapozni.
A NooJ, és elődje az INTEX egy integrált nyelvelemző környezet. Egy francia nyelvész készítette, aki ráébredt arra, hogy rengeteg szakterület tudná alkalmazni, használni a saját céljaira egy nyelvelemző rendszert. A többi nyelvelemző ellen mindig az első ellenérv a kezelhetőség volt. Még a jelenleg a PTE-n fejlesztett (prolog nyelven fejlesztett) szövegelemzőről is (bár csak néhány bemutatót sikerült erről a fejlesztésről megszereznem...) első hátrányként említik, hogy nehezen kezelhető, olvasható az eredmény. Ez azért könnyedén orvosolható lenne. Mindenesetre megértem azokat, akik csak egy-egy ötletért nem hajlandóak ennyire belemerülni a témában. Pont a számukra lehet a legideálisabb eszköz a NooJ.
Szerencsére a témának van magyar honlapja. http://corpus.nytud.hu/nooj/ címen tudjátok elérni. Itt található meg hozzá továbbá a magyar modul is, amivel el tudjuk végezni az elemzéseinket. Illetve a kipróbáláshoz ajánlom mindenki figyelmébe Vajda Péter bemutatását: http://corpus.nytud.hu/manye/vp_nooj.ppt
Hogy van magyar honlapja, ez sajnos nem egyenlő azzal, hogy fejlesztik is. 2006-ban indult, és azóta csak a magyar modul került fel. De a még akkoriban tervezett grammatika nem jelent meg azóta sem.
A NooJ a morphdb.hu-t használja. Akik használták már külön, azoknak nem lesz meglepetés a szavak elemzésének eredménye vagy a típushibái, de ezeket könnyedén javíthatjuk az aktuális szövegnél. Viszont a NooJ nem csak erre képes. Lehetséges vele szógyakoriságot vizsgálni, ahogyan lehet csak simán szegmentálni. Saját nyelvtannal kiegészítve pedig határ a csillagos ég. És akkor még nem is beszültünk arról, hogy képes az elemzett szöveget xml-formátumban visszaadni, tehát az eredményen tovább dolgozhatunk például az NLTK-val... de erről majd csak később.
Egy-két javaslatot azért tennék a program használatához. A Huntoken mondatszegmentálót használja. Ezért a legjobb eredmény érdekében minden sorban csak egyetlen mondat szerepeljen! Továbbá mivel a szavak elemzéséhez a Hunmorph-ot használja, így nem számítsunk eredményre a tulajdonnevek és a szóösszetételek esetén. Ezeket nem tudja kezelni.
Továbbá álljon itt egy minta is. Példaként és a várható eredmények előrejelzése végett. Ezt a cikket elemeztettem le vele, egészen eddig a bekezdésig:
Összesen 26 mondat
242 különböző szóalak
30 olyan szó, aminek nem tudta meghatározni a szófajtát, felépítését (tulajdonnevek, formátumtípusok, webcímek és szóösszetételek)
426 különböző felismert és elemzett szóalak (a kettő szám azért nem egyezik, az összes szóalak és az elemzett szóalakok száma, mert sok olyan szóalak van, ahol elképzelhető több elemzési eredmény a szövegkörnyezetnek megfelelően, de a program jelzi számunkra a lehetséges elemzéseket. Például a „szánom” két elemzési módja a következő: szánom,szán (szótő): N+nom+1+sg+pssg+ps vagy V+1+def+sg. Itt az emberi értelem meg tudja határozni, hogy az igei a helyes, de ezt csak jelentéstanilag tehetjük meg. Egy másik szövegkörnyezetben már főnévként szerepelhet.)
Szerző:
Gerő Dávid: Magyar és nyelvtechnológus hallgató, kezdő programozó és webfejlesztő, aki érdeklődik a nyelvészet és az informatika iránt. A határterületekért különösen rajongok, de sajnos mindkettőben csak kezdő, érdeklődő laikus vagyok.

