Szerintetek érdemes fordítóirodával dolgoztatni ha csak heti 2 A4 oldalt szeretnék lefordítatni kb. 6 hónapon keresztül? Nekem az ismerősöm Debrcenben az Abszolút Fordítóiroda Kft -t ajánlotta, ismeri valaki őket? A referenciáik meggyőzőek.
Mindenképpen erre érdemes az államnak tudomány címén pénzt áldoznia, nem pedig olyan dolgokra, hogy 700millió forintból felépítik a magyar nyelv házát.
(Persze jó lenne, ha engem is támogatna az állam, de ez más kérdés..:))
Én a magam részéről kíváncsian várom az eredményt, remélem nyilvános lesz.
Szigorúan magánvéleményem a következő:
Szerintem még nem érkeztünk igazán el arra szintre, hogy a jó minőségű gépi fordítást cakkompakk tisztán statisztikai vagy gépi tanulásos módszerekkel megoldjuk.
Túlságosan bonyolult a probléma ahhoz, hogy elvárhassuk, hogy adunk a rendszernek egy korpuszt, és várjuk, hogy megtanuljon fordítani.
Kénytelenek vagyunk bizonyos mértékig a saját tudásunkra, fogalmainkra, modularizációs elképzeléseinkre hagyatkozni. Kénytelenek vagyunk magunk modelleket építeni. A statisztikai módszereket csak részfeladatok megoldására látom jónak: egy bizonyos modul szabályait megpróbálhatjuk tanítani a gépnek. Ez sokszor leginkább annotált, illetve előfeldolgozott korpusz alapú tanítást jelent.
Az én megközelítésem az, hogy addig fejlesztgetem, gyúrom, refactorolom a modelljeimet, amíg aggyal bírom, és amikor ennek látni fogom a határait, vagy végképp nem bírom cérnával, akkor pedig én is nekiindulok az egyes modulok szabálybázisainak automatikus tanításának, fokozatosan egyre önállóbbá, egyre öntanulóbbá fejlesztve a rendszert. Szóval nem zárkozom el az öntanuló rendszerektől, csak még az én fejlesztési stratégiámban nem jött el ennek az ideje.
(Képzeljük el a következő scifi-be illő scenáriót: valaki elkezd írni az egyszerűség kedvért modjuk C nyelven egy programot, ami nem öntanuló. Viszont lassan behardcodeolja a rendszerbe azt, hogy hogyan kell C programokat írni, így a rendszer lassan lassan elkezsi magát is elemezni, és lassan átírni. Egy idő után annyira átyrja magát, hogy rá sem lehet ismerni. Nos valahogy így szeretném én is, ha a rendszeremben szépen lassan fokozatosan átvennék a hatalmat az öntanuló részek az ember által kódoltak felett.)
A statisztikai módszereknek egy nagy előnye az iszonyatosan erős 'valóságkontroll'. Én, mint egyelőre kézi szabályokat létrehozó ember, ebben hátrányban vagyok, hiszen, lehet, hogy a modelljeim nem felelnek meg a 'valóságnak'. Ezzel tisztában vagyok, így a lehető legerősebb valóságkontrollt kell használnom. Ezt most úgy érem el, hogy van egy nagy input.txt-m tele angol mondatokkal, amiből a programom output.txt-t generál. Minden programmódosítás után meg kell néznem, hogy volt-e változás az output.txt-ben, és ha nem javított a helyzeten, a változtatást vissza kell csinálni. Ez végülis a test driven development egy formája. Ha elég nagy az input.txt, akkor ez egy picit rokonságban van a korpuszalapú megközelítéssel. Igazából ez egy szemi-evolúciós fejlesztési módszer, hiszen a jó változtatások (mutációk) élnek túl, csak ezek a mutációk nem véletlenszerűek, hanem én hozom létre őket a legjobb tudásom szerint. De az evolúciós kontroll (valóságkontrol) minden pillanatban ott van, és kegyetlenül lecsap a rossz mutációkra.
"3. magas színvonalú kommerciális angol -> valami elterjedt nyelv, mint kínai, arab, francia, német"
én a spanyolt javasolnám, viszonylag "könnyű", elterjedt és a többi latin nyelvekre is viszonylag "könnyen" átvihető (portugál(barazil), francia, olasz, román)
arab, kínai stb. az legyen amjd csak 4. fázis szvsz.
Indítottam egy blogot a gépi fordító rendszeremről. Már három bejegyzés megvan, ebből már láthatjátok, hogy miről fog szólni és milyen stílusban. Mindenkit szívesen látok:
Szóval olyasmit akartam írni, hogy ez a munka azért eléggé eltér más programozói munkáktól.
Ha olyan (egy részük hypeolt) szavakat említek, mint oprendszer, hálózati protokollok, XML, adatbáziskezelő, SQL, szerver oldali programozás, webservices, web 2.0, O/R mapping, stb... akkor azt látom, hogy totál semmi köze nincs ahhoz, amit gépi fordításként csinálok.
Nem nagyon hasonlít arra, amit programozásként mondjuk a munkehelyemen művelek, de mégis programozás.
Használom a Java nyelvet, azon belül néhány olyan absztrakt cuccot, mint Map, Set, Iterable, stb...
Nagyrészt matematika is ez, mert leginkább olyan fogalmakban gondolkodok, mint halmaz, reláció, gráf.
Tulajdonképpen csak annyiban matematika ez, amennyiben egy természettudomány matematikát használ a modellje megfogalmazására. Ilyen szempontból ez tisztán természettudomány, méghozzá azon belül is nyelvészet, mert hiszen modellt készítek a természetes nyelvre. Csak nem cikket írok, amint az elvárható lenne egy tudóstól, hanem a modellt teljesen formálisan fogalmazom meg Java nyelven meg mindenféle txt fileokban...
Nehezen bekategorizálható tevékenység ez, de pont ezért szeretem.
it all started when one day I had enough in a company I worked for then. Fustrated with extended work hours, wierdly planned timelines, insane pressures, office politics and brain dead bosses, I decided to break free. As Steve Jobs said that great work can only be done when people love what they do, I wanted to do great work and therefore I set out to do something which I loved doing.
Machine Translation is challenging, complex, computationally intensive and has been an area of research for over four decades. It involves logic, AI, mathematics, statistics and due to the immense cultural and national value associated with its applications, my direction was pretty straight forward.
A céljaim elég fókuszáltak, a rövid távtól a hosszútávig ilyen sorrenben a következők:
1. magas színvonalú angol-magyar gépi fordító engine, csak minimális szókinccsel
2. kommerciális angol magyar gépi fordító nagy szókinccsel (a cél a jelenlegi piacvezetőtől szignifikánsan jobb minőséget elérni.)
3. magas színvonalú kommerciális angol -> valami elterjedt nyelv, mint kínai, arab, francia, német
A 2. után azért logikus lépés a 3., mert ez a technológia elsősorban az angol nyelvű szövegek megértéséről, és csak kisebb részben egy célnyelvre való fordításáról szól.
Megint szüneteltettem egy kicsit a gépi fordítás kutatását, de pár hónapja megint aktív vagyok, és lelkesebb mint valaha!:)
Amit tavaly már megfogalmaztam, ahhoz 100%-ig tartottam magam:
- nemigen törődök egyelőre a nagy szókincs elérésével, hanem az engine-re koncentrálok. Majd 'szókincsezek' akkor, ha főállásban ezzel foglalkozom, vagy találok befektetőt, vagy már annyira jó lesz az engine, hogy már nem nagyon lesz ötletem arra, hogy hogyan javítsam tovább.
- nem volt 'kód újrakezdés', és már egyszer sem éreztem a szükségességét sem. Tekintve, hogy egy csomót brainstormingolok (szép magyar szó:)) elképzelhető lett volna, hogy eszembe jusson, hogy az új ötletek alapján teljesen újrakezdjem a forráskódot. Ez meg is történt évekkel ezelőtt. De most nem. Ez nagyon biztató, mert azt jelenti, hogy valószínűleg elég kiforrottak az alapok, és az új ötletek már csak finomítások, amelyek könnyen pluginelhetőek a rendszerbe. (Vagy már nincsenek elég forradalmi ötleteim.:) )
Újra és újra átgondoltam minden kis részletét, reggel a zuhanyzás közben, vagy éppen a villamoson ülve is azon gondolkodtam, hogy hogyan refactrolhatnék, hogyan nevezhetném el szebben az egyes elemeket, hogyan általánosíthatnék ki dolgokat, stb...
A lelkességem oka, hogy okosodik az engine. Tudom, hogy mennyivel többet tud, mint évekkel ezelőtt, és mégis még nagyon jól átlátható.
A lelkességem oka az is, hogy mivel minden korábban átgondolt algoritmus be van már építve a rendszerbe és le van kódolva, most alkalmam adódik olyan dolgok tervezgetésére, vizsgálatára, amelyekre korábban csak annyit mondtam, hogy ha majd lesz rá időm. És pont ezek az érdekes részek, általában a szemantikai témában. (A szemantika rögös útvesztői azért érdekesebbek, mint a szintaktika rögös útvesztői. Egyrészt felderítetlen terület. Másrészt van egy kissé misztikus töltete is a dolognak, mégiscsak a 'megértést' próbáljuk modellezni, ha mégoly kezdetleges szinten is.)
Kaptam egy 10 soros szlovák nyelvű levelet és szeretném lefordíttatni. Ezért nem akarok fordítóirodába menni - bár lehet nem lenne drága -, nincs valami ötletetek?
Esetleg valaki tud szlovákul? :-)
Az online fordítás teljes kudarc, hisz még azt sem tudom, hogy rag nélkül hogy néznek ki a szavak....
Viszont ez a Krohn-Rhodes csak FSM-re értelmezhető. Ami erősen korlátozza azt a kört, ahol bármi haszna lenne ennek a komplexitási mértéknek.
Tudom-tudom, az FSM bizonyos tekitentetben elvileg univerzális eszköz. De gyakorlatilag elég gyengécske. Az univerzalitása abból fakad, hogy nincs megkötve, mennyi is az a "finit", magyarán akárhány állapota lehet.
Belegondoltál abba, hogyha az FSM állapotainak számát növeljük, akkor egyre inkább hasonlítani fog a Turing-géphez?
A Turing gépet ismerem, sok ismeretterjesztő mű tárgyalja. Azzal is tisztában vagyok, hogy lemodellezhető nagyágyúkkal a neuronális hálózat. Éppen most olvastam egy ilyen kisérletről a neten, de már nem lelem. Egy ?egér? fél agyát szimulálták 4096 összehangolt processzorral. El tudom képzelni miről írsz, de én nem erre gondolok, hanem arra, hogy ha más lenne az alaplogika, (nem digitális, két állású, hanem kicsit több), akkor talán bizonyos neuron hálózatos feladatot jóval egyszerűbben meg lehetne oldani. Persze azt sem tudom folytatnak-e ilyen kisérleteket. De lehet, hogy a mégtöbb processzor oldja meg a problémát. Azaz minden processzor egy hasonlóan működő idegköteget reprezentálna.
Az emberi gondolkodás ill. memória képletesen úgy hasonlít a digitális számítástechnikai megoldásokhoz, mint a hologram a síkfelületű fényképhez
A digitális számítógép egy nagyon erős eszköz. A Church Turing tézis (ami perszrecsak egy filozófiai tézis) azt mondja ki, hogy ami algoritmikusan megoldható, az Turing géppel is megoldható. Persze ez azért filozófiai tézis, mert annyira nem tudtak ellenpéldát találni, hogy jobb híján a Turing géppel definiálták az algoritmus fogalmát.:) Természetesen minden valamire való mai programozási nyelv ekvivalens a Turing géppel. (Tekintsünk el a véges memóriától.) És az is sokatmondó, hogy többen többféle számítási paradigmát dolgoztak ki annak idején egymástól függetlenül, és mind ekvivalensnek bizonyult a Turing géppel.
Nagyon nehéz a való világban olyan problémákat találni, amelyek algoritmikusan bizonyítottan megoldhatatlanok. Az ilyenek kreálásához bizony komoly matematikai bűvészkeéds kell, és elő kell hogy jöjjön a végtelen fogalma. A Turing géppel megoldhatatlan feladatok nem olyanok, amelyeket az ember meg tud oldani. Ezek mind elvont matematikai feladatok, amelyek megoldására természetesen az ember sem képes.
A Turing gépen könnyedén szimulálhatók olyan szoft computing módszerek, (pl. neurális hálózatok) amelyek már egyes esetekben túlságosan is szoft-ok még az emberi gondolkodáshoz képest is. Ha elég számítási kapacitásod van, Turing géppel akár fizikai folyamatokat is szimulálhatsz.
Számomra mint programozó számára a digitális számítógép nem hasonlít semmire, maximum egy üres lapra, illetve arra, amire beprogramozzák. Kb. annyi jelentősége van, hogy a digitális számítógép mennyire hasonlít az emberi gondolkodáshoz, mint hogy az emberi neuron belső szerkezete mennyire hasonlít az emberi gondolkodáshoz.
Én nem azt mondom, hogy nem fogják tudni modellezni, hanem azt feltételezem, hogy nem digitális logikájú számítógéppel. Az emberi gondolkodás ill. memória képletesen úgy hasonlít a digitális számítástechnikai megoldásokhoz, mint a hologram a síkfelületű fényképhez. Hallottam fél füllel valami neuron rendszerről (biztos, hogy nem így nevezik, de aki érteni akarja, az rájön, mire is gondolok. :o)
Digitális eszközzel sose fogod tudni precízen utánozni, lemodellezni az emberi gondolkodás és ezen belül a nyelvhasználatot. Az ti. holisztikus.
Én természetesen nem fogom, és valószínűleg az én életemben nem fog ez megtörténni. (márminthogy olyan szinten lemodellezzék az emberi gondolkodást, hogy az megkülönböztethetetlen legyen az eredetitől.)
De miért lenne lehetetlen? Én el tudok képzelni a jövőben a miénknél sokkal-sokkal fejletteb tudományt, ahol a mai fogalmaink megmosolyognivaló trivialitásoknak tűnnek majd. Miért ne tudnák egyszer ezt a teljesítményt is elérni?
Vegyük a következő hasonlatot: Vegyünk egy 12 éves gyereket, aki nemrég óta programozik, és a maximális teljesítménye az, hogy tud olyan programot írni, ami kiírja a prímszámokat 1000-ig. Ha megkérnénk arra, hogy írjon mondjuk egy C fordítót, vajon hogyan válaszolna? Az biztos, hogy fogalma sem lenne, hogy hogyan menjen neki a feladatnak. Jogos lenne, ha azt mondaná, hogy a feladat lehetetlen?
Lehet, hogy a mai tudomány a legnagyobb koponyákkal együtt, még kb. ott tart A.I. ügyben mint ez a 12 éves gyermek C fordító ügyben.
Egyébként itt milyen értelemben használod a holisztikus szót? Arra gondolsz, hogy minden mindennel összefügg, ezért a modularizáció lehetetlen?
Attól, hogy minden mindennel összefügg, még lehet moduláris a rendszer, csak a modulok közötti kommunikációnak kétirányúnak kell lennie.
Mennyire tanulmányoztad át az ajánlottam dinamikus szemantikát?
Sajnos amikor ajánlottad külfüldön voltan, és nem tudtam megvenni a könyvet. Most viszont itthon vagyok, úgyhogy pár napon belül beszerzem a könyvet. Remélem a Ferenciek terén lévő Osiris könyvesboltban megkapom. Egyébként a neten van fenn valamilyen jó bevezető? Csak mert a google-el nem találtam online összefoglalót. ('Dynamic Semantics'-ra kerestem.)
Ismered a NYELVÉSZ - nyelvészeti vitafórum helyet?
Nem ismertem, köszi, hogy felhívtad rá a figyelmem. Beleolvasgattam az ott folyó témákba, tetszik, ezentúl rendszeres olvasójuk leszek.
"If You have finite state automata then we can tell You how to understand them exactly!"
Persze semmi egetvero ujdonsag nincs benne, de fontosnak tartom, hogy ok ugy gondoljak, hogy egy veges allapotautomata "megertheto" formalis uton, es ez a szemlelet kozel all hozzam.
Az en kedvenc (igen egyszeru) komplexitas fogalmam a kovetkezo:
- Vegyunk egy konkret, veges problemat - Modellezzuk veges automataval - Dekomponaljuk elemi allapotgepek (hierarchius) kompoziciojara - A komplexitas pedig a dekompozicioban a hierarchia szintek szama
Ez persze utkozik a vegesen nem modellezheto problemakkal, pl. CF nyelvek komplexitasa vegtelen, de ez termeszetes nyelvekre nem jelent igazan nagy megkotest. Viszont nagyon szepen benne van az, amit te a "kezunk bepiszkitasanak" nevezel: Minnel tobb "reszletet" (al-allapotgepeket) illesztessz a modellbe, annal nagyobb a komplexitasa.
Digitális eszközzel sose fogod tudni precízen utánozni, lemodellezni az emberi gondolkodás és ezen belül a nyelvhasználatot. Az ti. holisztikus.
Mennyire tanulmányoztad át az ajánlottam dinamikus szemantikát? Illetve van egy újabb szellemi kinzóeszköz a lexiko-funkcionális grammatika.
Ismered a NYELVÉSZ - nyelvészeti vitafórum helyet? Melegen ajánlom a figyelmedbe. Keresd Kálmán Lászlót (kalman@nytud.hu)! Ő a hazai DS egyik motorja, mellesleg a hely rendszergazdája. Konzultálj vele, talán megéri!
Miért szereted ennyire a Kolmogorov komplexitast? Az egyik legelemibb, legbutább komplexitás fogalom, legfejebb csak durva becslésekre használható.
Na majd korulnezek a piacon, es kivalasztom az uj kedvencemet:) A Kolmogorov komplexitast csak azert hasznalom, mert azt tanitottak az iskolaban nekem, meg nyilvan a legismertebb.
Azert sejtjuk. Itt van a blöki elhantolva! Hogy csak sejtjük. Ha tudnánk pontosan, akkor kész lenne a mindent tudó AI program. A "megértés" szó megértése maga a feladat.
Meglatasom szerint egy olyan 5-10 Kilobyte feletti Kolmogorov Komplexitasu program mar lehet olyan trukkos, es olyan bonyolult, ... Ez tök jó becslés, mert Neumann is az mondta, hogy minimálisan olyan 10 kilo"szó" nagyságú memória kell egy gépbe, ahhoz, hogy "lehesen vele valamit kezdeni"
Miért szereted ennyire a Kolmogorov komplexitast? Az egyik legelemibb, legbutább komplexitás fogalom, legfejebb csak durva becslésekre használható. (No meg persze, frankó no-go tételek bizonyítására, az a tétel, hogy a Kolmogorov komplexitas nem kiszámítható.)
a csecsemo agyanak Kolmogorov komplexitasa szerintem eleg nagy
Mostantol konkret leszek, es azt allitom, hogy szerintem 10kbyte felett van. Es azt is allitom, hogy 10 kbyte-os program mar lehet remenytelenul bonyolult ahhoz, hogy a kozeljovoben csak ugy csettintesre 'rajojjunk'.
Vigyázzunk ezzel a "megértés" kifejezéssel. Nem tudjuk mit is értsünk alatta.
Azert sejtjuk. Egyfajta koztes reprezentaciora (agyi allapot) valo forditast.
Na ezt a programot véletlenül ismerjük. Tömörítve elfér egy CD-n. Ha nagyon precizek akarunk lenni, akkor nem egeszen, mert egyreszt nem koveteltem meg, hogy a testet is szimulalni kell, masreszt viszont a sejt nem Turing gep, tehat lehet itt nemi konstans elteres, hiszen a Turing gepen le szimulalni kell azokat a folyamatokat, amelyek a zigotaban mar eleve megvannak, harmadreszt nem tudhatjuk, hogy mennyire lehetne ezt meg tomoriteni...
De az alapgondolatod jo: egy CD oriasi komplexitas. Meglatasom szerint egy olyan 5-10 Kilobyte feletti Kolmogorov Komplexitasu program mar lehet olyan trukkos, es olyan bonyolult, hogy a legzsenialisabb embernek sem jutna eszebe kigondolni; vagyis 'csettintesre' kitalalasa eselytelen.
Egy mai egyszeru mesterseges backpropagation neuralis halo Kolmogorov komplexitasa kotve hiszem, hogy 1Kbyte felett lenne. Es meg ezt sem kisujjbol talalta ki az emberiseg. Es nagyon nehez dolgod lenne, ha olyan tanuloalgoritmust kernek toled, amelyre joszivvel ramondanad, hogy a K. komplexitasa 5 kbyte felett van. Szerintem ennyire komplex algoritmust meg senki nem talalt ki...
Az a baj(?), hogy a mondataid külön-külön akár még igazak is lehetnek, viszont szerintem nem következnek egymásból, úgy ahogyan azt Te gondolod/írod.
Nem nagyon kovetkezik az irasomban semmi semmibol:), en csak egy sejtesemet irom le, ami egyetlen mondat: (a csecsemo agyanak Kolmogorov komplexitasa szerintem eleg nagy) es abszolut nem tudom bizonyitani sem.:)