HTML

Precognox

 precognox-logo-cmyk-620.jpg

A blog készítői a Precognox Kft. keretein belül fejlesztenek intelligens, nyelvészeti alapokra épülő keresési, szövegbányászati, big data és gépi tanulás alapú megoldásokat.

Az alábbi keresődoboz segítségével a Precognox által kezelt blogok tartalmában tudsz keresni. A kifejezés megadása után a Keresés gombra kattintva megjelenik vállalati keresőmegoldásunk, ahol további összetett keresések indíthatóak. A találatokra kattintva pedig elérhetőek az eredeti blogbejegyzések.

Ha a blogon olvasható tartalmak kapcsán, vagy témáink alapján úgy gondolod megoldással tudunk szolgálni szöveganalitikai problémádra, lépj velünk kapcsolatba a keresovilag@precognox.com címen.

Precognox Blogkereső

Document

opendata.hu

opendatahu45.jpg

Az opendata.hu egy ingyenes és nyilvános magyar adatkatalógus. Az oldalt önkéntesek és civil szervezetek hozták létre azzal a céllal, hogy megteremtsék az első magyar nyílt adatokat, adatbázisokat gyűjtő weblapot. Az oldalra szabadon feltölthetőek, rendszerezhetőek szerzői jogvédelem alatt nem álló, nyilvános, illetve közérdekű adatok.

Facebook oldaldoboz

Blog figyelése (RSS)

 Add hozzá az RSS olvasódhoz

Ha levélben szeretnél értesülni az új cikkekről:

Star Wars text mining

visualizing_star_wars_movie_scripts_precognox.jpgA long time ago, in a galaxy far, far away data analysts were talking about the upcoming new Star Wars movie. One of them has never seen any eposide of the two trilogies before, so they decided to make the movie more accessible to this poor fellow. See more...

Főbb témák

adat (8) adatbányászat (11) adatelemzés (9) adatok (13) adatújságírás (16) adatvizualizáció (19) AI (19) alternatív (6) alternatív keresőfelület (28) analitika (6) beszédtechnológia (13) big data (55) bing (14) blogkereső (6) CEU (6) clustering (6) conTEXT (8) dashboard (6) data science (9) deep learning (18) egészség (7) egészség kereső (7) előadás (7) emócióelemzés (35) facebook (8) Facebook (9) gépi tanulás (18) google (59) Google (33) gyűlöletbeszéd (7) hackathon (10) hálózatelemzés (14) intelligens keresés (6) internetes keresés (35) internet hungary (6) képfeldolgozás (8) képkereső (8) keresés (87) kereséselmélet (8) keresési felület (6) keresés jövője (57) keresés problémái (41) keresők összehasonlítása (9) keresőmotor (16) keresőoptimalizálás (8) kereső szándéka (11) kereső tanfolyam (9) kereső teszt (15) kognitív nyelvészet (12) konferencia (46) könyvajánló (25) korpusznyelvészet (14) közösségi keresés (8) közösségi média (8) különleges keresők (7) kutatás (9) LDA (10) lda (10) live (13) machine learning (9) magyar kereső (9) marketing (8) meetup (41) mesterséges intelligencia (19) metafora (7) mobil (37) mobil keresés (17) Neticle (9) NLP (8) NLP meetup (17) Nuance (9) nyelv (7) nyelvészet (32) nyelvtechnológia (76) open data (12) open knowledge (7) orosz (6) Pennebaker (6) politikai blogok (22) Precognox (65) Precognox Labs (14) Python (14) R (19) spam (6) statisztika (12) számítógépes nyelvészet (9) szemantikus keresés (19) szemantikus kereső (9) szentimentelemzés (37) szöveganalitika (7) szövegbányászat (22) társadalomtudomány (7) tartalomelemzés (56) tartalomjegyzék (6) tematikus kereső (20) topik modellek (6) Twitter (18) twitter (15) vállalati kereső (7) vertikális kereső (9) vizualizáció (13) yahoo (27) Címkefelhő

A blog tartalmai CC licenc alá tartoznak

Creative Commons License
Kereső Világ by Precognox Kft. is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at http://kereses.blog.hu/.
Permissions beyond the scope of this license may be available at http://precognox.com/.

A Kereső Világ blogon közölt tartalmak a Precognox Kft. tulajdonát képezik. A tartalom újraközléséhez, amennyiben nem kereskedelmi céllal történik, külön engedély nem szükséges, ha linkeled az eredeti tartalmat és feltünteted a tulajdonos nevét is (valahogy így: Ez az írás a Precognox Kft. Kereső Világ blogján jelent meg). Minden más esetben fordulj hozzánk, a zoltan.varju(kukac)precognox.com címre írt levéllel.

Creative Commons License

Nevezd meg! - Ne add el! - Ne változtasd!

 

Valószínűleg valószínű vagy valószínűtlen a nyelv

2014.10.30. 06:49 Szerző: Zoltán Varjú Címkék: statisztika nyelvészet tudományfilozófia big data Chomsky Norvig generatív grammatika

"But it must be recognized that the notion of "probability of a sentence" is an entirely useless one, under any known interpretation of this term." (Chomsky)

Az elmélet vége

pb_theory_f.jpg

Chomsky manapság legtöbbet idézett mondatai mind a valószínűség ellen szólnak. Mindenki szereti idézni ezeket, mert hát annyira bejött az élet a statisztikai nlp-nek, hogy érthetetlen miért is gondolnánk arra, hogy generatív elméletekkel, vagy egyáltalán elméletekkel égessük magunkat. Chris Anderson híres The End of Theory cikkében olyan megállapításokra jut, hogy a tudományos módszernek vége:

But faced with massive data, this approach to science  — hypothesize, model, test — is becoming obsolete.

Ami helyette van az tkp. adatgyűjtés és korreláció az adatpontok között:

Petabytes allow us to say: "Correlation is enough." We can stop looking for models. We can analyze the data without hypotheses about what it might show. We can throw the numbers into the biggest computing clusters the world has ever seen and let statistical algorithms find patterns where science cannot.

Mit mondott az öreg Chomsky?

shr0511h.jpg

Chomsky annyi mindent mondott már, hogy rajta kívül valószínűleg kevesen tudják követni elméletének fejlődését. Annyi azonban szinte bizonyos, hogy nem következetlen figura az öreg, pár nagyon alapvető elve már korai munkásságától kimutatható. Mivel mi nyelvtechnológiával foglalkozunk, ezért most kihagyjuk a szép szintaktikai fákat, alfát nem mozgatjuk, arra keressük a választ, miért idegenkedik annyira a valószínűségektől.

 

Kezdjük egy egyszerű kérdéssel: mi is egy nyelvelmélet?

WP_20141028_002.jpg

Az első, manapság egyre népszerűbb elképzelés szerint egy adott korpusz alapján kell megállapítani az adatokat generáló szabályokat (ez a fenti képen az első ábra). A másik elképzelés szerint egy nyelvelmélet célja, hogy egy szintaktikai szabályhalmazról egy korpusz segítségével ítéletet alkosson. Azonban Chomsky szerint ezen elképzelések túl ambiciózusak! Egy nyelvelmélet maximum arra jó, hogy egy korpusz segítségével eldöntse hogy két (vagy több) grammatika közül melyik bír nagyobb magyarázó erővel.

 

A grammatikák esetében a magyarázó erőt azonosíthatjuk azzal az egyszerű elvvel, hogy a helyes és helytelen mondatok közötti különbséget észleljük. A Mondattani szerkezetekben ezt így összegzi:

Tulajdonképpen mi alapján fogunk hozzá a nyelvtanilag helyes és helytelen sorozatok különválasztásához? [...] Először is, nyilvánvaló, hogy a nyelvtanilag helyes mondatok halmaza nem azonosítható a megnyilatkozások egyetlen, a nyelvész által terepmunka során megszerzett korpuszával sem. Egy nyelv valamennyi nyelvtana a megfigyelt megnyilatkozások véges, és bizonyos fokig esetleges korpuszának tulajdonságait vetíti rá a nyelvtanilag helyes megnyilatkozások (feltehetően végtelen) halmazára. E tekintetben a nyelvtan a beszélő eljárását tükrözi, a beszélőét, aki a nyelvvel kapcsolatos véges és esetleges tapasztalata alapján végtelen számú új mondatot képes létrehozni és megérteni.

Itt megjelenik az ún poverty of the stimulus, azaz az elégtelen mennyiségű inger érvelés. Minden embernek egy potenciálisan végtelen nyelvet kell véges időn belül elsajátítania és nagyon úgy tűnik, hogy negatív példák nélkül (magyarán nem szólunk a gyereknek hogy "figyelj, most mondok neked pár példát agrammatikus mondatokra"). Ezt szokás még Gold elméletével kiegészíteni, mely szerint a formális nyelvek nem tanulhatók meg negatív példa nélkül. Korpusznak itt nevezzünk egy egyszerű karaktersorozatot. Tanulónk egy gép, aminek ki kell találni hogy a szabályok egy halmazából melyek generálták a karaktersorozatot. Gold bebizonyította, hogy negatív példák bemutatása nélkül ez a feladat megoldhatatlan. (Johnson Gold's Theorem and Cognitive Science tanulmányát ajánlom az érdeklődő olvasóknak a témában!)

Ebből a szempontból lényegtelen, hogy az egyes szabályok kategorikusak, vagy rendelünk hozzájuk valamilyen valószínűségi értéket! A lényeg az, hogy valahogy eleve adottnak kell lenniük a szabályoknak, méghozzá úgy, hogy nagyon hamar megtalálja egy gyermek az anyanyelvét generáló grammatikát. Gondoljunk bele, a nyelvelsajátítás ún. kritikus periódusa alatt 2-5 éves kor között kell megtalálni a korpuszhoz tartozó grammatikát! Chomsky ezért Occam borotváját használva a lehető legegyszerűbb elmélet mellett dönt, a nyelvelsajátítás képessége innát (velünk született) kell hogy legyen. Ezzel párhuzamosan érvel a valószínűségek ellen is. Korlátozott, gyakran ellentmondásos adatokból kellene következtetnünk egy általános rendszerre, ez felveti az indukció problémáját. Az adatok ellentmondásossága felveti annak problémáját is, hogy egy inkonzisztens halmazból bármi következhet, azaz ha egy korpuszban (igaz különböző frekvenciával) de találhatunk adatokat grammatikus és agrammatikus szerkezetekre is, akkor nagyon sokat kellene számolnunk a nyelvtanulás során. 

 

A modern nyelvészet legnagyobbjához illő huszáros vágással intézi el Chomsky a fenti kérdést. A korpusz a nyelvhasználat, azaz a performancia lenyomata. E mögött ott van a kompetencia, azaz "helyes és helytelen sorozatokat" elválasztó grammatika, ami kategorikus és nem hibázik. A performancia tökéletlenségét a zavaró külső tényezők (pl. hogy elfáradunk, megoszlik figyelmünk, véges az elménk, stb.) okozzák. A nyelvelméletek számár a kompetencia az igazi terep, ott a valószínűségeknek nincs helye.

Jungle Theory Never Dies!

Nézzük meg Bog és tsai Probabilistic Linguistic-je (a valószínűség nyelvészeti alkalmazásának első hullámában megjelent tanulmánykötet) hogyan érvel a hagyományos nyelvészet ellen.

1) A variancia a nyelv minden szintjén jelen van

2) A nyelvi jelenségek frekvenciája (eloszlása) hatással van a nyelvre

3) Elmosódott határok a nyelvi kategóriák, a jólformáltság stb. területén

4) A nyelvek elsajátíthatósága

Mielőtt elveszítenénk nem nyelvész olvasóinkat, inkább egy példával élnénk a az 1)-3) pontokra. Hallgassunk egy kis zenét!

 

Vessünk egy pillantást a dal szövegére is! Amennyiben az olvasó ismeri a patois nyelvet, akkor gondoljon egy magyar népdalra inkább! Amennyiben nem ismeri, de tud angolul, akkor már talán érti hogy a nyelv nem egy egyszerű dolog. A szöveg nagyon angolos, kb. középszintű nyelvtudással is érhető. Ellenben nem kapna ötöst az, aki angol órán így beszélne vagy írna. A jamaikai patois nem ragadható meg egyszerűen, mert az ún. post-kreol kontinuum állapotában van, ami nagyon tudománytalanul azt jelenti, hogy egyes verziói nem érthetőek az angol beszélő számára, még a másik véglet szinte az English Grammar in Use szabályai szerint formált mondatokból áll. Persze ez egy kontinuum, azaz nincs egy patois A, ami nagyon nem angol, és egy patois Z, ami meg a tökéletes oxfordi angol lenne. Sőt, egy adott beszélő is váltogatja a kontinuumon belül a pozícióját. Azaz varianciával van tele a nyelv, a kiejtéstől kezdve a szintaxisig. Ezt a varianciát erősen befolyásolja a nyelvi jelenségek frekvenciája - pl. otthon inkább patois A, iskolában, hivatalban patois Z, barátokkal, kollégákkal valahol a kettő között beszélget valaki. A szülőhelyükről elkerülő tájszólásban beszélők általános élménye, hogy otthon, hazai közegben vissza szoktak állni a tájszólásra, de amúgy nagyon hamar asszociálódnak. Ennek csak részben oka a megbélyegzés, prózaibb ok az, hogy a standard változattal magasabb gyakorisággal találkoznak, ez pedig hatással van rájuk. A jólformáltság, azaz hogy mit fogadunk el grammatikusnak is hasonlóan viselkedik! A 'eztet jól megcsináltad' valószínűleg kiakasztana egy tanítónénit, ellenben én nagyon gyakran találkozom vele.

A 4) esetében már egy kicsit el kell merülnünk a korábban említett Gold-tételben. Láttuk, hogy ennek értelmében negatív példa nélkül nem tanulható meg egy nyelv. Ha az eredeti kritériumot egy kicsit enyhítjük s csak azt kérjük elméleti tanulónktól, hogy egy adott korpuszhoz tartozó grammatikákból zárja ki azokat, melyek tutira nem működnek, akkor viszont azt láthatjuk, bizony negatív evidencia nélkül is megtanulhatók a probabilisztikus grammatikák, mert ahogy Manning tömören összefoglalja (a Probabilistic Linguistics-ben):

- egy probabilisztikus grammatika velejárója, hogy minden mondatnak van egy valószínűségi értéke, ha korpuszunkat egy ilyen grammatika generálta, akkor a mondatok frekvenciájában ez tükröződni fog

- ez a valószínűségi eloszlás tkp. tekinthető negatív evidenciának is, minél kisebb a frekvencia, annál kisebb valószínűséget kell tulajdonítani az őt generáló szabálynak

Mielőtt örülnénk! A fentiek feltételezik, hogy a tanuló egy stacionárous ergodikus forrásból származó korpusszal találkozik! Maga Manning is megjegyzi azonban, hogy a nyelv nem ilyen. Evvel Chomsky is tisztában van, hiszen a Mondattani szerkezetekben hivatkozik Shannon-ra (aki szintén kimondja, a nyelv nem stacionárius ergodikus forrás). A kedves olvasó ne adja fel, ezeket a nagy szavakat következő posztunkban a helyére fogjuk tenni mindegyiket!

 

Így vagy úgy, de generatívvá kell válnunk 

Anderson víziója szerint az adatok majd mindent megoldanak. Nem véletlenül hivatkozik cikkében a Google-re, hiszen a keresőóriás kutatási igazgatója és két senior kutatója írta a big data programadó tanulmányát The Unreasonable Effectiveness of Data (sokak számára csak UED) címmel, ami máig a legolvasottabb írás a témában. A paper tkp. eseteket sorakoztat fel melyekben viszonylag "buta" statisztikai eljárások nagy adatmennyiségre ráeresztve jobban teljesítenek a szofisztikált modelleknél. 

 

Peter Norvig, a tanulmány egyik szerzője és a Google kutatási igazgatója, Chomsky kritizálásában is élen jár! Sajnos On Chomsky and the Two Cultures of Statistical Modeling című esszéje nem lett annyira sikeres, mint a UED, pedig érdemes lenne követni gondolatait.

 

Norvig egyrészt egyet tud érteni Chomskyval abban, hogy minden elmélet lényege egy jelenség magyarázó erővel történő leírása, ami megnyitja az utat a predikció felé. A statisztikai megközelítésben két iskolát különíthetünk el, az egyik tkp. leírja a vizsgált adathalmazt, még a másik megpróbálja modellezni és általánosítani azt. Norvig szerint Chomskynak az első iskolával van baja igazából, amit el is fogad. De mi ezzel a gond?

 

Vizsgáljuk meg a kNN algoritmust egy kicsit! A kNN tkp. "megeszi" az összes tréningadatot, szépen elraktározza azt úgy ahogy van. Az eljárás ún. "lazy learning" mert semmilyen absztrakció nem történik benne, minden példát összevetünk a tréningadatokkal, hogy megnézzük a vektortérben melyekhez van a legközelebb - és ennyi. Maga az eljárás sokszor nagyon hatékony, de erőforrás-igényes nagy adathalmazokon futtatni és nem túl flexibilis. A gépi tanulás lényege, hogy a tréningadatokból vagy az adatokra alapozva egy hatékony és flexibilis modellt alkossunk, ami képes predikcióra, ezért a legtöbb esetben az adatok mögött meghúzódó disztribúcióra vonatkozó feltételezésekkel kell élnünk. Így a modell egy elmélet arra vonatkozólag, hogy miképp jöhetett létre adathalmazunk, azaz egy generatív elmélet.

Győzött a statisztika?

Az algoritmikus modellezés tehát nagyon hasonlít Chomsky grammatikákkal kapcsolatos elképzelésére, habár ezt Norvig ügyesen elhallgatja írásában. Ellenben megjelenik egy nagyon hatásosnak tűnő érv, mely szerint a nyelvtechnológiában és úgy általában az informatika és a telekommunikáció területén nagyon hasznos dolog az információelmélet (ami az algoritmikus modellezés szinonimája néhol az esszében), ellenben szegény Chomsky és társai alacsony bérért tengetik életüket az egyetemek elzárt világában. Válasszuk ketté ezt az érvet. Először vizsgáljuk meg, hogy a gyakorlati használhatóság tényleg érv-e egy elmélet nagyobb magyarázó ereje és érvényessége mellett, majd nézzük meg, hogy volt-e hatása a generatív grammatikának máshol is.

 

Az első kérdésre nagyon egyszerű válaszolni. A gyakorlati alkalmazás nem jelentheti egy elmélet felsőbbrendűségét. Gondoljunk csak bele, a newtoni fizika ma is nagyon jól használható mérnökök számára, lehet vele épületeket tervezni, lövedékek röppályáját kiszámítani stb. A közoktatásban is általában a klasszikus newtoni fizikával ismerkedünk meg és a relativitáselmélet meg a kvantumfizika csak érintőlegesen szerepel a tantervekben. Ez azt jelenti, hogy mivel nagyobb üzlet a klasszikus fizika (gondoljunk bele, az ipari forradalom óta használja az ipar, azóta rengeteg értéket teremtettek már vele) ezért jobb mint a kvantummechanika?

 

A generatív grammatika hatását megkérdőjelezni manapság hülyeség. Az elmúlt hatvan évben alig akadt olyan produktuma a kognitív tudományoknak, mely ne foglalt volna állást Chomsky-t illetően. Őt egyszerűen szeretni vagy gyűlölni kell ezen szakmákban. A nyelvtechnológia és a mesterséges intelligencia sem kivétel a szabály alól, ezért nyugodtan elmondhatjuk, megtermékenyítően hatottak a generatív iskola gondolatai az alkalmazott kutatásokra is, még az ipar is szeret leállni veszekedni velük.

 

Az elméletek tökéletlenek - s ez így van rendjén

Korábban már írtunk arról, hogy az elméletek empirikusan aluldetermináltak, itt csak röviden szemléltetjük mit is jelent ez a gyakorlatban. Ha adott a megfigyeléseinket rögzítő adatok halmaza, akkor szeretnénk abból egy elméletet alkotni, ami lehetővé teszi, hogy predikciókat is tehessünk. Hiszen tök jó tudni pl. hogy eddig minden villámlást követett mennydörgés, de következik-e ebből az hogy, a következő viharban is lesznek villámok és dörögni fog az ég? Ez ismét az indukció problémája! Ahhoz, hogy túllépjünk adatainkon, fel kell vennünk olyan állításokat elméletünkbe, mely lehetővé teszi a még nem megfigyelt adatokra való állítások megtételét! Ezt tette Chomsky is és ezt teszi minden valószínűségi modellezéssel foglalkozó kutató. Jó okuk van erre, de be kell látni, hogy empirikusan sohasem igazolható minden elméleti előfeltevés, minden esetben ott a hiba lehetősége! Popper szerint azonban a tudomány lényege pontosan az, hogy artikulálni kell miképp bukhat el elméletünk, meg kell adni falszifikációs feltételeit. A tudomány lényege nem a megcáfolhatatlanság, hanem a nyíltság, a kritizálhatóság. Ennek rész, hogy egy elmélettel kapcsolatban felszínre kell hozni előfeltevéseit. Szerintünk Chomsky sokkal tisztességesebben jár el ezen a téren, mint Norvig. A Google kutatója ui. elfelejt két fontos dolgot:

- maga Shannon is csak egy eszköznek tartotta az információelméletet a nyelv modellezésére, mivel szerinte a nyelv nem egy stacionárius ergodikus forrás

- az algoritmikus modellezés nem lehet szigorúan empirista, mivel természete szerint egy absztrakt modell létrehozását célozva induktív lépést kell hogy tartalmazzon, ami pedig empirikusan aluldeterminált

A Probabilistic Linguistics érvei nagyon meggyőzőek, de Norvig esszéjének kritikája alapján be kell látnunk, a szigorú empirizmus nem lehetséges. A nyelvi modellek ebből kifolyólag nem rendezhetőek sorba értékességük szerint. El kell fogadnunk, hogy a nyelvvel kapcsolatos gondolkodás területén nincs uralkodó paradigma. Ennek inkább örüljünk, hiszen nagyon unalmassá válna a világ, ha csak egy kereten belül gondolkodhatnánk!

A Kereső Világ a Precognox Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Data Analysis with R

2014.10.22. 11:28 Szerző: Zoltán Varjú Címkék: ismertető R Udacity data analysis

Manapság mindenki valamilyen MOOC kurzust hallgat éppen. Sokan már ún. verified certificate tracket választanak, azaz valamennyit áldoznak arra, hogy igazolva legyen, eredményesen elvégezték a kurzust. Szerencsés voltam és én ingyen vághattam bele a Udacity által kínált Data Analysis with R-ba, ennek tapasztalatait összegzem ebben a posztban.

udacity_logo.png

Az első és legfontosabb kérdés egy MOOC esetében, hogy miért fizetünk, ha már fizetünk. A Coursera, az EdX a FutureLearn és a Udacity (hogy csak a nagyobbakat említsem) egy dologban megegyezik; kurzusaik nem akkreditáltak! Mit jelent tehát az, ha verifikálják a tanulót? Azt, hogy megnézte a videókat, megcsinálta az online kvízeket és fizetett. A Udacity abban különleges, hogy habár együttműködik egyetemekkel, náluk a verified certificate teljesen mást jelent. Először szögezzük le, baromi drága, általában 200 USD/hó egy kurzus és minimum két hónap egy-egy MOOC elvégzése. Ellenben kötelező egyszer legalább Google Hangouts-on beszélni a tutorunkkal (mert kapunk ilyet), az egyes leckékben szereplő kvízek és feladatok nem számítanak bele a végső értékelésbe, a hitelesített "papír" megszerzéséhez egy projektet kell elkészítenünk, majd egy online interjú keretében beszélnünk is kell művünkről. Ha menet közben gondunk akad, akkor a tutorunkkal egyeztethetünk időpontot online beszélgetésre, vagy levelet küldhetünk, négy munkanapon belül köteles válaszolni. Ez a módszer szerintem sokkal gyakorlatiasabb és biztosítja, hogy a MOOC-on tanultakat legalább minimálisan képes használni a tanuló valós körülmények között is. A legtöbb Udacity kurzus érdekessége, hogy nem egyetemek ajánlják, de sok esetben nagy cégek (pl. Facebook, Cloudera, Google) kutatói vettek részt az anyag elkészítésében és ezek az arcok gyakran megjelennek a kurzusban is (általában amolyan pihenő videók formájában beszélnek a munkájukról két keményebb anyag között).

 

A Data Analysis with R nem egy hibátlan kurzus, de annak aki tanult már statisztikát és valamennyire ismeri az R-t ez egy remek anyag az ún. explorarory data analysis és a ggplot megismerésére. A videók mérte pont optimális, 30 másodperc és 10 perc között változik, ami nekem ideális volt, mert csak amolyan lopott percekben tudtam haladni vele. A feladatok már nem annyira jók. Gyakran tkp el kell olvasnunk egy-egy csomag, vagy függvény dokumentációját, a példákat módosítjuk és meg is oldottuk a feladatot. Sajnos általános feladattípus hogy fejezd be a kódot, majd nyomd meg a "Submit" gombot, de visszajelzést nem kapsz, a kódot nem futtathatod online, ha csak egy karaktert beír az ember, akkor is "Congratulations!" felkiáltással nyugtázza a Udacity ténykedésünket.

udacity_eda.PNG

A projekt igazán izgalmas dolog! Én a prosper dataset mellett döntöttem, mert érdekeltek a hitelek. A követelmények szerint egy felfedező részben pár változót kell megvizsgálni, majd többváltozós plotokkal a közöttük lévő összefüggéseket feltárni, végül három jellemző vizualizációval és egy rövid szöveges elemzéssel zárunk. Mindezt a nagyon egyszerű, kényelmesen használható knttr csomaggal kell végezni, ami egy remek kis html oldalba ágyazott riportot eredményez. Maga projekt kb 20-30 órát vesz igénybe, nem kell félni, ha visszadobják, akkor részletes megjegyzésekkel teszik és tkp. akárhányszor jelentkezhetünk a javított verzióval, a "bukásnak" nem marad semmi nyoma a Udacity-nál :D A projekt beküldése után hét munkanapon belül értesülünk eredményünkről és ha pozitív az értékelésünk, akkor foglalhatunk magunknak időpontot a projekt interjúra. A végső elbeszélgetés egyik célja, hogy igazoljuk, mi dolgoztunk a projekten, ezért nagyon kíváncsiak arra, hogy miért az adott adathalmazzal dolgozott az ember, hogy látja, mit lehetne javítani még a projekten stb. Ezután egy gyors elégedettségi kérdőív következik, mit szerettél a kurzusban, mit lehetne rajta javítani stb. Az egész nem több 25-30 percnél és a végén meg is mondják, hogy sikerült-e meggyőzni őket arról, hogy te dolgoztál a projekteden. Ezután kb. 5 perc és jön az email, hogy letöltheted a verified certificate-edet - papír nincs. Ellenben a ggplot alapjait, az eda alapelveit megtanulja az ember használni és még bizonyítani is tudja ezt a saját kis projektjével. Annak, aki megengedheti magának, csak ajánlani tudom a Udacity kurzusait, mivel ténylegesen használható tudást lehet megszerezni módszerükkel.

A Kereső Világ a Precognox Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Design (és NLP?) - meetup slideok

2014.10.17. 14:49 Szerző: Zoltán Varjú Címkék: design beszédtechnológia NLP meetup opp.io Ergománia

Legutóbbi meetupunk előadóinak diáit találjátok alább. Következő meetupunkat november 27-én tartjuk, témánk: NLP eszközök magyarra.

  • Rung András: Hangrobbanás

András Ergománia blogját ajánlom figyelmetekbe.

A Kereső Világ a Precognox Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

A természetes nyelv leföldelése programnyelvekkel

2014.10.15. 07:45 Szerző: kadar.akos Címkék: keresés szemantikus keresés nyelvtechnológia grounded learning

A Tilburgi Egyetemre írt tézisem angol címe Grounded Learning for Source Code Component Retrieval és erről fogok mesélni röviden ebben a posztban. Az alapötlet a konzulensem Grzegorz Chrupala és előző tanítványa Jing Deng közös munkájából származik, ahol különböző szokatlan modelleket  alkalmaznak forráskód keresésre. Több poén is van a munkájukban. Az egyik az, hogy source code component-ek vagyis forráskód komponensek között keresnek, ami újdonságnak számít, a másik pedig, hogy a keresést, mint fordítási problémát fogják föl programnyelvről természetes nyelvre. Alapvetően két oldala van a történetnek: egyrészt a cél az, hogy létrehozzunk egy kereső motort, ami forráskód komponensek között keres, másrészt, hogy fogjuk meg a természetes-nyelvi kifejezések jelentését valamilyen formális nyelvvel, jelen esetben forráskód komponensekkel.  Az első ponttal még egyet is lehet érteni, a kereső motorok jók, mert keresnek, de minek “belegroundolni” a természetes-nyelvi kifejezéseket forráskódba? A rövid válasz az, hogy fölösleges, de ha valakit érdekel a hosszabb magyarázat olvassa tovább a posztot.

 

A nyelvészet különböző szinteken elemzi a nyelveket: a fonológia foglalkozik a hangokkal, a morfológia nagyobb, hangokból álló és jelentéssel rendelkező egységeket kutat, a szintaxis több jelentéssel bíró egységből - mondjuk szavakból - álló szerkezetekkel foglalkozik, a szemantika pedig a különböző nyelvi egységek jelentését kíséri meg leírni. A tézisem a szemantika témakörébe tartozik, hiszen a kifejezések jelentésével kapcsolatban barkácsolok. Eszméletlenül sok szemantikai elmélet írja le a jelentés különböző aspektusait, de alapvetően két fontos témát boncolgatunk már több ezer éve:

1.) Hogy kötődnek a nyelvi kifejezések a külvilághoz?

2.) Milyen kapcsolatban állnak egymással?

 

lionkingsemantics.jpg

 

A disztribúciós szemantika a második kérdéssel foglalkozik. Már számtalan cikk jelent meg a disztribúciós technikákkal kapcsolatban a blogon, de az alap ötlet az, hogy a szavak jelentése a kontextus függvénye. Firth (1957): "You shall know a word by the company it keeps". A disztribúciós technikák nagy előnyei, hogy nem igényelnek annotációt, átlátható és elég általános matematikai modelleken nyugszanak, nem bonyolult az implementációjuk, rahedli könyvtár létezik hozzájuk, sokrétűen és hatékonyan használhatóak. A tézisem egyik fő problémája tulajdonképp az, hogy ezeket a modelleket, hogy lehet úgy csűrni-csavarni, hogy valamilyen módon az 1-es kérdésre adjanak választ.

 

A nyelvi kifejezéseket a szemantika hagyományosan a következőképp képezi le a nyelven kívüli valóságra: A kifejezéseket valamilyen logikai formulákkal reprezentálja és ezeket a formulákat matematikai modellekre értelmezi pl.: halmaz elmélet, kategória elmélet. Az ötlet Grzegorz Chrupala és Jing Deng munkájában az, hogy a logikai formulákat cseréljük le programnyelvi kifejezésekre, amik alatt amúgy is van modell és így tulajdonképp egy fordítási problémára redukáltuk a természetes-nyelvi kifejezések megalapozását. A fordítási problémákat pedig egy elég egyszerű ötlettel szokás megoldani: paralell-corpussal. A lényeg az, hogy keresünk egy corpust, ahol az X nyelven megfogalmazott gondolatok és azok Y nyelvi megfelelői össze vannak párosítva. Egy ilyen paralell-corpuson megint csak a disztribuciós alapvetésünket vetjük be csak ez esetben nem nyelv-internálisan, hanem nyelvek között tételezzük fel azt, hogy hasonló kontextusban szereplő szavak jelentése hasonló. Esetünkben olyan paralell-corpust kell találnunk, ami a természetes-nyelvi megnyilatkozások és azok programnyelvi megfelelőjét tartalmazza.

Úgy gondoltuk, hogy erre a célra kifejezetten jó parallel-corpust nyújtana egy programnyelv különböző könyvtárainak dokumentációja. A Java Standard Library-t használtuk és az úgy nevezett method-signature-k szolgáltatták a programnyelvi kifejezéseket míg azok leírásai az angol nyelvi megfelelőjüket. A szokásos előfeldolgozási lépesek után - pl.: stemming, funkciószavak kiszűrése - meg is volt a data set, amire lehet illeszteni egy modellt, amely képes Java method-signature-ket angolra fordítani. Grzegorz Chrupala és Jing Deng az IBM model 1-t és a PLDA modelleket alkalmazza fordító modellként, ami nem meglepő, hisz az előbbi egy gépi-fordításra, míg az utóbbi nyelvek közti dokumentum keresésre alkotott modell.

 

Chrupla és Deng munkájában tetszett, hogy ilyen un-orthodox módon fordítással keresnek ráadásul ilyen fura dolgok között, de egy igaz magyar un-orthodox fordító modelleket is használ! Az én olvasatomban ez a "bag-of-words fordítás" a regresszió probléma körébe tartozik, hiszen ha az angol leírásokat és azok method-signature megfelelőit tf*idf mátrixokban ábrázoljuk egyszerűen regressziós modellt illeszthetünk a két vektor-térre, ahol a bemenet a deskripció-vektor és a cél pedig a hozzá tartozó method-signature vektor. Több modellt is kipróbáltam, de a Ridge-regresszió teljesített a legjobban megverve a PLDA-t és azért viszonylag alul múlva az IBM modell 1-t. Szerintem az alábbi táblázatban az Acc@10 a legfontosabb mutató, azt mondja meg, hogy az esetek mekkora részében adja vissza a rendszer a megfelelő találatot az első kereső oldalon.

 

 

MRR Acc@1 Acc@10
Ridge 0.39 0.23 0.71
PLDA 0.35 0.24 0.56
IBM model 1 0.49 0.34 0.79

 

 

De mint említettem nem kizárólag az volt a cél, hogy írjak egy fura keresőmotort, hanem hogy hozzájáruljak a ma még gyerekcipőben járó Grounded Learning módszertanához. Arra voltam kíváncsi, hogy a Java terminusok mennyire tudják megragadni az angol kifejezések jelentését egy ilyen regressziós fordítás során és hogy mindezt, hogy lehetne letesztelni. Végül úgy döntöttem, hogy neurális hálót használok a kísérletezgetéshez méghozzá több szintes neurális hálót azaz Multilayer Perceptront, ami a projektem szempontjából azért érdekes, mert a köztes (rejtett) szinteken érdekes absztrakt reprezentációt tanulhat a nyelvi adatokból.

 

 NN.png

 

Ahogy a fentiekben már ecseteltem a képen illusztrált neurális háló is tf*idf deskripció-vektorokból tanul meg jósolni tf*idf method-signature-vektorokat. Hogy szemléletes legyek a háló baloldalán van az Angol-tér, a jobb oldalán a Java-tér és ott középen vagyunk a nyelvek között. Az volt az ötletem, hogy csinálok a deskripció összes szavához one-hot-encodinggal szó-vektort (jó sok 0 és egyetlen 1-es a szó indexének helyén) és ezekből kapott mátrixokat "beágyazom a háló közepébe". A poén az, hogy one-hot-encodinggal a szavak közti kapcsolatok nincsenek reprezentálva, de ha a tanulás során az angol kifejezések jelentését valamennyire megfogtuk Java terminusokkal, akkor a beágyazott szó-vektorok esetében azt várjuk, hogy a hasonló szavak vektora hasonló helyen helyezkedjen el (hasonló irányba mutasson) a beágyazott vektortérben. Szerencsére teljesült a kívánságom, alább mutatok pár példát az így kapott szólistáimból.

 

zip currency cos true yyyy
compressed symbol argument whether sep
compression represent trigonometric boolean oct
checksum territories cosine equality nov
uncompressed countries angle false mm

 

Ahogy láthatjátok tényleg "összeklasztereződtek" a hasonló szavak, ami azt jelenti, hogy valamit elcsíptünk az angol szavak jelentéséből Java terminusokkal. Kicsit másképp megfogalmazva: a poén az, hogy a neurális hálóba ágyazott szó-vektorok egész reálisan reprezentálják az angol szavak egymás közti viszonyait, de ezt nem úgy értük el, hogy megfigyeltünk angol szövegeket, hanem azok viszonyát figyeltük meg rajtuk kívül eső dologhoz.

 

Ez mind tök király és cum laude is lett a vége, de nem árultam a poszt elején zsákbamacskát és így a vége felé is nehéz lenne megmondanom, hogy valójában mi értelme volt az egész vállalkozásnak. Amikor elkezdtem írni a szakdogát teljesen nyilvánvaló volt, hogy itt nagy dolgok vannak készülőben, kis idő távlatából azonban inkább egy ilyen "Rube Goldberg search engine avagy a keresőmotor a modern lélek tükre" című installációnak látom az Ernst múzeum egyik ingyenesen látogatható kiállításán. Mindenki döntse el maga mit gondol. Az egész rendszer az adatokkal együtt elérhető egy publikus repóban, mert azért a reproducable research az igazi party.

A Kereső Világ a Precognox Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Tartalomelemzés - a DE Bevezetés a digitális bölcsészetbe kurzusán tartott előadásom diái

2014.10.14. 08:50 Szerző: Zoltán Varjú Címkék: tartalomelemzés nyelvtechnológia

Ma a Debreceni Egyetemen tartok előadást, Szekrényes István barátom Bevezetés a digitális bölcsészetbe kurzusán. A posztban megtalálhatjátok a kapcsolódó diákat és ajánlok pár korábbi posztot azoknak, akik jobban elmélyednének a témában.

Mivel egy előadás kevés ahhoz, hogy a tartalomelemzéssel úgy igazán megismerkedjen valaki, ezért arra gondoltam, megmutatom hogy a legegyszerűbb módszerrel, szavak számolgatásával, mi mindenre lehet jutni.

Bemelegítés

Akár kideríthetjük egy ember nemét, korát és főbb pszichológiai jellemzőit is:

Egyszerű szógyakoriság

A legegyszerűbb szógyakorisági "viszgálat" az R-index, ami nagyon jól működik a válságok előrejelzésében. Ennek mintájára, sokan szeretnék tartalomelemzési technikákkal kiváltani az amúgy költséges fogyasztói bizalmi indexeket és egyéb mutatókat. Erről bővebben l.

Történeti kutatásoknál a Google Ngram Viewer korpuszát érdemes használni, l. az alábbi posztokat

Saját, az index.hu cikkeire alapozott R-indexünkkel kapcsolatos vizsgálódásainkról pedig a

c. posztunkban olvashatsz.

Az

irományban a GoogleTrends egy érdekes használatát mutatjuk be.

 Szentiment- és emócióelemzés

A polaritások szemléltetéséhez a példákat a Neticle rendszeréből vettem. A legjobb példa ma magyar nyelvű szentimentelemzéssel segített tartalomelemzésre, a Méltányossággal közösen folytatott Politikai véleményárfolyam riportjuk, melyet havonta adnak ki. A srácokkal erről beszélgettünk egy posztban:

 Az emócióelemzés elméleti hátteréről:

A tökéletes rap slágert alábbi posztjainkban kutattuk:

A főpolgármester-jelöltekkel kapcsolatos emóciókat a

Miért haragszanak annyira a twitterezők a főpolgármester-jelöltekre?

c. posztunkban elemeztük. A jelenbecslésről többet alábbi írásainkból tudhatsz meg:

Saját, a Jobmonitor adataival végzett munkánkról a

c. posztunkban olvashatsz.

A Kereső Világ a Precognox Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

süti beállítások módosítása