Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: szipucsu on 2013.June.14. 14:10:49

Title: Mondatokat alkotó program
Post by: szipucsu on 2013.June.14. 14:10:49
Azon gondolkoztam, lehetne-e olyan programot írni, ami angolul (vagy akár más nyelven) önállóan mondatokat generál. Tehát meg lenne adva tömbökben egy csomó ige, főnév, melléknév és mindenféle szófaj, és ezeket rakná egymás mellé úgy, hogy helyes mondatok legyenek belőle. Véletlenszerűen alkotna mondatokat, de közben figyelne a szabályokra, mi állhat mi mellett a mondatban, stb.
Arra is figyelni kéne, hogy milyen szavak mivel passzolhatnak össze, így pl. az "olvasni" ige mellé a "könyv", "újság" főnév passzolhat, de pl. az "asztal" nem.
Ha ez már nagyon jól megy, meg lehetne csinálni más nyelvre is, és akár úgy, hogy ugyanazt a mondatot írja ki a gép két nyelven.
IS-BASIC-ben ebből szerintem sokat meg lehetne valósítani.
Title: Re:Mondatokat alkotó program
Post by: Zozosoft on 2013.June.14. 14:22:13
Angolul könnyű, ott nincs ragozás, csak össze kell dobálni egy csomó szót egy kupacba és máris értelmes :-D
Még ha beletesszük azokat a szabályokat, amiket mindig emlegetsz, akkor se lesz túl bonyolult :-)
Title: Re:Mondatokat alkotó program
Post by: lgb on 2013.June.14. 22:20:54
Quote from: szipucsu
Azon gondolkoztam, lehetne-e olyan programot írni, ami angolul (vagy akár más nyelven) önállóan mondatokat generál. Tehát meg lenne adva tömbökben egy csomó ige, főnév, melléknév és mindenféle szófaj, és ezeket rakná egymás mellé úgy, hogy helyes mondatok legyenek belőle. Véletlenszerűen alkotna mondatokat, de közben figyelne a szabályokra, mi állhat mi mellett a mondatban, stb.

Angolul nem olyan gaz, magyarul komplexebb ... Amugy emlekszem, "fiatal koromban" volt egy BNF faval operalo Knight Rider tortenet generalo :) Ugye kb az hogy story = bevezetes, focim, tortenet, vegkifejlet stb. Aztan ki van fejtve hogy mibol all a bevezetes stb, egeszen minden mondatig, szofajokig, stb, aztan a vegen van egy csomo szo mindenre. Aztan egy veletlenszam-generator valaszt minden halmazra random szavakat es a BNF fa alapjan felepiti belole a teljes tortenetet. Nagyon vicces tortenetek jottek igy ki :)
Title: Re:Mondatokat alkotó program
Post by: Zozosoft on 2013.June.14. 22:23:53
Mi az a BNF?
Title: Re:Mondatokat alkotó program
Post by: lgb on 2013.June.15. 09:17:02
Quote from: Zozosoft
Mi az a BNF?

http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form (http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form)
http://hu.wikipedia.org/wiki/Backus%E2%80%93Naur_forma (http://hu.wikipedia.org/wiki/Backus%E2%80%93Naur_forma)
Title: Re:Mondatokat alkotó program
Post by: szipucsu on 2013.June.15. 20:34:13
Egyelőre eddig jutottam: [attach=1]

Lehetne még bőven bővíteni a szókincsét és még hosszabb mondatokra megtanítani és még több szabályra, de mára részemről ennyi.
Csak meg kell nyomni az F1-et és már ontja is magából random az angol mondatokat.
Title: Re:Mondatokat alkotó program
Post by: endi on 2013.June.15. 20:50:36
Tök jó. Fejleszd tovább. Pl. az egymás után következő mondatok közt legyen valami összefüggés. Mintha két ember beszélgetne. Néha kérdezzenek és a válasz valahogy kapcsolódjon. :)
Title: Re:Mondatokat alkotó program
Post by: szipucsu on 2013.June.15. 21:29:25
Ahhoz nem lövök, hogyan lehetne megcsinálni, hogy a mondatok között összefüggés legyen.
Így is eléggé korlátozott jelentéskörű szavak vannak benne, csak személy lehet az alany, mert nem illik minden szó minden szó mellé. Így aztán tele lehet írni a DATA sorokat személyt jelölő főnevekkel, emberekre jellemző tulajdonságokkal vagy igékkel.
Egyébként az lenne a távolabbi célom ezzel, hogy a program kiírja egymás után angolul és mondjuk németül is ugyanazt a mondatot, nem tűnik lehetetlennek (bár talán az eszperantó könnyebb lenne. :D ). És így akár azt is meg lehetne csinálni, hogy kiír egy angol mondatot és be kell írni a német megfelelőjét, és ha jó, akkor kapunk érte pontot.
Esetleg össze lehetne ereszteni ezt a SAY programmal vagy a Speakeasy-vel, de ahhoz azt is meg kéne tanítani a gépnek, mit hogyan ejtsen ki, ez húzós lenne.
Title: Re:Mondatokat alkotó program
Post by: endi on 2013.June.15. 21:31:51
Pl. úgy lehetne válaszolgatóst, hogy az első mondat egyik szava (alany vagy állítmány) szerepel a másodikban is.
Title: Re:Mondatokat alkotó program
Post by: szipucsu on 2018.May.31. 00:10:08
Öt éve elkezdtem egy programot, amely angolul értelmes és helyes mondatokat generál magától. Akkor ide fel is tettem. Volt benne egy hiba, a "we" mellett a "be" változatlan maradt, nem lett belőle "are". Ezt kijavítottam, és a "have" után most már nem csak "a dog", "a cat", "a house" lehet, hanem "a car", "a book" is. A létige mellett már a "here" és "there" is előfordul. Eddig mindig tett jelzőt is az alanyhoz, most ez véletlenszerűen elmaradhat.
[attach=1]
Title: Re:Mondatokat alkotó program
Post by: szipucsu on 2018.June.02. 21:57:20
Ez lehet, senkit nem fog érdekelni, de fejlesztgettem ezt az angolos programot. Most véletlenszerűen tesz a mondatba often, usually, always, stb. határozószókat, ezeknek az ige előtt kell lenniük (kivéve a létigét, annak utána áll). Lett néhány elég érdekes mondat, ami helyesnek tűnik, de sose mondanék ilyet. Nem tudom, akinek angol az anyanyelve, mondaná-e pl. a snapshotban is legyártott mondatokat (Pl. Everybody sometimes eats). Meg ezek az each, every szavak teszik furává egyik-másik mondatot, főleg, ha az each és az a határozó is a mondatban van. De lehet, csak azért fura, mert önmagában van a mondat a semmiben, nem szövegben. Talán ki kéne venni az each és every szavakat, mert pl. az Every boy always runs nekem értelmesnek is tűnik meg nem is...
Title: Re:Mondatokat alkotó program
Post by: Lacika on 2018.June.03. 00:02:40
Érdekel!
Az Every boy always runs tényeg furcsa kicsit. Nem all of az?
Title: Re:Mondatokat alkotó program
Post by: szipucsu on 2018.June.03. 16:00:06
Az Every boy always runs tényeg furcsa kicsit. Nem all of az?
Igen, all (of) the boys jobb lenne, de valamiért nekem furának hangzik az "All the boys always run" is. Az "always" nélkül viszont jól hangzik. Érdekes dolog a nyelv, olyan szabályok vannak benne, amiket soha nem tanulunk, pl. az always milyen mondatba nem passzol, mégis ösztönösen jól használjuk. Ezek az "always"-szerű szavak a have ige mellett is furán hangzanak, hiszen (általában) nem mondjuk, "néha van autóm", "mindig van autóm", stb. Elsőre bele se gondol az ember, hogy ilyenekre is figyelni kell a programban.
Most kiszedtem az every és each szavakat, helyette egyelőre az our és one van, de ezek se lesznek sokáig. Most már a have/has ige mellett nem használ egyáltalán always-szerű szavakat, és a somebody, everybody stb. mellett sem, mert azok mellett is fura. Életemben nem gondoltam bele, hogy ezek mellett nem állhatnak, egész eddig. A "Somebody never runs" is fura mondat, pedig nyelvtanilag helyesnek tűnik. Ja, és majd az a/an névelő is el fog tűnni, mert azzal is furán hangzik sok mondat.
A korábbi verzióról írtam a weboldalamon (Számítógépes mondatalkotás - Hogyan tanítsuk meg a számítógépet angolul? (http://webnyelv.hu/szamitogepes-mondatalkotas/)), de ennek ezek szerint lesz folytatása.