Keresés

Részletes keresés

Törölt nick Creative Commons License 2007.05.03 0 0 64

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.

Előzmény: nadamhu (62)
Onogur Creative Commons License 2007.05.03 0 0 63
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!
Előzmény: nadamhu (54)
nadamhu Creative Commons License 2007.05.03 0 0 62

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.

 

Előzmény: buki92 (61)
buki92 Creative Commons License 2007.05.02 0 0 61
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ó.)
Előzmény: nadamhu (58)
nadamhu Creative Commons License 2007.05.02 0 0 60

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

Előzmény: nadamhu (58)
nadamhu Creative Commons License 2007.05.02 0 0 59

Ha csak ez hiányzik, komplexitás fogalomból éppenséggel van néhány a piacon

Tudom, hogy van egy csomo, ami nem csoda, hiszen nem nehez kitalalni mindig eppen olyat, ami eppen az ember celjainak megfelel.

Előzmény: buki92 (57)
nadamhu Creative Commons License 2007.05.02 0 0 58

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

Előzmény: buki92 (56)
buki92 Creative Commons License 2007.05.02 0 0 57
Egyebkent ha perecizebb lennek, a Kolmogorov komplexitas helyett valamilyen olyan praktikus valtozatot hasznalnek,...

Ha csak ez hiányzik, komplexitás fogalomból éppenséggel van néhány a piacon:
http://qwiki.caltech.edu/wiki/Complexity_Zoo

Kicsit komolyabban, de a komlexitás fogalmaknál maradva, nekem annak idején nagyon teszett ez az összefoglaló: http://bruce.edmonds.name/thesis/
Előzmény: nadamhu (55)
buki92 Creative Commons License 2007.05.02 0 0 56
A jo minosegu forditashoz ugyanis szukseg van a megertesre.
Vigyázzunk ezzel a "megértés" kifejezéssel. Nem tudjuk mit is értsünk alatta.
Lehet, hogy a végén majd kiderül, hogy a megértés, szimplán csak fordítás.
:-)

Gondoljunk bele, hogy a majom agya alig kulonbozik az emberetol, es ez maris eleg ahhoz, hogy eselye nincs megtanulni egy nyelvet.
Gondolunk bele, hogy egy Fedora telepítő DVD-n elég néhány bitet átírni, és ez máris elég ahhoz, hogy esélye se legyen működni. Na és akkor mi van?

(Annak a programnak a hossza, amely kepes eloallitani a csecsemoagy szimulaciojat vegzo programot szerintem eleg nagy.)
Na ezt a programot véletlenül ismerjük. Tömörítve elfér egy CD-n.
( http://hgdownload.cse.ucsc.edu/goldenPath/hg18/bigZips/ )

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.

Pl.: abból, hogy a neurális hálók nem eredményesek a fordításban, nem következik, hogy más gépi tanulási módszerek sem lehetnek azok. (Lehet hogy tényleg nem eredményesek, nem tudom. De azt tudom, hogy ez a kettő nem függ össze.)
Előzmény: nadamhu (54)
nadamhu Creative Commons License 2007.05.02 0 0 55

Szerintem kevered itt összekevered azt a programot, ami a Kolmogorov komplexitás definíciójában szerepel, azzal a programmal, amely fordítást végez két nyelv között.

Egyebkent valoban adatnak van Kolmogorov komplexitasa. En egy program Kolmogorov komplexitasa alatt azt ertem, hogy mi annak a legrovidebb programnak a hossza, amely legeneralja az adott programot. Vagy erthetjuk azt is egy program Kolmogorov komplexitasa alatt, hogy mi a legrovidebb olyan program hossza, amely teljesen ugyanazt csinalja, mint o. Azt hiszem ez  ket definico ugyanazt az eredmenyt adja (plusz minusz egy keves konstans).

 

Az emberi agy eseten formalisan:

P a legrovidebb olyan program, amely legeneralja a csecsemo agyat szimulalo C programot.

C lefuttatva szimulalhatunk egy embert, akit mindenfele ingereknek teszunk ki, igy az megtanulhat beszelni stb...

 

A spekulaciom az, hogy P hossza is viszonylag nagy.

 

Egyebkent ha perecizebb lennek, a Kolmogorov komplexitas helyett valamilyen olyan praktikus valtozatot hasznalnek, amelynel van valami nagyon nagy, de letezo korlat a futasi idore. Ugyanis ha nincs semmilyen futasido korlat, akkor olyan programokat is megengedunk, amelyek exponencialis idoben vegigprobalgatnak dolgokat (esetunkben esetleg megvalositjak az agy evoluciojat), es igy rovidek tudnak ugyan lenni, de szamunkra nem praktikusak.

Előzmény: buki92 (53)
nadamhu Creative Commons License 2007.05.02 0 0 54

Abbol, hogy 2 nyelv komplexitasa nagy kulon-kulon, valoban nem kovetkezik altalaban, hogy a koztuk fordito automata komplexitasa is nagy legyen.

De ebben a konkret esetben (ket termeszetes nyelv kozotti forditas) megis ugy gondolom, hogy maganak a forditogepnek is nagy a komplexitasa.

 

A jo minosegu forditashoz ugyanis szukseg van a megertesre. Maganak a megerto algoritmusnak szerintem nagy a komplexitasa.

 

Sot ennel tovabb megyek, mert nem csak azt allitom, hogy a megerto algoritmusnak nagy a komplexitasa (hiszen ez trivialis, tobb tizezer majdnem random karakterekbol allo szot kell megfeleltetni valami szemantikai cuccnak), hanem szerintem a maganak a kompetencianak is meg eleg nagy a komplexitasa. Kompetencia alatt a csecsemo agyat ertem: azt ami kepes megtanulni barmely nyelvet.

 

Az irasom lenyelege, hogy az agy szerintem nem egy kilogramm altalanos, barmit megtanulni kepes massza, hanem az evolucio soran kialakult celszerszam, bizonyos elore meghatarozott strukturaval, vagy valamivel, ami behatarolja a kepessegeit. Gondoljunk bele, hogy a majom agya alig kulonbozik az emberetol, es ez maris eleg ahhoz, hogy eselye nincs megtanulni egy nyelvet. Es gondoljunk bele abba is, hogy mennyire specializalt agyteruleteink vannak (mindenkinek), fuggetlenul attol, hogy mit tanultunk.

 

Konkretabban megfogalmazva, az a meglatasom, hogy a csecsemoagy (ami meg semmit nem tanult meg, csak kepes a tanulasra) Kolmogorov komplexitasa is meg eleg nagy. (Annak a programnak a hossza, amely kepes eloallitani a csecsemoagy szimulaciojat vegzo programot szerintem eleg nagy.) Es ha az ember munkaba allit egy manapsag hasznalatos mesterseges neuralis halot, akkor az nem fog megtanulni forditani, hacsak nem valahogy eleg sok informaciot beleprogramozunk a strukturajarol. Ezt viszont szerintem csak ugy lehet elerni, ha bepiszkoljuk a kezunket, es elkezdjuk valahogy modellezni viszonylag reszletesen a nyelvet, es ezeket a modelleket finomitjuk. Az iras lenyege, hogy nem hiszek az olyan kiralyi utban, hogy egyszercsak valaki csettint egyet, es kitalal egy kis Kolmogorov komplexitasu, de nagyon eros tanuloalgoritmust.

buki92 Creative Commons License 2007.05.02 0 0 53
Megközelíthetjük információelméleti megfogalmazásban is: az emberi nyelvi kompetencia Kolmogorov komplexitása véleményem szerint elég nagy.
Szerintem is, de ebből még nem következik a következő:
Vagyis a legrövidebb program, amely képes a környezetbõl érkezõ szövegpárok alapján megtanulni mondjuk a gépi fordítást, véleményem szerint elég hosszú. Ez reménytelenné teszi ennek a programnak a megtalálását anélkül, hogy bepiszkolnánk a kezünket a részletekkel.

Szerintem kevered itt összekevered azt a programot, ami a Kolmogorov komplexitás definíciójában szerepel, azzal a programmal, amely fordítást végez két nyelv között.

Fogadjuk el, hogy a forum.index.hu alatt található oldalak Kolmogorov komplexitása elég nagy. Ennek ellenére viszonylag könnyű olyan programot írni, amely a HTML jelölő nyelvrő PDF nyelvre fordítja le ezen oldalak bármelyikét.

És viszont: Legyen a fordítás kiinduló nyelve az aritmetikai formulák nyelve, a célnyelv pedig a {"kielégíthető", "nem kielégíthető"} mondatokból álló nyelv. Ez esetben maguk a nyelvek elég egyszerűek, de a fordítást végző algoritmus "elég" bonyolult lesz. :)

Kicsit formálisabban: "A fordítás egyszerűsége nem ad semmilyen információt a nyelv a fordítandó nyelv bonyolultságáról" [BI:SzT.Nyelv. 4.1 fejezet]
Előzmény: nadamhu (52)
nadamhu Creative Commons License 2007.05.01 0 0 52
www.cybertron.hu
Előzmény: nadamhu (51)
nadamhu Creative Commons License 2007.05.01 0 0 51

Kiraktam a honlapomra három nemrégi írásomat a gépi fordításról.

A harmadikból linkek vannak .SVG formátumú ábrákra. Ezek az ábrák egy-egy angol mondat általam elképzelt interlingua-ban való reprezentációját ábrázolják.

Szándékosan nem részleteztem nagyon ennek az interlingua-nak a logikáját.

Sokkal gondolatébresztőbb, ha az olvasó maga keres logikát ezekben az ábrákban.

Törölt nick Creative Commons License 2006.03.03 0 0 50
Sziasztok!

Érdeklődve olvastam végig a topikot, mert van egy elképzelésem amiről szeretném kikérni a véleményetek.
Hasonló, részben körvonalazódott a hozzászólásokban, az újdonság tehát nem a módszerekben, hanem inkább a probléma megközelítésében lehet, hacsak tudatlanságomban nem lerágott csonttal próbálkozom.

Lehet-e tökéletes gépi fordítást végezni? Aligha. Laikusként is nyilvánvaló, hogy ha egynyelvű szövegben sem lehet száz százalékos szövegértést remélni, hogyan lehetne egy másik nyelvre átültetve ezt követelményként megfogalmazni?

A cél mégis csak az információ torzulás nélküli átvitele lehet amennyire a két nyelv eszközkészlete és kultúrája ezt lehetővé teszi.
Cél az is, hogy egyetlen fordítási ciklusra legyen szükség, az eredmény bármely nyelven megjelenhessen.

A jelenlegi fordítók az olvasó nézőpontjából tekintenek a problémára. Van egy idegen nyelvű szöveg, a feladat átkódolni a saját nyelvünkre.
A kommunikáció azonban természetes módon nem így, hanem az információ átadás igényével kezdődik.

Közlendőm van a világ számára, szeretném mások által elérhetővé tenni.

Innen tekintve teljesen más hangsúlyt kapnak ugyanazok a feladatok, amiket Ti is felvázoltatok.

Kiindulhatunk abból, hogy az információ forrása jelen van, részt vesz a szöveg főleg szemantikai de grammatikai feldolgozásában is.
Nem fordítandó, hanem értelmezendő szövegről beszélhetünk, ami adott esetben még az egynyelvű kommunikációban is jelenthet többletet.
(„Archiv” szövegek feldolgozásánál az emberi közreműködés kulcsa a szöveg értése de nem lesz szükséges idegen nyelv ismeretre.)

A feladat tehát egy olyan leíró eszközrendszer kialakítása, ami lehetővé teszi a szöveg saját nyelven történő félreértéseket kizáró, egyértelmű rögzítését.
Ezt a folyamatot segítheti a gépi intelligencia, elemezheti, ajánlatokat tehet, fejlődése egyre gyorsabbá és természetesebbé teheti az adatbevitelt, de nem befolyásolja annak minőségét.
A gép feladata, hogy csak olyan adatot fogadjon el, ami a későbbi feldolgozás során értelmezhető.
Ezzel egy csapásra kihúztuk a probléma méregfogát. Viszonylag kis szókinccsel és alapvető nyelvtani szabályokkal is jó kommunikáció valósítható meg.

Hogyan lehet egy szöveg jelentését egyértelműen rögzíteni?
Mivel a szavak számtalan jelentést hordozhatnak, sőt bármilyen jelentést adhatok neki, véleményem szerint egy általánosabb fogalomtárat (jelentéstárat) kell létrehozni, egyfajta értelmező szótárat, amely teljesen független minden nyelvi sajátosságtól, és megjelenési formától.
A fogalomtár lényeges tulajdonsága lenne a strukturáltság, ami a fogalmak egymáshoz való viszonyát rögzíti. Ha egy célnyelvben nem létezik az adott fogalomra kifejezés, egy hasonló értelmű, vagy általánosabb szülő fogalom használata segít áthidalni a kommunikációs rést.
Ez lenne kb. az a tudáshalmaz, amiről Aller-gen-etikus írt.
Szükség lesz persze a grammatikai szimbólumhalmazra és a levezetési szabályok rögzítésére, ez azonban gondolom minden fordító szükségszerű feladata.
A szavak tehát a fogalomtárbeli azonosítójukkal lesznek helyettesítve, a pillanatnyi jelentésüknek megfelelően.
Látszólag hatalmas munka egy a teljességet megcélzó fogalomtárat létrehozni, de ezt a jövő nemzedékére lehet bízni, a kommunikáció kezdeményezőjének feladata, hogy az adatbázisban pillanatnyilag meglévő fogalmak használatával fejezze ki mondanivalóját.
Akár ezres nagyságrendű fogalom elegendő lehet a köznapi kommunikációban.
Természetesen rögzíteni kell a nyelvtani kapcsolatokat, és rögzíteni lehet minden egyéb, a megértést segítő, vagy a megjelenítést (formázást) leíró kiegészítő információt.
Ennek a szakasznak az outputja lehet egyfajta hipertext formátum olyasmi, ami már szintén szóba került.

Minden nyelvre kell készíteni egy megjelenítőt, ami ezt az adatleíró formátumot az adott nyelv sajátosságainak megfelelően olvashatóvá teszi.
Nincs tehát lényegi újdonság az egyes részfeladatokat illetően, ugyanazokra az eszközökre (modulokra) van szükség, amiket Nadamhu már meg is csinált, mindössze a felhasználás módja változik meg gyökeresen.

Milyen előnyökkel járna ez a módszer?

A kommunikáció indítója szempontjából:
A rendszer szűk keresztmetszete őt korlátozza, tehát nem kerülhet be értelmezhetetlen adat.
Rákényszerül az egyértelmű, nyelvtanilag helyes fogalmazásra, egynyelvű felhasználás esetén is hasznos lehet, az így tárolt szöveg kevésbé lesz félreérthető az egyszerű szövegnél.
Az azonos nyelvű megjelenítés lehetőséget ad a munka azonnali ellenőrzésére.
Nem kell ismernie egyetlen idegen nyelvet sem, mégis az összes nyelven biztonsággal kifejezheti mondanivalóját.

Nincs szükség olyan személy közreműködésére aki a célnyelvet ismeri.
Lehet fordítani két nyelv között akkor is, ha egyetlen ember sem beszéli mindkét nyelvet.

Az így tárolt szöveg számtalan módon megjeleníthető nemcsak a cél, hanem a forrás nyelvén is, pl.: az adott nyelv tájszólásában, különböző stílusokban, a megjelenítés követheti a nyelv változásait.

A szöveg tartalmazhat multimédiás kiegészítőket, alkalmas lehet TV csatornák, filmek bármely nyelven történő feliratozására, vagy akár gépi szinkronizálására.

Utoljára, de talán a legfontosabb:
Úgy az értelmező mind a megjelenítő programok elkészítése nem igényli egyetlen idegen nyelv ismeretét sem, mindössze saját nyelv és programozási ismeret szükséges.
A fogalomtár fejlesztése pedig a nyelvművelők feladata lehet, akár nemzetközi összefogással, folyamatos munkával, ehhez sem idegen nyelv, sem programozási ismeret nem szükséges.

Mindhárom fő alkotóelem egymástól gyakorlatilag függetlenül fejlődhet, természetesen az adatleíró nyelv specifikációs standardját figyelembe véve.
Számtalan profi és amatőr megjelenítő és értelmező versenghet a könnyebb adatbevitel és a természetesebb megjelenítés érdekében.

laszilo
nadamhu Creative Commons License 2006.02.09 0 0 49

Visszaolvastam, es most latom, hogy milyen kardosan vedekeztem azzal kapcsolatban, hogy fogok-e eredmenyt elerni.:)

Hat ilyen az, amikor az ember nem ert egyet korabbi onmagaval.:)

Sokat valtozott a hozzaallasom azota. Sokkal kisebb elerendo celokat tuzok ki magam ele altalaban, es sokkal megfontoltabb vagyok.

Abszolut neked volt igazad.

 

Előzmény: aller.gen.etikus (47)
nadamhu Creative Commons License 2006.02.09 0 0 48

Szia,

 

Idokozben kisse elfaradtam, es felfuggesztettem a temaval valo aktiv foglalkozast.

Napi 8 oras fizetoes munkam mellett ez tul megeroltetonek bizonyult. Raadasul ujabban tobb idot szanok pl. sportolasra, es hasonlo dolgokra is.

Azota is szoktam persze hobbybol programozni (szerintem ez mar igy marad, amig billenytyuzetet tudok tartani a kezemben:)), de inkabb kisebb problemakkal foglalkozok, ezek nagyobb sikerelmenyt nyujtanak.

 

De a tema tovabbra is erdekel, es szivesen olvasok masok tapasztalatairol, elmeleteirol, eredmenyeirol.

 

Egy jozan ember szamara nyilvanvalo volt, hogy egyedul el fogok bukni egy ekkora feladaton, de vegulis sokat tanultam belole, erdekes volt, igy annyira nem banom, hogy ilyen sokat foglalkoztam vele.

Előzmény: aller.gen.etikus (47)
aller.gen.etikus Creative Commons License 2006.02.09 0 0 47

Kedves nadamhu!

 

Egy teljes év telik el immár, és nulla információ jutott el hozzám a program hogyállásáról.

 

Ez olyan hosszú idő, hogy közben még  a jelszómat is eldobtam valahol.

 

üdv:

aller

Előzmény: nadamhu (43)
polites Creative Commons License 2005.06.09 0 0 46

Statisztikai módszerekkel javítható a gépi fordítás minősége az ad-hoc választásokhoz képest, de a jó minőségű fordítást azzal sem lehet elérni.

 

Gondoljunk bele a szakfordítás problémájába.

Hiába vannak mindkét nyelvben tökéletesen képzett emberi fordítók, a szakfordításhoz szakembernek is kell lenniük, különben hülyeségek kerülnek a fordításba. Nem lehet megúszni a megértést.

 

Viszont az a helyzet, hogy a gépnek az egész emberi élet és annak fogalmai szakfordítási problémát jelentenek. Nem szakember ezen a területen.

Statisztika ezt meg nem oldja.

Előzmény: nadamhu (43)
eMusty Creative Commons License 2005.04.25 0 0 45

Ezt a megközelítést az OMT nevű módszertanban találták ki, de aztán kevésnek bizonyult. Amit ilyen megközelítéssel és ezzel a programmal el lehet érni, azt egy közepes tudású rendszerszervező a követelmények egyszeri elolvasása után is megrajzolja egy tervezőeszközben, az pedig egy kattintásra előállítja a forráskódot.

 

Több jövőt jósolok az olyan kezdeményezéseknek, amik a markup-nyelvekre (pl. HTML) hasonlítanak (azaz SGML nyelvek), mert egyesítik az élő szöveghez közeli megfogalmazás előnyeit a feltételek, folyamatok (viselkedés és dinamika) meghatározásához elengedhetetlen, matematikai pontosságú eszközrendszert.

Előzmény: Ipari-antidepresszió (44)
Ipari-antidepresszió Creative Commons License 2005.03.29 0 0 44

 

Metafor: Translating Natural Language to Code

 

"Computer programming is second nature to most of the Slashdot crowd. However, this is not true for the vast majority of people. Formal programming languages are not as expressive or flexible as natural languages. This becomes more evident when we try to translate user requirements into actual code. Researchers at MIT have come up with a program that bridges this gap. It's not so much a tool that turns English into code, as it is a program that translates requirements (in English) to code. When Metafor analyzes English, nouns phrases become objects, verbs become functions, and adjectives become object attributes (or properties). In addition to helping programmers visualize their program better, I think it also promotes writing concise (and therefore) requirements and descriptions. Metafor doesn't handle run-on sentences (or bad English) that well." Update For for the dupe. Not going well. Appreciate all the hate mail. Really encourages improvement.

nadamhu Creative Commons License 2005.02.25 0 0 43
Végülis nem ez az első tisztán statisztikai módszereken alapuló próbálkozás. Érdekes lenne megtudni, hogy miben jobb ez a szoftver az eddigieknél, de a cikk sajnos nem megy bele részletekbe.
Törölt nick Creative Commons License 2005.02.23 0 0 42

Ehez mitszolsz?

 

http://index.hu/tech/szoftver/ferdito0223/

 

Nemazer, de pontosan ilyen megoldast lattam celszerunek az elo nyelvek forditasara. Kar, hogy a jo otleteket ido es tamogatas hijjan elhappoljak elolem. :(

 

Kedves nadamhu, nem csinaljuk meg ketten ugyanezt hamarabb, es jobban? Csak mert mi tuti jobbak vagyunk.

Előzmény: nadamhu (41)
nadamhu Creative Commons License 2005.01.22 0 0 41

Szia Szindbad,

 

Sajnos rövidtávú pénzkereső munkáim egy kicsit megszaporodtak az utóbbi 1-2 hónapban, ezért jártam errefelé is kevesebbet, és a fordítóprogramra is kevesebb időm volt.

Most már egyértelműen statisztikai módszert alkalmazok a szemantikai döntések elvégzésénél ('megértésnél'). (most megtetszett nekem ez a 'megértés pillanata' hasonlat, nekem úgy tűnik, mintha az embernél is lenne ilyesmi: viszonylag hosszú előkészítési folyamat után hirtelen megvilágosodás.)

Dummy unit tesztek alapján biztatóan működik, de igazából csak szinte a fejlesztés végén tudom majd igazán kiértékelni a módszert: amikor már a nyelvtani elemzőm teljesen kész lesz, és elegendő döntési minta áll majd rendelkezésre, amivel tanítani fogom.

Előzmény: Törölt nick (39)
nadamhu Creative Commons License 2005.01.22 0 0 40

Nagyon nagy vonalakban elmondható, hogy morfológiai elemzést -> szintaktikai elemzést -> szemantikai elemzést -> transzformálást -> szintaktikai generálást -> morfológiai generálást csinálok.

 

Persze a dolgot részleteiben nézve, egy kicsit összetettebb a kép.

Végülis elég jól le van dokumentálva a rendszer, de azt a doksit nem hoztam nyilvánosságra, mert ahhoz túl részletes.

A teljesség igénye nélkül, néhány momentum:

 

Hipotézisekkel dolgozok: Rengeteg hipotézist vizsgál végig a rendszer mind a morfológiai, mind a szintaktikai elemzés szintjén. Ezek a hipotézisek egyrészt a nyelv dokhelyütt 'ambigous' jellege miatt 'szaporodnak', más részt még hihető feltételezett helyesírási hibákkat is hipotézisként felveszek.

A nyelvtani elemzést végülis úgy kell elképzelni, mint egy iteratív ciklust, amikor hipotézisek halmazából kikövetkeztetek egy újabb hipotézist, amit berakok a halmazba. Egy hipotézisnek jellemzője, hogy a szövegnek mely pozíciótól mely pozícióig terjedő szakaszára vonatkozik. Jellemzője egy hipotézis erősség is: ez Fuzzy jellegűen számolódik nyelvtani elemzéskor. A hipotézisek egymásta hivatkozva fastruktúrát alkotnak.

A nyelvtani elemzésre saját szabálybázis formátumot találtam ki, ami viszont mivel igen speciális, (nem általános programozási nyelv) kénytelen normál C++ kódokat, mint kicsi plugineket is meghívni: (ez egy kompromisszumos megoldás: csak C++-ban írva nagyon ronda és átláthatatlan lenne a nyelvtani elemzés szabálybázisa, valami korlátozott nyelv meg nem elég flexibilis bonyolultabb esetek leírására.)

 

A hipotézisek közül egy döntési modul dönt. Egy hipotézisen belül is vannak döntési pontok, pl. hogy mi lesz egy többjelentésű szó jelentése.

A lényeg az, hogy ezek a döntések mind összefüggenek egymással: ezért az összes döntésnek elvégzése egyetlen pontján történik a programnak: Ezt nevezhetjük a megértés pillanatának is. Ez a megértő modul nem szabálybázis alapján, hanem statisztikai alapon működik. Leegyszerűsítve mondhatjuk, hogy olyan döntési konfigurációt fogad el, amelynek a legnagyobb a valószínűsége az eddig neki megmutatott ember által végzett döntési minták alapján.

 

A döntés után következik egy transzformációkkal egybekötött magyar nyelvtani generálás, majd magyar morfológiai generálás.

 

A morfológiára végre sikerült olyan modellt készítenem, amely segítségével mind az angol, mind a magyar morfológia leírható egységes szerkezetben, és egy az egyben használható mind generáláshoz, mind elemzéshez. (Régebben csak egyirányú, és némileg nyelvfüggő modellt készítettem.)

 

Amit most összefoglaltam, az a 2.0-ás rendszer, nem a most üzemben lévő 1.0-ás. Sajnos még elég sok idő, mire elkészül, mert nem 'főmunkaidőben' csinálom.

Előzmény: -Fu- (38)
Törölt nick Creative Commons License 2005.01.20 0 0 39

Kedves nadamhu, regen irtal errefele, erdeklodnek enis, hogyall a projekt? Sikerult kezdeni valamit a statisztikai tanulasi modszerekkel?

Előzmény: nadamhu (36)
-Fu- Creative Commons License 2005.01.18 0 0 38
Kicsit írhatnál részletesebben a program működéséről,
vagy csak elsiklottam felette?

Naivan ilyesmit képzel le az ember:
Szintaktika - először az induló nyelv
morfémáit felismerjük, ezek segítségével megpróbáljuk
felépíteni a mondatszerkezetet (itt most gimnáziumból
ismert szerkezeti fára gondolok, alany-állítmány-tárgy-jelzők,
stb.). Vagy e helyett más struktúrát haszálsz?
Mindenesetre itt pl. a magyar ragok,
toldalékok gazdag rendszere sokat segíthet.
Aztán jön egy nehezebb rész, ami megpróbálja a témát,
fókuszt stb. azonosítani, nyomon követni, melyik névmás
mire utalhat. (Ezt már szemantikai elemzésnek hivod, gondolom).
Aztán elkezdünk fordítani: lehet, hogy
kicsit át kell alakítani a fa szerkezetét, ha a másik
nyelv eltérő szabályokkal rendelkezik,
majd a faszerkezetet ügyesen átültetjük
egy lineáris szerkezetté, azaz mondattá.
Ez egy kicsit nehezebbnek hangzik.
Végül a morfémák szintjén elővesszük
a szótárat és kicseréljük a szavakat.

Na most lehet, hogy ez egy reménytelen idealizáció,
és túl sok kölcsönhatás van az egyes szintek
(pl. szemantika és szintaktika, szó és mondatszerkezet, stb)
között ahhoz, hogy azok modellezése nélkül rendes eredményt
lehessen így elérni.

Mindesetre leírhatnád, kb. így megy-e , vagy máshogy,
a dolog.

Egyébként régen én is próbálkoztam ilyesmivel,
az alapvető toldalékok felismerése nagyjából ment,
amikor meguntam (persze még az lehet a leg egyszerűbb).





nadamhu Creative Commons License 2004.08.16 0 0 36
Ezzel analóg az is, hogy a kutatások szerint úgy tűnik, hogy az emberi agy sem a végtelenségig adaptív: valamilyen szinten úgy tűnik gyárilag (genetikailag) hardcodeolva van az, hogy meg tudjuk érteni, és használni tudjuk a nyelvet. Van tehát valamilyen struktúra, amire aztán persze nagyon sok adaptivitás épül.
Előzmény: nadamhu (35)
nadamhu Creative Commons License 2004.08.16 0 0 35

A statisztikai módszerek jók lehetnek bizonyos részfeladatokra. Pl. teszemazt van egy nyelvtani elemződ, ami nem tud dönteni 2 elemzési fa alternatíva között. Ekkor pl. statisztikai módszert is alkalmazhatunk annak eldöntésére, hogy melyik fa a jobb. (melyikhez hasonló fordult elő már a korpuszban).

Én azzal nem értek egyet, amikor nincs igazán nyelvi modellünk, és az egész feladatot (angol szövegtől magyar szövegig) statisztikai módszerrel akarjuk megfogni.

Szerintem vannak dolgok, amiről sokat tudunk, ezért érdemes direktbe beépíteni a rendszerbe (ilyen pl. a szintaktika, a morfológia), vannak területek, ahol bizonytalanabban tudunk szabályokat formalizálni, ott érdemes statisztikai módszerrel próbálkozni. De azokat a statisztikai fordításokat, amelyeket a nyelv felszínén (az elemzetlen szó sorozaton) végeznek, zsákutcának látom: ideig óráig el akarják kerülni, hogy okos modellt építsenek, (kezdetben elég szép eredmények vannak) így viszont túl bonyolult feladatot akarnak megoldatni tisztán statisztikai úton, egy bizonyos minőségen nem lehet túllépni így szerintem. Ezt kb. így látom más komplex feladatok esetén is. Pl. ha egy hangfelismerőt írsz, ami megmondja, hogy milyen állat hangját halljuk az erdőben, elég lehet egy statisztikai elemző. Ha egy olyan robotot kell csinálni, ami az erdőben 'él', táplálékot szerez, menekül a ragadozók elől, ahhoz ma jobb híján valamiféle moduláris rendszert terveznék, amiben részfeladatokra lehet, hogy használnék statisztikai módszereket, de nem az egész feladatra: nem az inputon végzett statisztikai elemzés döntené el, hogy hogyan mozgassuk a szervomotorokat.

Előzmény: Szindbad76 (34)
Szindbad76 Creative Commons License 2004.08.16 0 0 34
Emlitettel korabban olyasmit ha jol emlexem, hogy a valoszinusegi, statisztikai vizsgalaton alapulo nyelv-elemzoket nem tartod jo iranynak. Megkerdezhetem, hogy miert?
Előzmény: nadamhu (32)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!