Forum » Znanost in tehnologija » Človeški jezik
Človeški jezik
kuall ::
No pa probajmo načet eno debato o človeškem jeziku in računalniškem prevajanju med jeziki. Glede na to, da je to dokaj zanimiva tema veliko ljudem bi se morala debata razvit.
Jaz skoraj vsak dan razmišljam o tem in se da marsikaj zanimivega pogruntat. Nekaj mojih idej povezanih z jeikom: (imam jih polno, ker probam na sprehodih/na kolesu/... vsak dan dobiti eno novo idejo.)
Bistvo šal je to, da vedno opisujejo neko napako, ki pa je dovolj blaga, da ni bila tragedija. Enostaven primer: nekdo se spotakne in mi se mu režimo. Zakaj nam je to smešno? Najbrž smo s smehom ljudem in sebi pokazali, da ni treba paničarit, ampak da naj se sprostijo. Zakaj nas napake tako zanimajo? Zato, ker če pogledate malo kaj delamo velik del vzame popravljanje napak oziroma izogibanje napakam. V programiranju je to najbolj opazno, je pa tako tudi na drugih področjih. Napake so nam zanimive zato, ker je zelo koristno, če se naučimo, kako se jim izognit, izognemo pa se jim tako, da opazujemo napake od drugih, zato ljudje tako radi govorijo šale in podobne nezgode, ki so se zgodile komu ali ki bi se hipotetično lahko zgodile.
Govorjenje ni nič drugega kot naštevanje, v katere kategorije spadajo stvari. V stavku neka beseda/besedna zveza vedno opisuje neko drugo besedo/besedno zvezo, je njena lastnost. Če je nekaj lastnost nečesa pa to pomeni, da spada v kategorijo stvari, ki imajo isto lastnost. Torej ko nekaj opisujemo samo dodajamo stvari v kategorije, nič drugega. Kategoriziranje stvari je osnova inteligence, je pa to ista stvar kot ugotavljanje podobnosti stvari/analogije. Zato ker podobnost ni nič drugega kot to, da stvari spadajo v iste kategorije.
Ljudje smo genetsko nagnjeni k temu, da ne menjamo teme pogovorov preveč pogosto. Zato, ker človeški jezik tako deluje, da se veliko stvari sklepa iz konteksta. Človeški jezik je tako narejen, da se da v čimkrajšem času povedati čimveč, to pa se doseže tako, da povemo samo tisto, česar poslušalec ne more sklepati iz konteksta. Če veliko menjamo temo pogovora potem hitreje pride do nesporazuma. En primer: "Ona je blond." O čem tukaj govori? o barvi las ali o pameti? To lahko sklepamo iz teme pogovora, če govorimo o frizerstvu vemo, da o barvi las, če pa govorimo o njenem karakterju vemo, da se gre za metaforo.
Zaenkrat bo zadost, imam pa še polno idej.
Počasi tudi probavam naredit prevajalca med jeziki. Koliko mislite, da bi bil vreden en zelo dober prevajalec med slovenščino in angleščino?
Jaz skoraj vsak dan razmišljam o tem in se da marsikaj zanimivega pogruntat. Nekaj mojih idej povezanih z jeikom: (imam jih polno, ker probam na sprehodih/na kolesu/... vsak dan dobiti eno novo idejo.)
Bistvo šal je to, da vedno opisujejo neko napako, ki pa je dovolj blaga, da ni bila tragedija. Enostaven primer: nekdo se spotakne in mi se mu režimo. Zakaj nam je to smešno? Najbrž smo s smehom ljudem in sebi pokazali, da ni treba paničarit, ampak da naj se sprostijo. Zakaj nas napake tako zanimajo? Zato, ker če pogledate malo kaj delamo velik del vzame popravljanje napak oziroma izogibanje napakam. V programiranju je to najbolj opazno, je pa tako tudi na drugih področjih. Napake so nam zanimive zato, ker je zelo koristno, če se naučimo, kako se jim izognit, izognemo pa se jim tako, da opazujemo napake od drugih, zato ljudje tako radi govorijo šale in podobne nezgode, ki so se zgodile komu ali ki bi se hipotetično lahko zgodile.
Govorjenje ni nič drugega kot naštevanje, v katere kategorije spadajo stvari. V stavku neka beseda/besedna zveza vedno opisuje neko drugo besedo/besedno zvezo, je njena lastnost. Če je nekaj lastnost nečesa pa to pomeni, da spada v kategorijo stvari, ki imajo isto lastnost. Torej ko nekaj opisujemo samo dodajamo stvari v kategorije, nič drugega. Kategoriziranje stvari je osnova inteligence, je pa to ista stvar kot ugotavljanje podobnosti stvari/analogije. Zato ker podobnost ni nič drugega kot to, da stvari spadajo v iste kategorije.
Ljudje smo genetsko nagnjeni k temu, da ne menjamo teme pogovorov preveč pogosto. Zato, ker človeški jezik tako deluje, da se veliko stvari sklepa iz konteksta. Človeški jezik je tako narejen, da se da v čimkrajšem času povedati čimveč, to pa se doseže tako, da povemo samo tisto, česar poslušalec ne more sklepati iz konteksta. Če veliko menjamo temo pogovora potem hitreje pride do nesporazuma. En primer: "Ona je blond." O čem tukaj govori? o barvi las ali o pameti? To lahko sklepamo iz teme pogovora, če govorimo o frizerstvu vemo, da o barvi las, če pa govorimo o njenem karakterju vemo, da se gre za metaforo.
Zaenkrat bo zadost, imam pa še polno idej.
Počasi tudi probavam naredit prevajalca med jeziki. Koliko mislite, da bi bil vreden en zelo dober prevajalec med slovenščino in angleščino?
kuall ::
Kateri je potem najboljši slo-ang prevajalnik? Google translate ali so Slovenci naredili kaj boljšega?
Irbis ::
Kateri je potem najboljši slo-ang prevajalnik? Google translate ali so Slovenci naredili kaj boljšega?
Imaš še tole: http://presis.amebis.si/prevajanje/
Dela s pravili, tako da pri dovolj preprostih stavkih bo prevod večkrat slovnično bolj pravilen, po drugi strani pa večkrat zgreši pravi pomen.
> Koliko mislite, da bi bil vreden en zelo dober prevajalec med slovenščino in angleščino?
Dokler ni bistveno boljši od Google Translata, nič, ker ne bo nihče plačeval za nekaj, kar ima na voljo brezplačno.
.:joco:. ::
Glede humorja, obstaja več vej. Mene najbolj prepriča Daniel Dennet-ov Inside Jokes. Torej, smeh je reward za succesfuly reverse engineered problem.
"Is science true?"
You don't get it.
Science is the process of trying to find out what's true.
You don't get it.
Science is the process of trying to find out what's true.
kuall ::
joco: hehe tvoj link potrdi moje teorije o humorju, očitno niso moja razmišljanja neka blodnja.
irbis: to mi je jasno, da mora biti boljši kot google translate. saj google translate je dokaj dober, ampak bo prišel v dead end. no razen če ga ne bodo izboljšali, saj najbrž ga bodo. ampak bodo morali zaviti v drugo smer, tale statistična obdelava obstoječih prevodov ni ravno nekaj, kar ima prihodnost.
irbis: to mi je jasno, da mora biti boljši kot google translate. saj google translate je dokaj dober, ampak bo prišel v dead end. no razen če ga ne bodo izboljšali, saj najbrž ga bodo. ampak bodo morali zaviti v drugo smer, tale statistična obdelava obstoječih prevodov ni ravno nekaj, kar ima prihodnost.
jype ::
kuall> no razen če ga ne bodo izboljšali, saj najbrž ga bodo.
Problem google translate je v tem, da slovenski jezik govori premalo ljudi, da bi strojno učenje lahko bilo tako učinkovito, kot je pri drugih jezikih.
kuall> tale statistična obdelava obstoječih prevodov ni ravno nekaj, kar ima prihodnost.
Statistična obdelava je točno to, kar tvoji možgani počnejo, ko konstruirajo govor.
Problem google translate je v tem, da slovenski jezik govori premalo ljudi, da bi strojno učenje lahko bilo tako učinkovito, kot je pri drugih jezikih.
kuall> tale statistična obdelava obstoječih prevodov ni ravno nekaj, kar ima prihodnost.
Statistična obdelava je točno to, kar tvoji možgani počnejo, ko konstruirajo govor.
smacker ::
Še malo teorije iz računalništva:
Raziskovalci strojnega prevajanja se ukvarjajo predvsem s problemom, kako oceniti kvaliteto nekega prevoda. Ko razviješ strojno prevajanje, ga moraš namreč primerjat z obstoječimi rešitvami, da vidiš če si odkril boljšo metodo oz. način. Torej isti tekst moraš prevesti z Google Translate in s svojim prevajalnikom. Nato moraš pa primerjat prevoda, da ugotoviš kateri je boljši. Postopek mora bit avtomatiziran, saj moraš primerjavo izvajat na veliki množici (milijonih) dokumentov. Trenutno se uporablja BLEU metrika, ki pa še zdaleč ni popolna: BLEU @ Wikipedia
Obstaja več metod strojnega prevajanja. Nejosnovnejše prevajajo besedo po besedo z uporabo slovarjev. Zanesljivost teh si lahko predstavljate, takšen je bil Google Translate v svojih povojih.
Naprednejše metode, uporabljajo statistične modele. Na veliki množici besedil analizirajo katere besede se pogosto pojavljajo skupaj in nato pri prevajanju upoštevajo še besede v okolici. Te metode v splošnem dosegajo dobre rezultate, saj zagotavljajo statistično visoko učinkovitost, kljub temu pa pogosto tvorijo nesmiselne stavke. Pri teh metodah je zelo pomembno, kakšna besedila prevajamo in kakšna besedila smo mu podali v fazi izgradnje statističnega modela.
State of the art prevajalniki se učijo na primerih. Podati mu je potrebno besedilo v različnih jezikih in on se iz tega zna naučit razna slovnična pravila, spremembe vrstnih redov besed,... Težav pri prevajanju je namreč ogromno. Določeni jeziki uporabljajo povsem drugačen vrstni red stavčnih členov. Eni celo ne poznajo črk, ampak samo zloge kot osnovno enoto. Za slovenščino aktualne so sklanjatve, spreganje in dvojina. Problem so tudi zaimki, ki se s samosatlniki ujemajo v spolu, sklonu in številu - torej moraš ugotovit na kateri samostalnik se zaimki nanašajo.
Za grajenje strojnih prevajalnikov obstaja super orodje, ki najboljše teče na Linuxu: http://www.statmt.org/moses/index.php?n...
Ima implementirane različne algoritme za učenje in testiranje prevajalnikov. Podati mu moraš učne množice. Pogosta je uporaba Evropske zakonodaje, ki je spisana v vseh Evropskih jezikih, korpus pa mislim da je celo javno dostopen. Pri učenju se lahko igraš s parametri in izbiraš različne metode, na koncu pa lahko učinkovitost preveriš še z uporabo BLEU metrike - ima omogočeno testiranje. Za igranje super, zaslužil boš pa težko z njim.
Raziskovalci strojnega prevajanja se ukvarjajo predvsem s problemom, kako oceniti kvaliteto nekega prevoda. Ko razviješ strojno prevajanje, ga moraš namreč primerjat z obstoječimi rešitvami, da vidiš če si odkril boljšo metodo oz. način. Torej isti tekst moraš prevesti z Google Translate in s svojim prevajalnikom. Nato moraš pa primerjat prevoda, da ugotoviš kateri je boljši. Postopek mora bit avtomatiziran, saj moraš primerjavo izvajat na veliki množici (milijonih) dokumentov. Trenutno se uporablja BLEU metrika, ki pa še zdaleč ni popolna: BLEU @ Wikipedia
Obstaja več metod strojnega prevajanja. Nejosnovnejše prevajajo besedo po besedo z uporabo slovarjev. Zanesljivost teh si lahko predstavljate, takšen je bil Google Translate v svojih povojih.
Naprednejše metode, uporabljajo statistične modele. Na veliki množici besedil analizirajo katere besede se pogosto pojavljajo skupaj in nato pri prevajanju upoštevajo še besede v okolici. Te metode v splošnem dosegajo dobre rezultate, saj zagotavljajo statistično visoko učinkovitost, kljub temu pa pogosto tvorijo nesmiselne stavke. Pri teh metodah je zelo pomembno, kakšna besedila prevajamo in kakšna besedila smo mu podali v fazi izgradnje statističnega modela.
State of the art prevajalniki se učijo na primerih. Podati mu je potrebno besedilo v različnih jezikih in on se iz tega zna naučit razna slovnična pravila, spremembe vrstnih redov besed,... Težav pri prevajanju je namreč ogromno. Določeni jeziki uporabljajo povsem drugačen vrstni red stavčnih členov. Eni celo ne poznajo črk, ampak samo zloge kot osnovno enoto. Za slovenščino aktualne so sklanjatve, spreganje in dvojina. Problem so tudi zaimki, ki se s samosatlniki ujemajo v spolu, sklonu in številu - torej moraš ugotovit na kateri samostalnik se zaimki nanašajo.
Za grajenje strojnih prevajalnikov obstaja super orodje, ki najboljše teče na Linuxu: http://www.statmt.org/moses/index.php?n...
Ima implementirane različne algoritme za učenje in testiranje prevajalnikov. Podati mu moraš učne množice. Pogosta je uporaba Evropske zakonodaje, ki je spisana v vseh Evropskih jezikih, korpus pa mislim da je celo javno dostopen. Pri učenju se lahko igraš s parametri in izbiraš različne metode, na koncu pa lahko učinkovitost preveriš še z uporabo BLEU metrike - ima omogočeno testiranje. Za igranje super, zaslužil boš pa težko z njim.
kuall ::
>Problem google translate je v tem, da slovenski jezik govori premalo ljudi, da bi strojno učenje lahko bilo tako učinkovito, kot je pri drugih jezikih.
Z drugimi besedami imajo premalo primerov človeško narejenih prevodov iz slovenščline v angleščino in zato ne morejo kopirat prevedenih fraz. Ker google translate je tako uspešen predvsem zato, ker ne prevaja besed ampak fraze, velikokrat dobesedno.
>Statistična obdelava je točno to, kar tvoji možgani počnejo, ko konstruirajo govor.
Če sem iskren sploh ne vem o čem je točno govora, ko rečemo "statistična obdelava". Lahko bolje razložiš?
smacker: prevajalci bi morali delati tako, da bi ti ponudili več možnih prevodov, ker tako je v praksi, več možnih pomenov imajo stavki velikokrat. Noben tega ne naredi. Primer:
Maja je tolkla po Jožetu.
lahko razumeš kot
Ona je v maju tolkla po Jožetu.
ali pa
Oseba Maja je tolkla po Jožetu.
Najbolj smiselno je takole naredit ta težak program:
To je mau smešno, da se programi delijo na rule based in statistične. V vsakem primeru bodo morali biti rule based. Samo vprašanje je ali se pravil program sam nauči, ali mu jih vpišeš na roke.
V prvi verziji mu pravila sam vpišeš, v drugi verziji napišeš program, ki se pravil sam nauči. Zelo veliko pravil pa se mu bo še vedno vpisalo na roke, zato ker imajo tudi naši geni ogromno pravil za jezik vkodiranih.
Z drugimi besedami imajo premalo primerov človeško narejenih prevodov iz slovenščline v angleščino in zato ne morejo kopirat prevedenih fraz. Ker google translate je tako uspešen predvsem zato, ker ne prevaja besed ampak fraze, velikokrat dobesedno.
>Statistična obdelava je točno to, kar tvoji možgani počnejo, ko konstruirajo govor.
Če sem iskren sploh ne vem o čem je točno govora, ko rečemo "statistična obdelava". Lahko bolje razložiš?
smacker: prevajalci bi morali delati tako, da bi ti ponudili več možnih prevodov, ker tako je v praksi, več možnih pomenov imajo stavki velikokrat. Noben tega ne naredi. Primer:
Maja je tolkla po Jožetu.
lahko razumeš kot
Ona je v maju tolkla po Jožetu.
ali pa
Oseba Maja je tolkla po Jožetu.
Najbolj smiselno je takole naredit ta težak program:
To je mau smešno, da se programi delijo na rule based in statistične. V vsakem primeru bodo morali biti rule based. Samo vprašanje je ali se pravil program sam nauči, ali mu jih vpišeš na roke.
V prvi verziji mu pravila sam vpišeš, v drugi verziji napišeš program, ki se pravil sam nauči. Zelo veliko pravil pa se mu bo še vedno vpisalo na roke, zato ker imajo tudi naši geni ogromno pravil za jezik vkodiranih.
smacker ::
Sej google translate dela to - uporabnik ma možnost predlagat boljši prevod. On si nato doda pravila in jih naslednjič upošteva.
Primer z Majo ne more niti človek razbrat, kako ga naj pol računalnik? On je naučen nekih pravil in vrača nek rezultat. 100% pravilnosti ni mogoče zagotovit pri teh stvareh, lahko pa se nauči tako, da bo po metriki, ki jo uporablja za testiranje (BLEU) čimboljše prevajal. Torej možnosti za izboljšave so po mojem mnenju predvsem v metriki. Če odkriješ metriko, ki bo boljše ocenjevala ustreznost prevoda, si zagotovo pomembno izboljšal kakovost strojnih prevajalnikov. Izboljševanje rezultatov skladno z neko metriko je odvisno samo od računske moči in velikosti učne množice, tega ima Google ogromno. Prevodi med svetovnimi jeziki so zelo izpopolnjeni. Za slovenščino pa ima slabši statistični model, ker je manj besedila napisanega v slovenščini in manj ljudi prispeva svoje predloge za izboljšavo prevodov.
Računalniku ne vpisuješ pravil na roke, ker se ti 90% pravil ne boš niti spomnil, niti jih računalnik ne bo razumel in znal uporabit. Ti mupokažeš primer (to prevedi tako), on pa poskrbi da ustrezno posodobi svoje statistične modele. Podobno delujejo tudi človeški možgani - učiš se na primerih. So pa možgani tako dober stroj, da se tega učijo brez da bi se ti sploh zavedal. Postopek je enak kot pri stroju, le statistični model se pri nas ne hrani v 0 in 1, ampak v obliki povezav med nevroni v možganih.
Primer z Majo ne more niti človek razbrat, kako ga naj pol računalnik? On je naučen nekih pravil in vrača nek rezultat. 100% pravilnosti ni mogoče zagotovit pri teh stvareh, lahko pa se nauči tako, da bo po metriki, ki jo uporablja za testiranje (BLEU) čimboljše prevajal. Torej možnosti za izboljšave so po mojem mnenju predvsem v metriki. Če odkriješ metriko, ki bo boljše ocenjevala ustreznost prevoda, si zagotovo pomembno izboljšal kakovost strojnih prevajalnikov. Izboljševanje rezultatov skladno z neko metriko je odvisno samo od računske moči in velikosti učne množice, tega ima Google ogromno. Prevodi med svetovnimi jeziki so zelo izpopolnjeni. Za slovenščino pa ima slabši statistični model, ker je manj besedila napisanega v slovenščini in manj ljudi prispeva svoje predloge za izboljšavo prevodov.
Računalniku ne vpisuješ pravil na roke, ker se ti 90% pravil ne boš niti spomnil, niti jih računalnik ne bo razumel in znal uporabit. Ti mupokažeš primer (to prevedi tako), on pa poskrbi da ustrezno posodobi svoje statistične modele. Podobno delujejo tudi človeški možgani - učiš se na primerih. So pa možgani tako dober stroj, da se tega učijo brez da bi se ti sploh zavedal. Postopek je enak kot pri stroju, le statistični model se pri nas ne hrani v 0 in 1, ampak v obliki povezav med nevroni v možganih.
Irbis ::
smacker: prevajalci bi morali delati tako, da bi ti ponudili več možnih prevodov, ker tako je v praksi, več možnih pomenov imajo stavki velikokrat. Noben tega ne naredi. Primer:
Maja je tolkla po Jožetu.
lahko razumeš kot
Ona je v maju tolkla po Jožetu.
ali pa
Oseba Maja je tolkla po Jožetu.
http://presis.amebis.si/prevajanje/ ti naredi točno to, če vpišeš tale primer in potem klikneš na prevod, ti naredi seznam, v osnovi da "She beat at/on Jože in May" in "Maja beat at/on Jože".
Dodatno pa klik na vsako zeleno besedo v prevodu da alternativne prevode za to besedo.
jype ::
kuall> Če sem iskren sploh ne vem o čem je točno govora, ko rečemo "statistična obdelava". Lahko bolje razložiš?
Sinaptične povezave nastajajo in se utrjujejo, če se podobni dražljaji ponavljajo. Ko poslušaš nekoga govoriti, možgani vzorce pomnijo tako, da utrjujejo tiste povezave, ki so sorodne slišanim (zelo poenostavljeno povedano). Večkrat, ko nek vzorec prepoznajo, bolj močna postane povezava in močneje pomniš (in eventuelno oponašaš) dražljaj, ki je povezavo ustvaril.
Ko se preseliš v pokrajino z drugim narečjem, ki ga sicer razumeš, možgani precej časa porabijo, da naredijo katalog novih vzorcev, preden si sposoben suvereno uporabljati takšno narečje, pri tem pa seveda prideš v težave takoj, ko se srečaš z vzorci, ki jih možgani prvič doživijo, včasih pa so nekateri vzorci tudi tako močno naučeni, da jih težje nadomestiš. To se kaže tudi v tem, da občutiš napor, ko moraš zavestno tvoriti jezikovne strukture, medtem ko si se v svojem originalnem narečju lahko osredotočal na pomen, jezik pa so možgani tvorili "kar sami".
Sinaptične povezave nastajajo in se utrjujejo, če se podobni dražljaji ponavljajo. Ko poslušaš nekoga govoriti, možgani vzorce pomnijo tako, da utrjujejo tiste povezave, ki so sorodne slišanim (zelo poenostavljeno povedano). Večkrat, ko nek vzorec prepoznajo, bolj močna postane povezava in močneje pomniš (in eventuelno oponašaš) dražljaj, ki je povezavo ustvaril.
Ko se preseliš v pokrajino z drugim narečjem, ki ga sicer razumeš, možgani precej časa porabijo, da naredijo katalog novih vzorcev, preden si sposoben suvereno uporabljati takšno narečje, pri tem pa seveda prideš v težave takoj, ko se srečaš z vzorci, ki jih možgani prvič doživijo, včasih pa so nekateri vzorci tudi tako močno naučeni, da jih težje nadomestiš. To se kaže tudi v tem, da občutiš napor, ko moraš zavestno tvoriti jezikovne strukture, medtem ko si se v svojem originalnem narečju lahko osredotočal na pomen, jezik pa so možgani tvorili "kar sami".
Zgodovina sprememb…
- spremenilo: jype ()
Irbis ::
To že, samo to je samo del prevajanja, kjer prevajamo možganščino v naravni jezik.
Za uspešno strojno prevajanje je po mojem bolj problem tisti del, ko je treba razumeti pravi pomen, za kar je kdaj potrebno, da si pravzaprav predstavljamo, kaj se dogaja, kje je kdo/kaj v prostoru, kdo so sodelujoči v pogovoru/zgodbi (da npr. za "I went" vemo, ali moramo izbrati "Šel sem" ali "Šla sem").
Za uspešno strojno prevajanje je po mojem bolj problem tisti del, ko je treba razumeti pravi pomen, za kar je kdaj potrebno, da si pravzaprav predstavljamo, kaj se dogaja, kje je kdo/kaj v prostoru, kdo so sodelujoči v pogovoru/zgodbi (da npr. za "I went" vemo, ali moramo izbrati "Šel sem" ali "Šla sem").
jype ::
Absolutno. "Vzorec" za možgane ni le jezik, ampak celoten kontekst vhodnih podatkov vseh čutil, vključno s trenutnim čustvenim stanjem in preteklimi izkušnjami.
kuall ::
>Primer z Majo ne more niti človek razbrat, kako ga naj pol računalnik?
Človek ga lahko razbere, če je zraven kontekst. Če ga ne more pa pove obe možnosti, najprej pa tisto, ki je bolj verjetna (ki se enostavno bolj pogosto pojavi v praksi).
>Računalniku ne vpisuješ pravil na roke, ker se ti 90% pravil ne boš niti spomnil, niti jih računalnik ne bo razumel in znal uporabit.
Če nisi zmožen naredit niti tega, da napišeš program, ki mu boš na roke napisal pravila za neko omejeno število prevodov, kako lahko potem pričakuješ, da boš lahko napisal program, ki se bo teh pravil sam naučil? Saj potem še veš ne, česa se mora program sploh učiti.
>Ti mu pokažeš primer (to prevedi tako), on pa poskrbi da ustrezno posodobi svoje statistične modele. Podobno delujejo tudi človeški možgani - učiš se na primerih.
Že, ampak mi se ne učimo tako, da nam kdo kaže izbrane primere ampak se učimo avtomatično z opazovanjem okolice.
>http://presis.amebis.si/prevajanje/ ti naredi točno to, če vpišeš tale primer in potem klikneš na prevod, ti naredi seznam, v osnovi da "She beat at/on Jože in May" in "Maja beat at/on Jože".
No to je dokaz, da so prevajalniki, ki v osnovi bazirajo na pravilih in to priznajo, boljši. Zdej je treba samo še napisat program, ki se bo sam naučil teh pravil. Ta program je bistven, to pa google translate dela, uči se pravil.
>Sinaptične povezave nastajajo in se utrjujejo, če se podobni dražljaji ponavljajo.
Ti si zdaj razložil kako nevronske mreže delujejo. Ampak mi zna kdo razložit, kako google translate deluje? Malo bolj tehnično.
Takole si jaz to predstavljam:
Torej analizira obstoječe človeške prevode.
Kaj mora sploh pogruntat:
1. dobesedne prevode besed
2. vrstni red
3. sklanjatve
4. vsaka beseda ima več pomenov in vsak pomen se da označiti z več različnimi besedami, vsaka beseda da drug "okus" pomenu. zato mora pogruntat, katero besedo je najbolj primerno uporabit kje.
1. korak je, da poprarčka besede iz jezika 1 v jezik 2. to ni tako zakomplicirano. Vsakemu prevodu besede da verjetnost.
Primer prevoda:
jezik1: A B C
jezik2: H J K
Ker vrstni red besed ni vedno enak v vseh jezikih mora pogruntat, ali je A=H, B=J in C=K
To enostavno naredi tako, da pogleda druge prevode, kjer nastopajo te besede in če vidi npr. tole:
jezik1: A T Z
jezik2: B N H
Lahko ve, da A=H in tudi, da se vrstni red prve in zadnje besede obrne.
Tako se je naučil 2 stvari: da A=H in vzorca za vrstni red besed.
2. korak: Če bo program videl druge prevode, kjer se vrstni red podobno obrne, samo z drugimi besedami, bo te besede dal v isto kategorijo, tej kategoriji bo dal neko ime, vzorcu tudi, in potem bo imel nek vzorec, po katerem bo delal ostale prevode. Ko potem dela prevod najprej stavek prevede v vzorec, da ve, kje morajo besede stati v prevodu (včasih tudi katere dodat in odvzet), vsako besedo dobesedno prevede, ji da sklanjtev pa je.
3. Sklanjatve so zelo odvisne od vzorcev. Nič posebnega po moje.
Google translate ni nič drugega kot program, ki se sam uči pravil prevajanja. Še vedno na koncu prevaja po pravilih, to je važno. Ne bi me čudilo, če so za notrnje potrebe najprej napisali majhen rule based prevajalnik, da so lahko sploh vedeli, v kakšnem formatu shranit pravila.
Drgač pa jezik na veliko uporablja tele prvine inteligence:
1. Prepoznavanje podobnosti (analogij). Funkcija št. 1 prvih "inteligentnih" možganov je bila to, da so zaznali podobnost med stvarmi. Tako so lahko našli hrano, ki je podobna, ni pa nikoli čisto enaka. Si morete mislit, kakšno pojedino je imelo prvi inteligentno življenje, ki je prepoznala visoko hranljivo hrano v okolici, ki ni več čakalo, da hrana/energija pride do nje (v obliki sonca, kot to delajo rastline) ampak je hrano lahko zaznala, da je šla k njej in jo pojedla.
V bistvu podobnost dveh predmetov zaznaš tako, da sešteješ število lastnosti, ki jih imata enake in število lasnosti, ki jih imata drugačne. Vsaki lastnosti pa dodaš še neko pomembnost. Bistvo analogij pa je dvoje: podobnost posameznih delov (vmesni deli so lahko čisto drugačni) in podobnost razmerij med temi deli (razdalja,...).
2. Metafore. S pomočjo metafor nastajajo nove besede in besede dobijo več pomenov. Takle je mehanizem zadaj: najprej beseda označuje samo 1 pomen. Potem pa ker velikokrat tisti pomen nastopa skupaj z drugim pomenom (tako je pač svet narejen) dobi beseda še ta drugi metaforični pomen. Potem se ljudje počasi navadijo na to metaforo, če jo zelo pogosto uporabljajo in preneha bit metafora. Beseda se malo popači v izgovorjavi in dobimo novo besedo, ki označuje tisti drugi pomen. Ker so metaforične besede tako pogoste v jeziku niso redki niti metaforični stavki, fraze.
3. Asociacije. Asociacije so tako močne v jeziku, da razložijo marsikaj. Včasih se kakšen stavek zdi precej nesmiseln, ampak samo zato, ker v njem nastopajo besede, ki nas spominjajo na stvar, ki bi jo radi povedali, ga razumemo, čeprav če o njem razmislimo logično ni preveč smiselen. Primer: "Tekel sem kot hudič". A hudič hitro teče? Ne, ampak besedica hudič nas spomni, da je nekaj močno. Beseda hudič ima metaforični pomen "močno". Saj to je isto kot metafora v bistvu.
To tudi razloži, zakaj imamo ljudje radi šale, v katerih nastopajo analogije: ker take šale vklopijo 2 primarni funkciji inteligence, ki vsakemu človeku laufata na polno in uživa, ko jih uporablja. To sta iskanje napak in prepoznavo podobnosti. Naši možgani so genetsko optimizirani za njihovo uporabo. Za razliko od kakšnih drugih nalog, ki nas živcirajo, npr. matematika. Pa smo spet tam, da mora človek delat tisto, za kar so njegovi geni optimizirani, če hoče bit srečen.
Človek ga lahko razbere, če je zraven kontekst. Če ga ne more pa pove obe možnosti, najprej pa tisto, ki je bolj verjetna (ki se enostavno bolj pogosto pojavi v praksi).
>Računalniku ne vpisuješ pravil na roke, ker se ti 90% pravil ne boš niti spomnil, niti jih računalnik ne bo razumel in znal uporabit.
Če nisi zmožen naredit niti tega, da napišeš program, ki mu boš na roke napisal pravila za neko omejeno število prevodov, kako lahko potem pričakuješ, da boš lahko napisal program, ki se bo teh pravil sam naučil? Saj potem še veš ne, česa se mora program sploh učiti.
>Ti mu pokažeš primer (to prevedi tako), on pa poskrbi da ustrezno posodobi svoje statistične modele. Podobno delujejo tudi človeški možgani - učiš se na primerih.
Že, ampak mi se ne učimo tako, da nam kdo kaže izbrane primere ampak se učimo avtomatično z opazovanjem okolice.
>http://presis.amebis.si/prevajanje/ ti naredi točno to, če vpišeš tale primer in potem klikneš na prevod, ti naredi seznam, v osnovi da "She beat at/on Jože in May" in "Maja beat at/on Jože".
No to je dokaz, da so prevajalniki, ki v osnovi bazirajo na pravilih in to priznajo, boljši. Zdej je treba samo še napisat program, ki se bo sam naučil teh pravil. Ta program je bistven, to pa google translate dela, uči se pravil.
>Sinaptične povezave nastajajo in se utrjujejo, če se podobni dražljaji ponavljajo.
Ti si zdaj razložil kako nevronske mreže delujejo. Ampak mi zna kdo razložit, kako google translate deluje? Malo bolj tehnično.
Takole si jaz to predstavljam:
Torej analizira obstoječe človeške prevode.
Kaj mora sploh pogruntat:
1. dobesedne prevode besed
2. vrstni red
3. sklanjatve
4. vsaka beseda ima več pomenov in vsak pomen se da označiti z več različnimi besedami, vsaka beseda da drug "okus" pomenu. zato mora pogruntat, katero besedo je najbolj primerno uporabit kje.
1. korak je, da poprarčka besede iz jezika 1 v jezik 2. to ni tako zakomplicirano. Vsakemu prevodu besede da verjetnost.
Primer prevoda:
jezik1: A B C
jezik2: H J K
Ker vrstni red besed ni vedno enak v vseh jezikih mora pogruntat, ali je A=H, B=J in C=K
To enostavno naredi tako, da pogleda druge prevode, kjer nastopajo te besede in če vidi npr. tole:
jezik1: A T Z
jezik2: B N H
Lahko ve, da A=H in tudi, da se vrstni red prve in zadnje besede obrne.
Tako se je naučil 2 stvari: da A=H in vzorca za vrstni red besed.
2. korak: Če bo program videl druge prevode, kjer se vrstni red podobno obrne, samo z drugimi besedami, bo te besede dal v isto kategorijo, tej kategoriji bo dal neko ime, vzorcu tudi, in potem bo imel nek vzorec, po katerem bo delal ostale prevode. Ko potem dela prevod najprej stavek prevede v vzorec, da ve, kje morajo besede stati v prevodu (včasih tudi katere dodat in odvzet), vsako besedo dobesedno prevede, ji da sklanjtev pa je.
3. Sklanjatve so zelo odvisne od vzorcev. Nič posebnega po moje.
Google translate ni nič drugega kot program, ki se sam uči pravil prevajanja. Še vedno na koncu prevaja po pravilih, to je važno. Ne bi me čudilo, če so za notrnje potrebe najprej napisali majhen rule based prevajalnik, da so lahko sploh vedeli, v kakšnem formatu shranit pravila.
Drgač pa jezik na veliko uporablja tele prvine inteligence:
1. Prepoznavanje podobnosti (analogij). Funkcija št. 1 prvih "inteligentnih" možganov je bila to, da so zaznali podobnost med stvarmi. Tako so lahko našli hrano, ki je podobna, ni pa nikoli čisto enaka. Si morete mislit, kakšno pojedino je imelo prvi inteligentno življenje, ki je prepoznala visoko hranljivo hrano v okolici, ki ni več čakalo, da hrana/energija pride do nje (v obliki sonca, kot to delajo rastline) ampak je hrano lahko zaznala, da je šla k njej in jo pojedla.
V bistvu podobnost dveh predmetov zaznaš tako, da sešteješ število lastnosti, ki jih imata enake in število lasnosti, ki jih imata drugačne. Vsaki lastnosti pa dodaš še neko pomembnost. Bistvo analogij pa je dvoje: podobnost posameznih delov (vmesni deli so lahko čisto drugačni) in podobnost razmerij med temi deli (razdalja,...).
2. Metafore. S pomočjo metafor nastajajo nove besede in besede dobijo več pomenov. Takle je mehanizem zadaj: najprej beseda označuje samo 1 pomen. Potem pa ker velikokrat tisti pomen nastopa skupaj z drugim pomenom (tako je pač svet narejen) dobi beseda še ta drugi metaforični pomen. Potem se ljudje počasi navadijo na to metaforo, če jo zelo pogosto uporabljajo in preneha bit metafora. Beseda se malo popači v izgovorjavi in dobimo novo besedo, ki označuje tisti drugi pomen. Ker so metaforične besede tako pogoste v jeziku niso redki niti metaforični stavki, fraze.
3. Asociacije. Asociacije so tako močne v jeziku, da razložijo marsikaj. Včasih se kakšen stavek zdi precej nesmiseln, ampak samo zato, ker v njem nastopajo besede, ki nas spominjajo na stvar, ki bi jo radi povedali, ga razumemo, čeprav če o njem razmislimo logično ni preveč smiselen. Primer: "Tekel sem kot hudič". A hudič hitro teče? Ne, ampak besedica hudič nas spomni, da je nekaj močno. Beseda hudič ima metaforični pomen "močno". Saj to je isto kot metafora v bistvu.
To tudi razloži, zakaj imamo ljudje radi šale, v katerih nastopajo analogije: ker take šale vklopijo 2 primarni funkciji inteligence, ki vsakemu človeku laufata na polno in uživa, ko jih uporablja. To sta iskanje napak in prepoznavo podobnosti. Naši možgani so genetsko optimizirani za njihovo uporabo. Za razliko od kakšnih drugih nalog, ki nas živcirajo, npr. matematika. Pa smo spet tam, da mora človek delat tisto, za kar so njegovi geni optimizirani, če hoče bit srečen.
Zgodovina sprememb…
- spremenilo: kuall ()
kunigunda ::
Poparckanje besed 1:1 ne bo slo ker ima beseda lahko vec pomenov.
Recimo:
- tezko breme
- tezko bos naredil (kle npr ang. heavy ni ok)
Recimo:
- tezko breme
- tezko bos naredil (kle npr ang. heavy ni ok)
smacker ::
@kuall: dobro razmišljaš, ampak o računalniški obdelavi naravnega jezika žal nimaš pojma. Teh pravil je preveč, da bi jih lahko ročno zapisal ali da bi si jih računalnik shranil v obliki, ki bi bila človeku razumljiva. Namesto tega, se vodijo jezikovni modeli zbirka zaporedij besed in statistični podatki (frekvenca ponavljanj). Na podlagi teh statističnih modelov se računajo verjetnosti. Iz tega statističnega modela ti ne boš mogel razbrat, da se beseda A prevede v H in da je potem v tem in tem zaporedju besed H na koncu stavka, čeprav je A na začetku.
Računalnik je sposoben samo matematičnih operacij, zato moraš ta pravila preslikat v nek statistični model. Delat z "if stavki" ni možno, ker je teh pravil neskončno. Da boš bolje razumel, kako poteka obdelava naravnega jezika v računalniku, si poglej kak course, ta je zelo dober, saj razloži bolj na matematičen način, zato poglobljeno znanje programiranja ni potrebno:
To je uvodni video (1. poglajve) maš pa 13. poglavij, vsako s po par videji. Na koncu (14. poglavje) je še chat z avtorjema.
Google translate za delovanje uporablja statistične jezikovne modele, ki temeljijo na ngramih in statističnih podatkih iz miljonov dokumentov. Eksaktno delovanje je seveda poslovna skrivnost, defenitivno pa je vse sama matematika, nobenih pravil ki bi jih jezikoslovec razumel. Računalniška logika ni sposobna razumevanja takih pravil, pozna 0 in 1 ter operacije med njimi. Človek je sposoben avtonomnega razmišljanja in naša nevronska mreža je specializirana za razpoznavo vzorcev - pravil. V računalniku je možno implementirat obnašanje nevronske mreže, ampak z neprimerljivo manjšim številom nevronov. Take nevronske mreže so super za prepoznavanje enostavnih vzorcev, npr. razpoznava prstnih odtisov ali obraza. Za prepoznavanje velikega števila vzorcev pa imajo premajhno učinkovitost.
Prihodnost zna biti v umetnih nevronskih mrežah - posebnih nevro računalnikih, ki bojo specializirani za posamezna opravila. Tu ne gre za klasičen računalnik s procesorjem, ampak za pravo nevronsko mrežo z umetnimi nevroni. Eno od predvidenih področij uporabe teh umetnih nevronskih mrež je tudi prevajanje. Branje na to temo: http://arxiv.org/pdf/1409.0473v7.pdf
Računalnik je sposoben samo matematičnih operacij, zato moraš ta pravila preslikat v nek statistični model. Delat z "if stavki" ni možno, ker je teh pravil neskončno. Da boš bolje razumel, kako poteka obdelava naravnega jezika v računalniku, si poglej kak course, ta je zelo dober, saj razloži bolj na matematičen način, zato poglobljeno znanje programiranja ni potrebno:
To je uvodni video (1. poglajve) maš pa 13. poglavij, vsako s po par videji. Na koncu (14. poglavje) je še chat z avtorjema.
Google translate za delovanje uporablja statistične jezikovne modele, ki temeljijo na ngramih in statističnih podatkih iz miljonov dokumentov. Eksaktno delovanje je seveda poslovna skrivnost, defenitivno pa je vse sama matematika, nobenih pravil ki bi jih jezikoslovec razumel. Računalniška logika ni sposobna razumevanja takih pravil, pozna 0 in 1 ter operacije med njimi. Človek je sposoben avtonomnega razmišljanja in naša nevronska mreža je specializirana za razpoznavo vzorcev - pravil. V računalniku je možno implementirat obnašanje nevronske mreže, ampak z neprimerljivo manjšim številom nevronov. Take nevronske mreže so super za prepoznavanje enostavnih vzorcev, npr. razpoznava prstnih odtisov ali obraza. Za prepoznavanje velikega števila vzorcev pa imajo premajhno učinkovitost.
Prihodnost zna biti v umetnih nevronskih mrežah - posebnih nevro računalnikih, ki bojo specializirani za posamezna opravila. Tu ne gre za klasičen računalnik s procesorjem, ampak za pravo nevronsko mrežo z umetnimi nevroni. Eno od predvidenih področij uporabe teh umetnih nevronskih mrež je tudi prevajanje. Branje na to temo: http://arxiv.org/pdf/1409.0473v7.pdf
next3steps ::
Chinese < > English na Googlovi storitvi Translate večkrat pogrne, kadar vnešeni podatki niso v istem stilu razmišljanja povprečnega Kitajca. Sam moram večkrat pričeti razmišljati v okviru kitajskega jezika, da dobimi tisti prevod iz angleščino v kitajščino, ki ga sam želim.
Irbis ::
Prihodnost zna biti v umetnih nevronskih mrežah - posebnih nevro računalnikih, ki bojo specializirani za posamezna opravila. Tu ne gre za klasičen računalnik s procesorjem, ampak za pravo nevronsko mrežo z umetnimi nevroni. Eno od predvidenih področij uporabe teh umetnih nevronskih mrež je tudi prevajanje. Branje na to temo: http://arxiv.org/pdf/1409.0473v7.pdf
Samo vprašanje je, ali bodo take nevronske mreže uspele priti do razmišljanja, da bi npr. lahko uspešno analizirale kontekst in razumele dogajanje, kar je kdaj potrebno pri prevodu. Dosegli bomo nek nivo, potem se pa najbrž ne bo dalo nikamor naprej.
V bistvu bi bilo bolj smiselno, da bi prevajali s takimi nevronskimi mrežami v pomen (oz. potencialne pomene), potem pa iz pomena drug v naravni jezik. Samo kako zapisati pomen in kako potem ustvariti dovolj veliko učno množico za to, je pa gromozanski problem.
In nevronske mreže imajo še en problem - lahko imajo večinoma odlične razultate, potem pa kakšno pomensko popolnoma zgrešen prevod. In če se razultat bere slovnično v redu in tudi zveni nekako smiselno, je zelo težko opaziti, da je pomen lahko spremenjen (primer takih problemov so npr. kakšne napačne negacije stavkov, za BLEU je zamenjava "je" z "ni" ravno tako velika napaka, kot če je v prevodu "zgornji" namesto "gornji" ali "zgornja".
Kar nas pripelje še do naslednje težave, da bi bilo BLEU nujno zamenjati z nečim boljšim, če bomo hoteli napredovati. Ker drugače bomo prišli do tega, da bodo strojni prevajalniki dosegali boljši BLEU od človeških prevajalcev, čeprav bodo strojni prevodi v resnici slabši. No, sem zdajle našel članek, da je nekdo to že preizkusil in res dobil tak rezultat: http://www.cracking-the-language-barrie...
smacker ::
Nevronske mreže same po sebi nebojo zmožne samostojnega razmišljanja, gre zgolj za učinkovito strojno implementacijo nevronskih mrež, kot jih poznamo v računalništvu. Analiza konteksta v napisanem besedilu po mojem ne bi smela biti problem. Trenutno se zaradi omejene računske moči navadno omejuje kontekst na stavke oz zaporedja 5-6 besed. Z umetnimi nevronskimi mrežami bi se računska moč neizmerno povečala in bi kontekst morda lahko razširili na cele odstavke ali celo na besedila. Težje je pri prevajanju govora. Tam je ogromno konteksta, ki pride skozi druga čutila, ne samo skozi ušesa, obenem pa še speech-to-text preslikava povzroči delno napako. Da bi imeli nevronsko mrežo, ki bi bila zmožna tipat, gledat, vohat, okušat, poslušat in to vse povezovat, je pomojem še znanstvena fantastika.
Pomanjkljivosti BLEU metrike pa sem že izpostavil v enem prejšnjem postu. BLEU še zdaleč ni ustrezna metrika za ocenjevanje kvalitete prevoda. Težava pri strojnem učenju je ravno to, da se išče optimizacija rezultata, kar pomeni da je metrika ključnega pomena. Trenutne mreže se učijo večinoma z BLEU (ali drugimi podobno učinkovitimi metrikami), kar pomeni da se ne približujejo realno najboljšemu prevodu, ampak takšnemu ki bolj ustreza BLEU metriki.
Za omenjen problem zamenjave besed bi lahko računali neke uteži teh razlik s pomočjo analize sentimenta. Ta namreč zelo dobro ločuje besede s pozitivnim in negativnim prizvokom. S tem bi lahko "je" in "ni" prepoznal kot hudo napako. Podobno bi lahko z lematizacijo besede (pretvorbo v osnovno obliko) ugotovil, da "zgornji" in "zgornja" pomeni isto, le da je slovnična oblika napačna. Seveda tud lematizacija in analiza sentimenta nista popolnoma zanesljivi metodi, kakor je z vsem povezanim z obdelavo naravnega jezika. To je precej "mehka" znanost, ni matematične eksaktnosti, s katero bi dosegli 100% zanesljivost. Zato se izkorišča surova računska moč, za dosego statistično čimbolj točnih rezultatov.
Pri izboljšavi metrike BLEU pa se je treba vprašati, kako oceniti kateri prevod je boljši? Kako naprimer delodajalec izbere prevajalca? Recimo da da večim prevajalcem v prevod isto besedilo. Kako potem primerja in izbere najboljšega? Kaj vse upošteva pri izbiri? Verjetno se pol pojavi problem, da če iste prevode damo v pregled različnim ljudem, bo vsak izbral drugega zmagovalca.
Pomanjkljivosti BLEU metrike pa sem že izpostavil v enem prejšnjem postu. BLEU še zdaleč ni ustrezna metrika za ocenjevanje kvalitete prevoda. Težava pri strojnem učenju je ravno to, da se išče optimizacija rezultata, kar pomeni da je metrika ključnega pomena. Trenutne mreže se učijo večinoma z BLEU (ali drugimi podobno učinkovitimi metrikami), kar pomeni da se ne približujejo realno najboljšemu prevodu, ampak takšnemu ki bolj ustreza BLEU metriki.
Za omenjen problem zamenjave besed bi lahko računali neke uteži teh razlik s pomočjo analize sentimenta. Ta namreč zelo dobro ločuje besede s pozitivnim in negativnim prizvokom. S tem bi lahko "je" in "ni" prepoznal kot hudo napako. Podobno bi lahko z lematizacijo besede (pretvorbo v osnovno obliko) ugotovil, da "zgornji" in "zgornja" pomeni isto, le da je slovnična oblika napačna. Seveda tud lematizacija in analiza sentimenta nista popolnoma zanesljivi metodi, kakor je z vsem povezanim z obdelavo naravnega jezika. To je precej "mehka" znanost, ni matematične eksaktnosti, s katero bi dosegli 100% zanesljivost. Zato se izkorišča surova računska moč, za dosego statistično čimbolj točnih rezultatov.
Pri izboljšavi metrike BLEU pa se je treba vprašati, kako oceniti kateri prevod je boljši? Kako naprimer delodajalec izbere prevajalca? Recimo da da večim prevajalcem v prevod isto besedilo. Kako potem primerja in izbere najboljšega? Kaj vse upošteva pri izbiri? Verjetno se pol pojavi problem, da če iste prevode damo v pregled različnim ljudem, bo vsak izbral drugega zmagovalca.
kuall ::
Poparckanje besed 1:1 ne bo slo ker ima beseda lahko vec pomenov.
Recimo:
- tezko breme
- tezko bos naredil (kle npr ang. heavy ni ok)
Nisem rekel, da mora biti parčkanje 1:1.
Enostavnejši primer:
"Težka pot." vs "Hard road."
To je dober primer metafor.
Težka in hard imata tukaj metaforični pomen "naporna". Kar je težko je ponavadi tudi naporno nosit, ali kar je trdo je tudi naporno streti.
Takole bi moral prevajalec naredit ta prevod: po nekem zapletenem sistemu bi se moral odločiti, za kateri od vseh metaforičnih pomenov, ki jih ima beseda, se gre v tem primeru. potem bi v prevajanem jeziku našel besedo za pomen (če obstaja, veliko pomenov se da opisati samo z metaforo) ali pa še bolje najti besedo, ki vsebuje metaforo s tem pomenom in bi naredil pravilni prevod.
@kuall: dobro razmišljaš, ampak o računalniški obdelavi naravnega jezika žal nimaš pojma. Teh pravil je preveč, da bi jih lahko ročno zapisal ali da bi si jih računalnik shranil v obliki, ki bi bila človeku razumljiva.
Kako veš, koliko jih je? Po moje pa jih ni toliko ampak so samo zelo zapleteno prepletena. In enostavno še noben ni razgruntal te prepletenosti, ker je pač preveč težak problem, drugače bi že imeli prevajalca, ki bi delal perfektno z rule based sistemom z na roke napisanimi pravili. Pozabljaš tudi to, da jezik ne more delovati brez drugih osnov inteligence: prepoznavanje podobnosti in analogij, tudi zmožnost sklepanja je nujen pogoj, ker ljudje delamo sklepe non stop, ko poslušamo koga govorit. Zato pa so ženske užaljene, ko ji rečeš naprimer "Veliko si pojedla". Ona bo avtomatično naredila ta sklep: rekel mi je, da sem preveč debela in grda in da naj manj žrem. Hehe. Mimogrede, to je tudi dober psihološki trik, kako koga zelo užalit ali pa zelo pohvalit. Samo namigneš in pustiš, da on sam naredi sklep. To ga zadane bolj, kot bi mu stvar povedal direktno. To je zato, ker je stalno avtomatsko delanje sklepov tako globoko zapisano v naših genih, da je precej prepleteno s čustvi.
Računalnik je sposoben samo matematičnih operacij, zato moraš ta pravila preslikat v nek statistični model.
To mi ni smiselno. Računalnik je zmožen vsega česar je zmožen človek, če mu napišeš pravi program. Edina razlika je, da naš program laufa na nevronih, računalniški pa na bitih (oziroma čemerkoli...). Ja, tudi čustva bodo vzniknila, ko bo program z umetno inteligenco enkrat dovolj napreden. To mi je seveda skrivnost kako nastanejo čustva, ampak če ne verjameš v nadnaravno moraš v to verjet.
Delat z "if stavki" ni možno, ker je teh pravil neskončno.
Če bi bilo pravil neskočno, bi morali biti naši možgani neskočno veliki, da bi jih shranili.
Google translate za delovanje uporablja statistične jezikovne modele, ki temeljijo na ngramih in statističnih podatkih iz miljonov dokumentov. Eksaktno delovanje je seveda poslovna skrivnost, defenitivno pa je vse sama matematika, nobenih pravil ki bi jih jezikoslovec razumel
Sama matermatika? Pač nek program je. Ni se sam napisal ampak so ga ljudje. Da so ga ljudje lahko napisali so morali točno vedeti, kaj so delali. Če si kdaj programiral veš, da če ti ni 100% jasno, kaj delaš, bo na koncu ratal zmazek. Zato pa pravim, da so za prototip sigurno imeli rule based programčič, da so si razjasnili vse strukture, kako se bodo stvari shranjevale.
Bom pregledal tvoje linke. Kako to, da te ta tema tako zanima?
Debata, kako vedeti, kateri prevod je boljši, pa se mi ne zdi potrebna. Ljudje bodo to zlahka ugotovili.
Največja prednost nevronskih mrež je to, da delujejo po statistični metodi. Zato so tako uspešna v svetu, ker v svetu ni skoraj nič črno belo kot v enostavnih primerih ampak ima vse neko statistično verjetnost. Tudi v jeziku je to na veliko razširjeno.
Zgodovina sprememb…
- spremenilo: kuall ()
kunigunda ::
To mi ni smiselno. Računalnik je zmožen vsega česar je zmožen človek, če mu napišeš pravi program. Edina razlika je, da naš program laufa na nevronih, računalniški pa na bitih (oziroma čemerkoli...). Ja, tudi čustva bodo vzniknila, ko bo program z umetno inteligenco enkrat dovolj napreden. To mi je seveda skrivnost kako nastanejo čustva, ampak če ne verjameš v nadnaravno moraš v to verjet.
Moras vedeti da se se zmeraj ne ve, kako clovek razmislja, vedo zgolj, kako delujejo nevroni, kateri del mozgan skrbi za kaksen del ipd.
Delati torej clovesko nevronsko preslikavo v racunalniski svet, je torej (zaenkrat) nesmiselno.
Tako da ne pricakuj prevec od racunalniske umetne inteligence :)
jype ::
kuall> Pač nek program je. Ni se sam napisal ampak so ga ljudje.
Nope. Sam se je napisal.
kuall> Debata, kako vedeti, kateri prevod je boljši, pa se mi ne zdi potrebna. Ljudje bodo to zlahka ugotovili.
Ljudje so predragi in prepočasni, da bi to bilo uporabno.
Nope. Sam se je napisal.
kuall> Debata, kako vedeti, kateri prevod je boljši, pa se mi ne zdi potrebna. Ljudje bodo to zlahka ugotovili.
Ljudje so predragi in prepočasni, da bi to bilo uporabno.
Zgodovina sprememb…
- spremenilo: jype ()
smacker ::
Kako veš, koliko jih je? Po moje pa jih ni toliko ampak so samo zelo zapleteno prepletena.Ok, predstavljaj si program za 1 besedo.
if(beseda=="težka"){ if(beseda_za=="pot") return "hard"; else if(beseda_za=="knjiga") return "heavy"; ... }
Verjetno se strinjaš da je teh izjem preveč, da bi se jih dalo na roke opisat. Zato se tvorijo statistični modeli - kolikokrat se skupaj pojavita besedi "težka pot" in "težka knjiga" in beleži statistika, kako se ti dve besedi prevajata v učni množici. Za bolj podrobno razlago si poglej tiste videje, tam je bolj nazorno prikazano. Novo znanje ti utegne odpret kak nov pogled na tematiko, morda dobiš kako idejo kako izboljšat obstoječe modele.
Računalnik je zmožen vsega česar je zmožen človek, če mu napišeš pravi program.Na koncu se vse prevede v 0 in 1 ter matematične operacije. Računalnik je za razliko od človeka stabilen sistem. Če stokrat zaženeš isto kodo, se bo stokrat izvedla enako. Človeški možgani so odvisni od prevelikega števila dejavnikov, da bi lahko zagotovil enako okolje delovanja. Razne kemijske reakcije, prisotnost hormonov, občutki, čustva, zaužita hrana, počutje in še mnogo najbrž nepojasnjenih pojavov - vse to vpliva na rezultat ki ga sprocesirajo naši možgani.
Če bi bilo pravil neskočno, bi morali biti naši možgani neskočno veliki, da bi jih shranili.Si že videl človeka, ki obvlada vse jezike? Večina nas niti vseh besed v maternem jeziku ne pozna. Zato pa imamo lektorje, ki popravijo naše izrazoslovje. Drugač pa dokaz: prevajat morš znat števila, števil pa je neskončno.
Sama matermatika? Pač nek program je. Ni se sam napisal ampak so ga ljudje. Da so ga ljudje lahko napisali so morali točno vedeti, kaj so delali. Če si kdaj programiral veš, da če ti ni 100% jasno, kaj delaš, bo na koncu ratal zmazek. Zato pa pravim, da so za prototip sigurno imeli rule based programčič, da so si razjasnili vse strukture, kako se bodo stvari shranjevale.Ne ravno rule based program, ampak statistični model, ki se je zmožen naučit pravila. Ljudje so napisali program, ki nad učno množico tvori tak statistični model in nato še program, ki za vhodno besedilo in z uporabo tega modela sprocesira prevod. Ko pogledaš lekcije, bo jasno.
Kako to, da te ta tema tako zanima?Čist odkrito so mi bolj pri srcu bolj eksaktna področja, kjer so meje med boljšim in slabšim, pravilnim in napačnim bolj jasno definirane. Drugače pa sem se že kar nekaj ukvarjal z obdelavo naravnega jezika - analiza sentimenta, povzemanje besedil, razpoznava jezika, ugotavljanje področja besedila, odkrivanje plagiatov,...
Debata, kako vedeti, kateri prevod je boljši, pa se mi ne zdi potrebna. Ljudje bodo to zlahka ugotovili.Čigav prevod Biblje (v ANG) je najboljši? List of English Bible translations @ Wikipedia
Seveda dokler primerjaš človeški prevod z Google translate je razlika očitna. Ampak če prevedeš isto besedilo z Google Translate in z Microsoft Bing, pa že težko rečeš kateri je boljši.
Največja prednost nevronskih mrež je to, da delujejo po statistični metodi. Zato so tako uspešna v svetu, ker v svetu ni skoraj nič črno belo kot v enostavnih primerih ampak ima vse neko statistično verjetnost. Tudi v jeziku je to na veliko razširjeno.Delovanje nevronskih mrež ima bolj malo skupnega s statistiko. V principu se nevronska mreža uči z učno množico, da za take in take vhodne podatke vrača takšne rezultate. Zato rabiš metriko, ki preverja, koliko se rezultati nevronske mreže razlikujejo od pričakovanih rezultatov. Učenje se izvaja tako dolgo, dokler napaka ni dovolj majhna. Posledica tega je, da bo nevronska mreža z neko verjetnostjo pravilno delovala. S prilagajanjem parametrov in izbiro dobre učne množice lahko to verjetnost povečujemo.
Irbis ::
Kako veš, koliko jih je? Po moje pa jih ni toliko ampak so samo zelo zapleteno prepletena.Ok, predstavljaj si program za 1 besedo.
if(beseda=="težka"){
if(beseda_za=="pot") return "hard";
else if(beseda_za=="knjiga") return "heavy";
...
}
Verjetno se strinjaš da je teh izjem preveč, da bi se jih dalo na roke opisat. Zato se tvorijo statistični modeli - kolikokrat se skupaj pojavita besedi "težka pot" in "težka knjiga" in beleži statistika, kako se ti dve besedi prevajata v učni množici. Za bolj podrobno razlago si poglej tiste videje, tam je bolj nazorno prikazano. Novo znanje ti utegne odpret kak nov pogled na tematiko, morda dobiš kako idejo kako izboljšat obstoječe modele.
No, pri vnosu pravil človek vseeno lahko malo posploši stvari. Tukaj bi si npr. pomagal s tem, da bi definiral, da ima prevod pridevnika težek v "heavy" prednost, kadar je za njim samostalnik, ki predstavlja nek predmet, če že delaš pomensko mrežo, je seveda smiselno, da pomenom določaš nadpomene (ali pa npr. uporabiš kaj že narejenega v ta namen, npr. WordNet).
Je pa še vedno problem, kako vnesti vsa ta pravila, ročno gre prepočasi.
Kot idejo vidim, da bi si človek pomagal s paralelnim korpusom in potem v obeh jezikih vzporedno določal potencialne pomene. Velika verjetnost namreč je, da v različnih jezikih nastopajo različne dvoumnosti (ali pa npr. uporabiš tri jezike hkrati). Potrebuješ pa dovolj obsežen slovar pomenov, vezanih na besede, da se lahko tega postopka lotiš. Potem pa lahko kombiniraš te avtomatsko najdene kombinacije pomenov z ročno vnesenimi.
Nekako v smeri, kot je opisano v članku na http://nl.ijs.si/is-ltc08/IS-LTC08-Proc... (strani 43-48), samo tukaj je to uporabljeno za gradnjo slovarja pomenov, namesto za iskanje verjetnosti kombinacij pomenov.
> Trenutno se zaradi omejene računske moči navadno omejuje kontekst na stavke oz zaporedja 5-6 besed. Z umetnimi nevronskimi mrežami bi se računska moč neizmerno povečala in bi kontekst morda lahko razširili na cele odstavke ali celo na besedila.
In to je eden od razlogov, zakaj imajo strojni prevajalniki težave s slovenščino, kjer zelo radi tlačimo kup prilastkovih odvisnikov (ki ...) v povedi in potem pišemo dolge klobase, v katerih se računalniki hitro izgubijo:
Tisti, ki tistega, ki je desko, ki pot, ki proti Zgornjim Ruknjam vodi, kaže, vzel, prijavi, bo dobil lepo nagrado.
GT: Those who are the one who is the board that the path that leads to the Upper Ruknjam shows took login, will win a prize.
Bing: The one that the one that is the Board that the path towards the upper Ruknjam water shows, logging in, will win a nice prize.
Presis: That, that that, that is eating a board, that way, that against Upper Ruknjam leads, he is pointing, took, applications, he will receive beautiful award.
Je pa ta primer zanimiv kot prikaz razlike med statističnim prevajanjem in prevajanjem v pravili. Če izmišljene "Zgornje Ruknje" zamenjam z resničnimi "Zgornjimi Bitnjami", dobim takle rezultat:
Tisti, ki tistega, ki je desko, ki pot, ki proti Zgornjim Bitnjam vodi, kaže, vzel, prijavi, bo dobil lepo nagrado.
GT: Those who are the one who is the board that the path that leads to the Upper Bit shows took login, will win a prize.
Bing: The one that the one that is the Board that the path towards the upper Bitnjam water shows, logging in, will win a nice prize.
Presis: That, that denounces that, that took a board, that is showing way, that leads towards Zgornje Bitnje, will receive beautiful award.
Rezultata Google Translata in Binga se skoraj ne spremenita, Presis pa čisto spremeni prevod, ker nima več neznane besede, ki je prej motila stavčno analizo.
> Težje je pri prevajanju govora. Tam je ogromno konteksta, ki pride skozi druga čutila, ne samo skozi ušesa, obenem pa še speech-to-text preslikava povzroči delno napako. Da bi imeli nevronsko mrežo, ki bi bila zmožna tipat, gledat, vohat, okušat, poslušat in to vse povezovat, je pomojem še znanstvena fantastika.
Je pa po drugi strani res, da je vse to še težje zajeti s pravili, statistični prevajalniki so običajno precej manj občutljivi na šum na vhodu.
Lahko pa pri pravilih dodaš npr. še tipične tipkarske in slovnične napake (oz. pogovorni jezik), kar je pri statističnem prevajanju težje pokriti, ker imaš paralelne korpuse po navadi preveč slovnično pravilne, da bi dobro pokril pogovorni jezik:
Nevronske mreže same po sebi nebojo zmožne samostojnega razmišljanja, gre zgolj za učinkovito strojno implementacijo nevronskih mrež, kot jih poznamo v računalništvu.
Presis: Neural networks won't be capable of independent thinking alone round themselves, it is the efficient machine implementation of neural networks, as we know them in computing.
GT: Neural networks themselves nebojo capable of independent thinking, this is only effective hardware implementation of neural networks as we know them in the computer.
Bing: Neural networks inherently they won't able to independent thinking, it's only for the hardware implementation of neural networks effectively, as we know them in computer science.
GT ima težave z "nebojo", Presis s frazo "same po sebi" in nekje je izgubil členek "zgolj" (torej "only"), Bing je pa kar lepo sestavil stvari, samo "they" je preveč dodal v prevod.
kuall ::
Ampak če prevedeš isto besedilo z Google Translate in z Microsoft Bing, pa že težko rečeš kateri je boljši.
Ti to primerjanje prevodov najbrž rabiš za nevronske mreže. En enostaven način pogruntat al je prevod nesmiseln je, da poguglaš besede, ki stojijo supaj v prevodu. Če ne najde nič to pomeni, da je prevod nesmiseln, da stojijo tiste besede skupaj, ki jih ljudje ne bi nikoli dali skupaj.
Drugač pa dokaz: prevajat morš znat števila, števil pa je neskončno.
Ni nujno, da so pravila tako enostavna in neumna ampak so lahko precej bolj zakomplicirana in splošna. So pa še vedno pravila.
kunigunda ::
Pri prevodih niso samo pravila. Je tudi stvar konteksta. Stavek se drugace prevede glede na prejsne stavke, kakor pa ce je samostojni.
Mogoce si osredotocen zgolj na jezike, ki jih poznas. Armenski, arabski, hindi, kitajski ipd do dosti drugacni od anglescine npr. kjer je
neka pravila lazje napisati.
Mogoce si osredotocen zgolj na jezike, ki jih poznas. Armenski, arabski, hindi, kitajski ipd do dosti drugacni od anglescine npr. kjer je
neka pravila lazje napisati.
kuall ::
Drugi jeziki so dosti drugačni v sintaksi: vrstni red besed, predvsem sklanjatve in to, da v eno besedo natlačijo vsega boga v enih jezikih, pač v nekaterih jezikih besede prevzamejo vlogo stavkov. Se mi zdi, da v turščini. Podobno kot fraze prevzamejo vlogo besed. Ostalo je pa precej podobno v vseh jezikih.
kunigunda ::
No zaradi tega "ostalega" google in ostali translatorji ne dajejo ven taksnih rezultatov, ki bi jih mi hoteli.
Toliko stvari, v cemer se razlikujejo med seboj, ti bo v programerskem svetu nardilo toliko tezav, da ti skupne stvari niti ne bodo
vec toliko pomembne. Zato se jih je treba lotevati na nacine, ki so bile opisane ze v prejsnih komentarjih. Z IF stavki kle ne bos dalec prisel
(niti hitro). Ni to samo vrstni red, spoli, sklanjatve ipd. Ko si ze omenil turscino npr, ta ne potrebuje subjekta v stavkih, anglescina npr.
ga pa in moras pisati dodatne besede. Potem imas jezike juznoameriskih indijancev, ki ti podrejo komplet strukturo znanih jezikov.
Potem imas dosti indo jezikov, ki besednih zvez ne rabijo vedno locevati med seboj in jih dajo v eno besedo, itd.
In tudi vsak jezik ima dolocene besede, ki lahko pomenijo stavek oz. konkreten izraz in obratno. Turscina, ki si jo omenil kle ni izjema.
Toliko stvari, v cemer se razlikujejo med seboj, ti bo v programerskem svetu nardilo toliko tezav, da ti skupne stvari niti ne bodo
vec toliko pomembne. Zato se jih je treba lotevati na nacine, ki so bile opisane ze v prejsnih komentarjih. Z IF stavki kle ne bos dalec prisel
(niti hitro). Ni to samo vrstni red, spoli, sklanjatve ipd. Ko si ze omenil turscino npr, ta ne potrebuje subjekta v stavkih, anglescina npr.
ga pa in moras pisati dodatne besede. Potem imas jezike juznoameriskih indijancev, ki ti podrejo komplet strukturo znanih jezikov.
Potem imas dosti indo jezikov, ki besednih zvez ne rabijo vedno locevati med seboj in jih dajo v eno besedo, itd.
In tudi vsak jezik ima dolocene besede, ki lahko pomenijo stavek oz. konkreten izraz in obratno. Turscina, ki si jo omenil kle ni izjema.
kuall ::
Kdo pa je rekel, da bom imel if stavke. Pravila so lahko zabita lahko pa so inteligentna. Sej bistvo znanosti je iskanje pravil (zakonov), ki opisujejo največ primerov. Ni jih tako lahko najti, ampak se to da narediti na vseh področjih. Taka pravila imam jaz v mislih. Samo najti jih je treba. Najdeš jih pa tako, da najprej filozofiraš, potem pa to filozofijo čedalje bolj natančno določaš, da iz nje nastane program.
Primer ene take filozofije: vsak stavek ni nič drugega kot beseda z opisi. Z drugimi besedami, v vsakem stavku je ena beseda glavna, druge so samo njen opis ali opis njenih opisov. To je en tak zakon, ki drži v vseh jezikih. O takih pravilih jaz govorim.
Samo delo do Chomskega je treba nadaljevat. Saj bodo enkrat spoznali, da ni druge poti.
Sej ta debata nevronske mreže vs stari dobri rule based prevajalaniki je že stara se mi zdi. Že Einstein je debatiral o tem z nekom. Einstein je trdil, da ni naključij, da ima vse vzrok, da svetu vlada determinizem, drugi so trdili, da to ni res, da na kvantni ravni vladajo naključja. Da se ne da vsega opisati s pravili. No jest se s tem ne strinjam, vse se da opisati s pravili oziroma zakoni.
Primer ene take filozofije: vsak stavek ni nič drugega kot beseda z opisi. Z drugimi besedami, v vsakem stavku je ena beseda glavna, druge so samo njen opis ali opis njenih opisov. To je en tak zakon, ki drži v vseh jezikih. O takih pravilih jaz govorim.
Samo delo do Chomskega je treba nadaljevat. Saj bodo enkrat spoznali, da ni druge poti.
Sej ta debata nevronske mreže vs stari dobri rule based prevajalaniki je že stara se mi zdi. Že Einstein je debatiral o tem z nekom. Einstein je trdil, da ni naključij, da ima vse vzrok, da svetu vlada determinizem, drugi so trdili, da to ni res, da na kvantni ravni vladajo naključja. Da se ne da vsega opisati s pravili. No jest se s tem ne strinjam, vse se da opisati s pravili oziroma zakoni.
Zgodovina sprememb…
- spremenilo: kuall ()
kunigunda ::
Zato je bil plod 40-letnega razvoja systran-a zavrzen, ker je temeljil na zakonih in pravilih in ni bil dober.
Google, ki je dosti boljsi od njega, je zamenjal logiko s statisticnim modelom, ki se obnese mnogo bolje.
Google, ki je dosti boljsi od njega, je zamenjal logiko s statisticnim modelom, ki se obnese mnogo bolje.
smacker ::
Jaz sem trdno prepričan, da človek ni zmožen sestavit pravil za prevajanje, ki bi zadostila splošni uporabi bolje kot Googlov statistični model. Prevajanje ni eksaktna znanost, formule ne obstajajo. Isti tekst bo 10 prevajalcev prevedlo na 10 različnih načinov. Ko boš dal v "ocenjevanje" teh 10 prevodov desetim ocenjevalcem, boš dobil 10 različnih razvrstitev. Kako boš določil pravila, za nekaj kar ni eksaktno? Pri obsegu kroga se da lepo s poskušanjem... meriš polmer in obseg pa hitro prideš do formule. Pri prevodih nimaš kaj merit, če ni eksaktno. Nekih metafor in pesniških del še mnoga leta ne bomo mogli prevajat, že med ljudmi potekajo krožki in debate, kjer si cela skupina ljudi razlaga pomen nekega umetniškega besedila. Pogosto ko pride do debate z avtorjem, se izkaže tudi da je veliko razlag skritih pomenov in metafor precej zgrešenih. Živi primer, "ločil bom peno od valov" od Feri Lainščka. Pri slovenščini smo 4 ure posvetili pomenu naslova, razvili različne teorije, na okrogli mizi pa nam je avtor zaupal da ni nobenega globokega pomena, da se mu je le zdel naslov precej poetičen in da bi znal pritegnit bralce.
Jezik ima preveč posebnosti, da bi se ga dalo opisat z pravili. Za "čudne" primere, kjer niti človeški um ne pozna eksaktnega odgovora, ne moremo sprogramirati programov, ki bojo po nekih eksaktnih pravilih dajali pravilne rezultate. V takih primerih se lahko zatečemo k statističnim modelom in upamo na čimboljšo učinkovitost implementiranih algoritmov. Zato se uporabijo različne optimizacijske metode, ki izboljšujejo verjetnost algoritmov. Klasičen pristop je strojno učenje in uporaba nevronskih mrež, ni pa to edina pot. V vsakem primeru je v ozadju potreben nek statistični model, ki skuša simulirat pravila in obnašanje jezika s pomočjo verjetnosti pojavitve določenih besednih zvez.
Jezik ima preveč posebnosti, da bi se ga dalo opisat z pravili. Za "čudne" primere, kjer niti človeški um ne pozna eksaktnega odgovora, ne moremo sprogramirati programov, ki bojo po nekih eksaktnih pravilih dajali pravilne rezultate. V takih primerih se lahko zatečemo k statističnim modelom in upamo na čimboljšo učinkovitost implementiranih algoritmov. Zato se uporabijo različne optimizacijske metode, ki izboljšujejo verjetnost algoritmov. Klasičen pristop je strojno učenje in uporaba nevronskih mrež, ni pa to edina pot. V vsakem primeru je v ozadju potreben nek statistični model, ki skuša simulirat pravila in obnašanje jezika s pomočjo verjetnosti pojavitve določenih besednih zvez.
Randomness ::
@kuall Jao, še en filozof ...
Čeprav se osredotočata na probleme iz računalniškega vida, ti priporočam, da si pogledaš prvih nekaj minut enega izmed naslednjih predavanj:
Murray Roweis
Videa sta sicer že relativno stara - spadata v obdobje pred renesanso nevronskih mrež. Danes je vsa stvar še izrazito bolj jasna, pa se začuda še vedno pojavljajo nejeverni Tomaži, ki nočejo pogledati izven svojega vrtička ...
Primer ene take filozofije: vsak stavek ni nič drugega kot beseda z opisi. Z drugimi besedami, v vsakem stavku je ena beseda glavna, druge so samo njen opis ali opis njenih opisov. To je en tak zakon, ki drži v vseh jezikih. O takih pravilih jaz govorim.Kako pa boš ta tvoja pravila zapisal v računalniku razumljivi obliki?
Čeprav se osredotočata na probleme iz računalniškega vida, ti priporočam, da si pogledaš prvih nekaj minut enega izmed naslednjih predavanj:
Murray Roweis
Videa sta sicer že relativno stara - spadata v obdobje pred renesanso nevronskih mrež. Danes je vsa stvar še izrazito bolj jasna, pa se začuda še vedno pojavljajo nejeverni Tomaži, ki nočejo pogledati izven svojega vrtička ...
Zgodovina sprememb…
- spremenilo: Randomness ()
kuall ::
Randomness je izjavil:
Kako pa boš ta tvoja pravila zapisal v računalniku razumljivi obliki?
Brez problema se jih vkodira v "gene" programa v obliki programerske kode. Čimveč teh pravil poznaš bolje veš, kako napisat program. Tole pravilo ti naprimer pomaga tako, da veš, da se da vsak stavek prevest v logično obliko, da je ene beseda glavna in druga njeni argumenti (njen opis). Glavna beseda lahko obstaja brez otroške, otroška ne more brez glavne.
Primer: Janez je jedel solato.
Katera je tukaj glavna beseda in katera otroška? Čist enostavno, če lahko besedo odstraniš in ima stavek še vedno smisel potem je otroška, če nima smisla je glavna. Torej:
Janez je jedel. - smiselno
Janez je solato. - nesmiselno
Janez. - smiselno
je - ni smiselno, ker ima ta besedica nujna 2 argumenta je (a,b)
in tako vidiš, da je soodvisna struktura tega stavka taka: je (Janez, jedel (solato))
Nekatere besede imajo nujne argumente, npr besedica "in" mora nujno imeti 2 argumenta, nekatere pa imajo opcijske argumente, npr drevo ima lahko pridevnik visoko, ni pa nujno. Besedica in je univerzalna besedica, ki je shranjena v naših genih (jih je še veliko takih) za katere naši geni že ob rojstvu vedo, da ima 2 argumenta. To je vedno enako povsod v vesolju, to je logično pravilo. To pravilo lahko vprogramiramo v kodo programa. In ta univerzalna pravila, ki jih je zelo veliko, nam pomagajo pri učenju specifičnih pravil. Nič drugega kot to. Pa ne samo pri učenjau jezika ampak pri učenju na splošno. Če ljudje ne bi imeli teh univerzalnih pravil zapisanih v gene potem se ne bi mogli ničesar naučiti. Isto se program ne bo mogel, dokler jih ne bomo našli in mu jih napisali v kodo.
Ne pravim, da je treba vsa pravila napisat na roke. Pravim samo to, da če bomo pogruntal osnovna pravila jezika in inteligence nam bo to pomagalo, kako napisat program, ki se zna naučit vseh teh specifičnih pravil. Čist isto kot pri ljudeh: naučimo se sintake, pomena besed, itd, tega nimamo v genih. Osnovna pravila, s katerimi se pomagamo naučit sintakse pa imamo zapisana v genih. In ta pravila morajo ljudje, ki hočejo naredit prevajalca, najprej pogruntat, najprej s filozofiranjem potem pa to prevest v programsko kodo. Tako kot je Chomsky začel. Saj sem siguren, da za naredit Google translate so morali tudi najti veliko teh univerzalnih pravil jezika in inteligence in jih vkodirat v program. Niso pisali kar neke splošne kode za nevronsko mrežo ampak sem siguren, da vsebuje program veliko pravil, ki se tičejo jezika. Ne pravil za sintakso, ker tega niti naši geni nimajo, ampak bolj splošna pravila.
Ampak za test za majhno število prevodov moraš biti zmožen napisat čisto vsa specififična pravila na roke v program. To je samo za pomoč, da lahko bolje vidiš, česa vse se mora biti program zmožen naučiti in v kakšni obliki bo moralo biti.
Zgodovina sprememb…
- spremenilo: kuall ()
Irbis ::
Glavna beseda lahko obstaja brez otroške, otroška ne more brez glavne.
Primer: Janez je jedel solato.
Katera je tukaj glavna beseda in katera otroška? Čist enostavno, če lahko besedo odstraniš in ima stavek še vedno smisel potem je otroška, če nima smisla je glavna. Torej:
Janez je jedel. - smiselno
Janez je solato. - nesmiselno
Janez. - smiselno
je - ni smiselno, ker ima ta besedica nujna 2 argumenta je (a,b)
in tako vidiš, da je soodvisna struktura tega stavka taka: je (Janez, jedel (solato))
Ni tako preprosto, "Janez je solato" je čisto pravilen stavek, ker je beseda "je" dvoumna (in je tudi oblika glagola jesti in ne samo biti (pa še ena oblika osebnega zaimka). Pa tudi s pomenom, da je "je" glagol "biti", ta stavek ni nemogoč, problem pri analizi so izpusti:
Miha je jedel meso, Janez je solato, Cene pa krompir.
lahko bi pa bilo tudi:
Miha je jedel meso, Janez solato, Cene pa krompir.
In ti moraš zdaj iz tega potegniti, da je Cene jedel krompir.
In ti izpusti so običajno zelo pomensko odvisni:
Tonček je pel in jedel jabolka.
Tonček je lupil in jedel jabolka.
Tonček je pel in poslušal pesmi.
Program mora vedeti, da jabolk ni mogoče peti, tipično jih pa lahko lupiš. Lahko pa poješ pesmi.
In tudi sicer je zaradi dvoumnosti besed velikokrat težko ugotoviti že, kaj je sploh glagol v stavku. Še meje povedi je kdaj težko določiti:
Videla jo je ga. Metka tudi, pa se ni sekirala.
Videl sem ga. Metka tudi, pa se ni sekirala.
Irbis ::
Nekih metafor in pesniških del še mnoga leta ne bomo mogli prevajat, že med ljudmi potekajo krožki in debate, kjer si cela skupina ljudi razlaga pomen nekega umetniškega besedila. Pogosto ko pride do debate z avtorjem, se izkaže tudi da je veliko razlag skritih pomenov in metafor precej zgrešenih. Živi primer, "ločil bom peno od valov" od Feri Lainščka. Pri slovenščini smo 4 ure posvetili pomenu naslova, razvili različne teorije, na okrogli mizi pa nam je avtor zaupal da ni nobenega globokega pomena, da se mu je le zdel naslov precej poetičen in da bi znal pritegnit bralce.
Meni je kar nekaj prevajalcev reklo, da sta za dobrega prevajalca (sicer za bolj tehnične prevode, pustimo literaturo ob strani, tega tudi velika večina človeških prevajalcev ne prevaja) bistveni dve stvari: da obvlada ciljni jezik in pa splošno znanje/znanje področja/zdrava pamet, da ne napiše neumnosti v prevode. Poznavanje jezika, iz katerega prevaja, je šele drugotno in se ga je lažje priučiti (in tam si lahko pomaga tudi s slovarji).
Je pa kdaj treba vprašati tudi avtorja, če v knjigi piše "He went with his sons." je v slovenščini pač treba vedeti, ali sta bila dva ali več, če se tega ne vidi iz konteksta (da te potem avtor ne zafrkne v naslednji knjigi).
Jezik ima preveč posebnosti, da bi se ga dalo opisat z pravili. Za "čudne" primere, kjer niti človeški um ne pozna eksaktnega odgovora, ne moremo sprogramirati programov, ki bojo po nekih eksaktnih pravilih dajali pravilne rezultate. V takih primerih se lahko zatečemo k statističnim modelom in upamo na čimboljšo učinkovitost implementiranih algoritmov. Zato se uporabijo različne optimizacijske metode, ki izboljšujejo verjetnost algoritmov. Klasičen pristop je strojno učenje in uporaba nevronskih mrež, ni pa to edina pot. V vsakem primeru je v ozadju potreben nek statistični model, ki skuša simulirat pravila in obnašanje jezika s pomočjo verjetnosti pojavitve določenih besednih zvez.
Samo ali misliš, da je možno na tak način kdaj doseči stopnjo kakovosti prevoda, ki bi bila primerljiva s človeškim prevajalcem?
smacker ::
@irbis: Da bi stroji prevajali knjige namesto prevajalcev pomojem ne bo šlo. Lahko pa dosežemo tak nivo, da imamo tolmačenje v živo, ki ni 100% slovnično pravilno, ampak še vedno dovolj visoke kvalitete, da lahko vsi udeleženci sledijo debati. Recimo skype že menda uvaja prevajanje. Tud google translate številni uporabljajo za dopisovanje preko maila v tujem jeziku. Med svetovnimi jeziki s podobnimi strukturami stavkov (angl, nem, špa, ita, fra) prevaja zelo solidno.
Na področjih, kjer napake niso dopustne (recimo debata zdravnikov iz različnih držav pred operacijo, komunikacija pilotov,...) bomo pomoje še dolgo potrebovali prevajalce oz. poznavanje skupnega jezika (angleščina).
@kuall: Samo prevajanje s pomočjo nevronskih mrež se kombinira še z jezikovnimi modeli (pojavnost besednih ngramov v jeziku, glej video lekcije). Z njihovo pomočjo se popravi smiselnost prevedenih stavkov in ti modeli korigirajo "pravila" odvisnosti med besedami. Tam se npr. beseda "in" nikoli ne pojavi na koncu stavka, na začetku pa morda zelo redko (kak pogovrno jezik v stilu "In sedaj si bomo..."). Te verjetnosti se pri prevodu upoštevajo in prevajalnik bo bolj verjetno izbral besedno zvezo, ki "in" postavi v sredino stavka.
Da bi preverjal odvisnost med besedami pred prevajanjem, pomoje nima nekega pretiranega smisla, saj se te verjetnosti ne prenašajo nujno med jeziki, pomojem ne bi veliko pridobil.
Ti praviš da bi morali ročno pisat pravila, jaz pravim da so ta pravila v veliki večini (če ne v celoti) že zajeta v jezikovnih modelih, zato ni potrebe po ročnem vnosu pravil. Poleg tega je jezikovni model struktura, ki se lahko avtomatsko posodablja in spreminja skupaj z razvojem jezika, medtem ko bi se seznam ročno pisanih pravil moral posodabljat ročno, vsakič ko mladina izumi nekaj novega.
Poglej lekcije resno, da si razjasniš kako je zastavljen jezikovni model. Gre za metodo, kako opišeš nek jezik na univerzalen način - s tem je možno opisati vse jezike. Nato lahko računaš čuda s tem modelom, med drugim tudi verjetnost, da se nek stavek pojavi v določenem jeziku. Modeli so zasnovani tako, da se naučijo nad učno množico in se hkrati znajo prilagodit, ko dobijo na vhodu neznane besedne zveze.
Na področjih, kjer napake niso dopustne (recimo debata zdravnikov iz različnih držav pred operacijo, komunikacija pilotov,...) bomo pomoje še dolgo potrebovali prevajalce oz. poznavanje skupnega jezika (angleščina).
@kuall: Samo prevajanje s pomočjo nevronskih mrež se kombinira še z jezikovnimi modeli (pojavnost besednih ngramov v jeziku, glej video lekcije). Z njihovo pomočjo se popravi smiselnost prevedenih stavkov in ti modeli korigirajo "pravila" odvisnosti med besedami. Tam se npr. beseda "in" nikoli ne pojavi na koncu stavka, na začetku pa morda zelo redko (kak pogovrno jezik v stilu "In sedaj si bomo..."). Te verjetnosti se pri prevodu upoštevajo in prevajalnik bo bolj verjetno izbral besedno zvezo, ki "in" postavi v sredino stavka.
Da bi preverjal odvisnost med besedami pred prevajanjem, pomoje nima nekega pretiranega smisla, saj se te verjetnosti ne prenašajo nujno med jeziki, pomojem ne bi veliko pridobil.
Ti praviš da bi morali ročno pisat pravila, jaz pravim da so ta pravila v veliki večini (če ne v celoti) že zajeta v jezikovnih modelih, zato ni potrebe po ročnem vnosu pravil. Poleg tega je jezikovni model struktura, ki se lahko avtomatsko posodablja in spreminja skupaj z razvojem jezika, medtem ko bi se seznam ročno pisanih pravil moral posodabljat ročno, vsakič ko mladina izumi nekaj novega.
Poglej lekcije resno, da si razjasniš kako je zastavljen jezikovni model. Gre za metodo, kako opišeš nek jezik na univerzalen način - s tem je možno opisati vse jezike. Nato lahko računaš čuda s tem modelom, med drugim tudi verjetnost, da se nek stavek pojavi v določenem jeziku. Modeli so zasnovani tako, da se naučijo nad učno množico in se hkrati znajo prilagodit, ko dobijo na vhodu neznane besedne zveze.
Okapi ::
Ravno pri specializiranih poklicih strojno prevajanje najbolje deluje - tudi pri zdravniških diagnozah, recimo. Ker je samo strokovno izrazoslovje in struktura stavkov zastavljena tako, da je čim manj dvoumnosti, poleg tega pa je vse skupaj tudi vsebinsko omejeno. Na primer v Kanadi že dolgo vremenske napovedi med angleščino in francoščino strojno prevajajo, brezhibno.
smacker ::
Eno je specializacija za področje, drugo so pa kritični sistemi. Ko se zdravniki posvetujejo pred operacijo mora bit komunikacija hitra in učinkovita, ni časa za iskanje morebitnih napak v prevodu. Če bi anasteziolog dobil napačno navodilo o dozi uspavala, bi to lahko bilo smrtno. Kaj se kasneje na list napiše, je sekundarnega pomena saj ne vpliva neposredno na pacientovo življenje. Seveda se z uporabo ozkega področja in s tem omejenega izrazoslovja da izboljšat zanesljivost prevodov, sploh če se uporabljajo izrazi v skupnem jeziku (latinščina).
Vremenske napovedi se lahko že strojno generirajo iz golih podatkov, zato s prevodi res ni težav.
Vremenske napovedi se lahko že strojno generirajo iz golih podatkov, zato s prevodi res ni težav.
kuall ::
Prepoznava podobnosti in vse, kar se tega tiče (metafore, analogije, asociacije) in delanje sklepov sta najbolj pomembni stvari v jeziku in inteligenci.
Google translate ima prepoznavo podobnosti, iz obstoječih prevodov potegne ven vzorce. Na podlagi katerih lahko potem prepozna podobne stavke.
Saj zato so nevronske mreže dokaj inteligentne, ker znajo prepoznat podobnost: vsakemu nevronu določiš lastnost objekta in njeno pomembnost in tako dobiš sistem za primerjanje podobnosti dveh objektov.
Gogole translate pa ne obvlada delanje sklepov. To bodo morali dodat.
Rule based sistemi pa ne obvladajo ne enega ne drugega, zato so bolj neumni.
Torej kdor dela v to smer, kako naredit program, ki bo znal prepoznat podobnost ČESARKOLI, potem ne boš metal časa stran. Primerov za to bi se dalo dosti spomnit, eden npr: napisat programček, ki bo analiziral človeški jezik in prepoznal, kakšne nove besede so možne v tistem jeziku in kakšne ne. npr v slovenščini bi lahko obstajala beseda "defruc", ne bi mogla pa obstajat beseda "cdrueu". Pravila tukaj niso samo tako enostavna, da soglasniki in samoglasniki ne smejo stati skupaj, ampak se gre tudi za to, kako zvenijo besede. Pač kitajske besed nam vse zvenijo enake, ker so si v resnici zelo podobne. ali pa francoske. isto so si slovenske vse podobno zveneče in v vseh jezikih je tako. Ali pa napisat program, ki bo znal reševat IQ teste (prepoznava analogij). Ali pa podobnost slik, obrazov, izgovorjave, itd. Potem pa ko imaš ene 10 takih speciliziranih programčkov jih probat združit v en program, ki bo zmožen prepoznat podobnosti na vseh področjih s skupnim algoritmom. Tak je pravilen postopek delanja prevajalca.
Kako konkretno bi to potem uporabil za prevajanje med jeziki?
Že tako, da če se kdo zmoti v eni črki, ko napiše besedo, da programa to čisto ne vrže iz tira.
Ali pa če izpusti eno besedo v stavku.
Najbolj pa bi mu pomagalo pri učenju: ko bi videl neko novo stvar A, o kateri ne ve nič, je pa podobna obstoječi stvari B, o kateri ve veliko, bi lahko sklepal, da je recimo 80% stvari, ki jih ve o B, drži tudi za A. Na podlagi statistike bi to lahko sklepal. Potem bi pa probal vsako možnost, kaj ima smisel, da drži za A in kaj ne.
Delanje sklepov pa bi vadil v to smer, da bi pisal programe, ki znajo reševat logične uganke, potem druge vrste igric in potem spet združit specializirane programčke v enega velikega.
Kako konkretno bi delanje sklepov koristilo za prevajanje med jeziki?
Človeški jezik tako deluje, da se predvideva, da se pove samo najnujnejše, ostalo pa poslušalec sam sklepa.
Isto bo prevajalnik moral sklepat vse, česar se ni povedalo.
Je pa sklepanje koristno tudi za druge stvari, z njim v bistvu opišemo, kako svet deluje, kakšna so razmerja med stvarmi. Pač znanost in logika vladata tudi v jeziku kot povsod drugod, nič novega.
Google translate ima prepoznavo podobnosti, iz obstoječih prevodov potegne ven vzorce. Na podlagi katerih lahko potem prepozna podobne stavke.
Saj zato so nevronske mreže dokaj inteligentne, ker znajo prepoznat podobnost: vsakemu nevronu določiš lastnost objekta in njeno pomembnost in tako dobiš sistem za primerjanje podobnosti dveh objektov.
Gogole translate pa ne obvlada delanje sklepov. To bodo morali dodat.
Rule based sistemi pa ne obvladajo ne enega ne drugega, zato so bolj neumni.
Torej kdor dela v to smer, kako naredit program, ki bo znal prepoznat podobnost ČESARKOLI, potem ne boš metal časa stran. Primerov za to bi se dalo dosti spomnit, eden npr: napisat programček, ki bo analiziral človeški jezik in prepoznal, kakšne nove besede so možne v tistem jeziku in kakšne ne. npr v slovenščini bi lahko obstajala beseda "defruc", ne bi mogla pa obstajat beseda "cdrueu". Pravila tukaj niso samo tako enostavna, da soglasniki in samoglasniki ne smejo stati skupaj, ampak se gre tudi za to, kako zvenijo besede. Pač kitajske besed nam vse zvenijo enake, ker so si v resnici zelo podobne. ali pa francoske. isto so si slovenske vse podobno zveneče in v vseh jezikih je tako. Ali pa napisat program, ki bo znal reševat IQ teste (prepoznava analogij). Ali pa podobnost slik, obrazov, izgovorjave, itd. Potem pa ko imaš ene 10 takih speciliziranih programčkov jih probat združit v en program, ki bo zmožen prepoznat podobnosti na vseh področjih s skupnim algoritmom. Tak je pravilen postopek delanja prevajalca.
Kako konkretno bi to potem uporabil za prevajanje med jeziki?
Že tako, da če se kdo zmoti v eni črki, ko napiše besedo, da programa to čisto ne vrže iz tira.
Ali pa če izpusti eno besedo v stavku.
Najbolj pa bi mu pomagalo pri učenju: ko bi videl neko novo stvar A, o kateri ne ve nič, je pa podobna obstoječi stvari B, o kateri ve veliko, bi lahko sklepal, da je recimo 80% stvari, ki jih ve o B, drži tudi za A. Na podlagi statistike bi to lahko sklepal. Potem bi pa probal vsako možnost, kaj ima smisel, da drži za A in kaj ne.
Delanje sklepov pa bi vadil v to smer, da bi pisal programe, ki znajo reševat logične uganke, potem druge vrste igric in potem spet združit specializirane programčke v enega velikega.
Kako konkretno bi delanje sklepov koristilo za prevajanje med jeziki?
Človeški jezik tako deluje, da se predvideva, da se pove samo najnujnejše, ostalo pa poslušalec sam sklepa.
Isto bo prevajalnik moral sklepat vse, česar se ni povedalo.
Je pa sklepanje koristno tudi za druge stvari, z njim v bistvu opišemo, kako svet deluje, kakšna so razmerja med stvarmi. Pač znanost in logika vladata tudi v jeziku kot povsod drugod, nič novega.
Zgodovina sprememb…
- spremenilo: kuall ()
kunigunda ::
V bistvu filozofiranje okoli znanih stvari :)
Moras vedeti, da razumevanje jezika temelji tudi na cloveski razgledanosti in izkusnjah. Google tega nima,
zato si pomaga s statistiko, kar je tudi najboljsa(edina) resitev. Prav tako, ce se crkovno zmotis v besedi, zna "uganiti",
za katero besedo gre s pomocjo levenstein algoritma. Tako kot ti programersko razmisljas (delanje majhnih kosckov in sestavljanje v vecje)
velja za enostavne zadeve in ne tako kompleksne kot prevod.
In ne enaci govorni jezik s pisanjem. Pri govoru so vpletena custva, tonski poudarki, mimika obraza ipd.
Pri kitajscini so npr. podobne besede samo tebi, njim ne. Isto je z arabscino, kjer neznalec ne bo razlocil, kdaj je
arabec rekel "srce" in kdaj "pes". Gre za nacin izgovorjave posamezne crke. Slovanski jeziki imajo preprosto izgovorjavo crk,
vzhodni jeziki imajo nam-podobne crke, kateri se izgovarjajo z razlicnim delom grla.
Moras vedeti, da razumevanje jezika temelji tudi na cloveski razgledanosti in izkusnjah. Google tega nima,
zato si pomaga s statistiko, kar je tudi najboljsa(edina) resitev. Prav tako, ce se crkovno zmotis v besedi, zna "uganiti",
za katero besedo gre s pomocjo levenstein algoritma. Tako kot ti programersko razmisljas (delanje majhnih kosckov in sestavljanje v vecje)
velja za enostavne zadeve in ne tako kompleksne kot prevod.
In ne enaci govorni jezik s pisanjem. Pri govoru so vpletena custva, tonski poudarki, mimika obraza ipd.
Pri kitajscini so npr. podobne besede samo tebi, njim ne. Isto je z arabscino, kjer neznalec ne bo razlocil, kdaj je
arabec rekel "srce" in kdaj "pes". Gre za nacin izgovorjave posamezne crke. Slovanski jeziki imajo preprosto izgovorjavo crk,
vzhodni jeziki imajo nam-podobne crke, kateri se izgovarjajo z razlicnim delom grla.
kuall ::
To je tako težak problem, da dokler ti ni jasno kaj delaš je bolje samo filozofirat, je bolj prijetno kot programirat. Šele ko ti je kristalno jasno kaj bi rad sprogramiral in kakšen bo rezultat je smiselno začet programirat. Saj tako je povsod pri programiranju.
Kar programiraš med tem filozofiranjem je samo toliko, da si razjasniš kaj. Drguače pa se programirat nejasnih stvari, kar je prevajanje sigurno, ne splača.
Kar programiraš med tem filozofiranjem je samo toliko, da si razjasniš kaj. Drguače pa se programirat nejasnih stvari, kar je prevajanje sigurno, ne splača.
Irbis ::
@kuall
Popravljanje ene zatipkane črke ni problem, stvar se zakomplicira le, če iz zatipka nastana nova pravilna beseda z drugim pomenom.
Presis npr. pri analizi slovenščine popravlja stvari, ki jih sicer popravlja slovnični pregledovalnik Besana, tako da npr. mirno prevede "Včeri sm šu domol." v "I went home yesterday.", medtem ko se Google Translate s tem čisto zadavi: "Včeri sm su home.", ker imam v učnem vzorcu premalo pogovorne slovenščine.
O tem, katere besede so možne v nekem jeziku, si je zanimivo prebrati v knjigi Jazikovni nagon Steven Pinkerja (poglavje Glasovi tišine).
@kunigunda
Levenstein ni dovolj, to ti da samo potencialne kandidate, ki jih moraš potem loviti s kontekstom (in tudi sicer je ta način dober le za naključne zatipke, precejšen del je bolj sistematičen, kjer moraš upoštevati podobnost glasov).
Pri fonemih v drugih jezikih je pa problem to, da ti glasovi, ki se jih v otroštvu ne naučiš razlikovati, potem zvenijo enako, jih sploh ne ločiš. Zato npr. Slovenci običajno težko ločimo med č in ć v hrvaščini (in s tem imajo pravzaprav težave tudi Hrvatje, ki so rojeni v narečjih, ki ne ločujejo med č in ć, ti se morajo tudi v šoli priučiti).
@kuall: Šele ko ti je kristalno jasno kaj bi rad sprogramiral in kakšen bo rezultat je smiselno začet programirat. Saj tako je povsod pri programiranju.
Težava pri tem je, da boš na velik del težav naletel šele, ko boš res sprogramiral stvar, prej se ti stvari zdijo lahko čisto preproste, potem pa naletiš na primere, ki ti pokvarijo razmišljanje, stvari so preveč kompleksne, da bi lahko predvidel vse. In še težko si privoščiš deset let tuhtanja, ne da bi imel kaj pokazati.
Popravljanje ene zatipkane črke ni problem, stvar se zakomplicira le, če iz zatipka nastana nova pravilna beseda z drugim pomenom.
Presis npr. pri analizi slovenščine popravlja stvari, ki jih sicer popravlja slovnični pregledovalnik Besana, tako da npr. mirno prevede "Včeri sm šu domol." v "I went home yesterday.", medtem ko se Google Translate s tem čisto zadavi: "Včeri sm su home.", ker imam v učnem vzorcu premalo pogovorne slovenščine.
O tem, katere besede so možne v nekem jeziku, si je zanimivo prebrati v knjigi Jazikovni nagon Steven Pinkerja (poglavje Glasovi tišine).
@kunigunda
Levenstein ni dovolj, to ti da samo potencialne kandidate, ki jih moraš potem loviti s kontekstom (in tudi sicer je ta način dober le za naključne zatipke, precejšen del je bolj sistematičen, kjer moraš upoštevati podobnost glasov).
Pri fonemih v drugih jezikih je pa problem to, da ti glasovi, ki se jih v otroštvu ne naučiš razlikovati, potem zvenijo enako, jih sploh ne ločiš. Zato npr. Slovenci običajno težko ločimo med č in ć v hrvaščini (in s tem imajo pravzaprav težave tudi Hrvatje, ki so rojeni v narečjih, ki ne ločujejo med č in ć, ti se morajo tudi v šoli priučiti).
@kuall: Šele ko ti je kristalno jasno kaj bi rad sprogramiral in kakšen bo rezultat je smiselno začet programirat. Saj tako je povsod pri programiranju.
Težava pri tem je, da boš na velik del težav naletel šele, ko boš res sprogramiral stvar, prej se ti stvari zdijo lahko čisto preproste, potem pa naletiš na primere, ki ti pokvarijo razmišljanje, stvari so preveč kompleksne, da bi lahko predvidel vse. In še težko si privoščiš deset let tuhtanja, ne da bi imel kaj pokazati.
Okapi ::
Pri fonemih v drugih jezikih je pa problem to, da ti glasovi, ki se jih v otroštvu ne naučiš razlikovati, potem zvenijo enako, jih sploh ne ločiš. Zato npr. Slovenci običajno težko ločimo med č in ć v hrvaščinPa med č in ć niti ni krize, ker ne vem, če je kakšna beseda, ki bi zaradi tega dobila čisto drug pomen. Bolj zabavno je, da ne slišimo razlike med dž in đ (večina pravzaprav niti ne ve, da sta to dva različna glasova). In potem večina ne loči med džak (vreča po srbsko) in đak (učenec, dijak).
Pred kratkim so v Ljubljani slovesno odkrili spomenik Vuku Karadžiću, na katerem so narobe napisali Karađić.
Zgodovina sprememb…
- zavarovalo slike: gzibret ()
xmetallic ::
Ti si zdaj razložil kako nevronske mreže delujejo. Ampak mi zna kdo razložit, kako google translate deluje? Malo bolj tehnično.
Z nevronskimi mrežami. Računalnik se načeloma lahko sam uči vendar zmeraj obstaja človeški faktor, ki mu mora povedati če je naredil nekaj prav ali narobe. Tako kot otroku starš pove kaj je prav in narobe.
kunigunda ::
@Irbis, sej "Did you mean" pri GT ne lovi konteksta (vsaj po mojih izkusnjah), sicer poleg levensteina uporabljajo za podobnost se BTB algoritme, kej vec pa ne vem :)Glede na statisticni model sumim tud na jacarda.
Zgodovina sprememb…
- spremenilo: kunigunda ()
xmetallic ::
Randomness je izjavil:
Kako pa boš ta tvoja pravila zapisal v računalniku razumljivi obliki?
Brez problema se jih vkodira v "gene" programa v obliki programerske kode. Čimveč teh pravil poznaš bolje veš, kako napisat program.
Ti nikoli ne boš mogel napisati toliko pravil in izjem kot jih lahko Google najde z matematiko. Če samo pomisliš kakšne količine podatkov ima Google na voljo pa so prevodi včasih še vedno napačni.
Tudi če ti teoretično uspe napisati milijon izjem nastopi nov problem. Ti moraš za vsak stavek, frazo iti čez nekaj deset, sto, tisoč if stavkov. Medtem ko Google ta stavek pretvori v številke in lahko v eni sami operaciji naredi prevod.
Zgodovina sprememb…
- spremenilo: xmetallic ()
kunigunda ::
@Metalic, GT ne uporablja pravil pri jezikih, ampak se zanasa ze na v preteklosti prevedene translacije in statistiko le-teh.
Ni znano, kateri vsi ze prevedeni dokumenti se za model uporabljajo, kar je znano, je da biblijo, ki je prevedena skoraj v vse jezike sveta,
UN in EU dokumentacijo, dolocene vrste romanov (fantasika, misteriji). Verjetno se kaj iz rumenih tiskov (saj se donald trump ne ponudi vec kot
donald duck :P)
V kolikor bi za vsako posebnost posameznega jezika sli pisat gramaticne pogoje, ne bi nikoli dokoncali (to so delali pred STM pa so videli da no-go)
Ni znano, kateri vsi ze prevedeni dokumenti se za model uporabljajo, kar je znano, je da biblijo, ki je prevedena skoraj v vse jezike sveta,
UN in EU dokumentacijo, dolocene vrste romanov (fantasika, misteriji). Verjetno se kaj iz rumenih tiskov (saj se donald trump ne ponudi vec kot
donald duck :P)
V kolikor bi za vsako posebnost posameznega jezika sli pisat gramaticne pogoje, ne bi nikoli dokoncali (to so delali pred STM pa so videli da no-go)
xmetallic ::
@Metalic, GT ne uporablja pravil pri jezikih, ampak se zanasa ze na v preteklosti prevedene translacije in statistiko le-teh.
Ni znano, kateri vsi ze prevedeni dokumenti se za model uporabljajo, kar je znano, je da biblijo, ki je prevedena skoraj v vse jezike sveta,
UN in EU dokumentacijo, dolocene vrste romanov (fantasika, misteriji). Verjetno se kaj iz rumenih tiskov (saj se donald trump ne ponudi vec kot
donald duck :P)
V kolikor bi za vsako posebnost posameznega jezika sli pisat gramaticne pogoje, ne bi nikoli dokoncali (to so delali pred STM pa so videli da no-go)
Preberi še enkrat.
EDIT: Ok, mogoče malo nejasno napisano. Google v besedilih išče vzorce in na podlagi tega dela prevode. Ne v obliki besed ampak v obliki števil in izračunov.
Zgodovina sprememb…
- spremenilo: xmetallic ()
Irbis ::
Ti nikoli ne boš mogel napisati toliko pravil in izjem kot jih lahko Google najde z matematiko. Če samo pomisliš kakšne količine podatkov ima Google na voljo pa so prevodi včasih še vedno napačni.
Včasih? Ne vem, meni se zdi, da hudo redko vidim prevod ene daljše povedi, ki bi bil res brezhiben. V večini primerov sicer uspe najdi prave prevode besed, besedni red in kakšni zaimki (ali pa skloni pri prevajanju v slovenščino) so pa običajno problem.
Recimo iz današnje novice:
V ženski konkurenci pa bodo tekmovale Špela Rogelj, Urša Bogataj, Nika Križnar, Eva Logar, Maja Vtič in Katja Požun.
->
In the women's competition will compete Spela Rogelj Ursa Bogataj Nika Križnar, Eva Logar, May Plug and Katja Požun.
Pa tukaj pravi problem ni "May Plug".
Tudi če ti teoretično uspe napisati milijon izjem nastopi nov problem. Ti moraš za vsak stavek, frazo iti čez nekaj deset, sto, tisoč if stavkov. Medtem ko Google ta stavek pretvori v številke in lahko v eni sami operaciji naredi prevod.
Razlika pa je, da znamo ljudje veliko bolje generalizirati. Upamo sicer, da bo globljim nevronskim mrežam uspelo kaj narediti pri tem, ampak v resnici ne vemo.
Bi bil pa zanimiv eksperiment z nevronskimi mrežami sprogramirati kakšen relativno preprost problem, recimo seštevanje. Kot učno množico samo npr. tabelo seštevanja do 10.000:
1+0 -> 1
1+1 -> 2
1+2 -> 3
...
1+10000 -> 10001
2+0 -> 2
(oz. neko naključno podmnožico tega)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Microsoftova umetna inteligenca prevaja kitajščino kot ljudje (strani: 1 2 )Oddelek: Novice / Znanost in tehnologija | 21471 (16258) | Irbis |
» | Skype simultano prevaja! (strani: 1 2 )Oddelek: Novice / Ostala programska oprema | 24843 (20465) | m0LN4r |
» | Google govori 41 jezikovOddelek: Novice / Omrežja / internet | 6217 (4937) | Azrael |
» | Računalnik-prevajalec (strani: 1 2 )Oddelek: Znanost in tehnologija | 7845 (7142) | Tear_DR0P |
» | "AI"(bot)Oddelek: Programiranje | 1993 (1704) | Thomas |