La algoritmo de YouTube decidis ke mi interesiĝas pri klavaroj kaj ĝi proponis al mi filmeton pri ia stranga klavaro. En la filmeto la videisto testas la klavaron ludante ludon kiu nomiĝas Bomb Party. Mi antaŭe ne konis ĝin sed mi tuj ŝatas ĝin ĉar por sukcesi oni devas havi bonan vortoscion kaj povi tajpi rapide. La ideo estas tre simpla – ĝi donas al vi kombinon de 2-3 literoj kaj vi havas kelkajn sekundojn por tajpi vorton kiu enhavas ilin. Se vi ne tajpas sufiĉe rapide la bombo eksplodas kaj vi perdas vivon. La lasta restanta ludanto venkas.

Mi pensadis ke tio estus mojosa ludo por ludi inter esperantistoj kaj tial mi decidis provi fari esperantan version. Ĝi jam estas preta ĉe gemelo.org kun la nomo Vortofesto. Por ke la ludo funkciu la servilo devas havi liston de validaj vortoj, do mi devis unue krei tion. Jam ekzistas aliaj esperantaj ludprogramoj kiuj uzas vortoliston, ekzemple la diversaj versioj de Skrablo. Mi ankaŭ tre ŝatas Skrablon kaj lastatempe mi multe ludas 7-literojn. Se mi ĝuste komprenas, tiu ludo prenis la vortojn de PIV. Ĝi elektis politikon ke nur vortoj kiuj laŭlitere aperas en PIV estas uzeblaj. Do ekzemple oni povas uzi infinitivojn kaj adjektivojn kiel paroli kaj ruĝa sed ne konjugaciojn kaj deklinaciojn kiel parolis kaj ruĝajn. Por Skrablo tio eble estas bona decido, ĉar se estas tro facile ĉiam plilongigi vorton la ludo estas malpli interesa. Mi parenteze opinias ke estus bone ŝanĝi la valoron de la litero j pro tio vortolisto, ĉar se oni ne rajtas uzi pluralojn estas vere malfacile meti ĝin kaj ĝi valoras nur 2 poentojn.
Antaŭe ankaŭ ekzistis retpaĝa versio de Skrablo. Ĝi havis alian politikon ke esence iu ajn sufikso estas uzebla por formi novajn vortojn. Pro tio en la listo de plej valoraj vicoj aperas ekzemple la vortoj feraĵeca kaj miaŭindo. Estas tre malprobable ke tiuj vortoj uziĝus ekster la kunteksto de vortoludoj kaj ne estas facile klarigi la signifojn. Por Vortofesto mi volis eviti tiujn kombinaĵojn ĉar aliokaze estas tro facile elpensi longajn vortojn.
Do mi decidis uzi ReVon kiel fonton por Vortofesto, ĉefe ĉar ĝiaj datumoj estas libere uzeblaj en konvena XML-a formato. Mi decidis ke ĝi akceptus nur vortojn kiuj aperas en ReVo, sed ĝi ja akceptus normalajn konjugaciojn kaj deklinaciojn. Sufiksoj akcepteblas se ili aperas en ReVo. Do ekzemple aliĝilo estas akceptebla ĉar estas aparta difino por tio en ReVo, sed inventaĵoj kiel eltrajnigilo ne validos.
Por krei la vortoliston la programo do devas kompreni la tipon de la vorto. Ankaŭ 7-literoj iomete havas tiun problemon ĉar oni povas agordi ĝin por akcepti nudajn radikojn, ekzemple parol sen finaĵo. Do se estas vorto en PIV ĝi devas scii kie komenciĝas la finaĵo por povi forigi ĝin. Ŝajnas al mi ke ĝi havas simplan algoritmon kiu forigas la oftajn finaĵojn kiel i por infinitivoj, a por adjektivoj kaj o por substantivoj. Tio tamen havas iomete strangan rezulton ĉar ja ekzistas vortoj kiuj havas tiujn literojn ĉe la fino sed ne temas pri la finaĵo. Do ekzemple ĝi akceptas la vorton tr ĉar en PIV estas la vorto tra kaj la algoritmo deduktas ke la fina a estas la adjektiva finaĵo.
Mi volis eviti tiun problemon en Vortofesto. Bonŝance la datumoj de ReVo havas pli strukturan informon ol simplan liston de vortoj. Ĉiu artikolo en ReVo temas pri unu radiko kaj derivaĵoj de tio. La radiko estas markita per unu etikedo de la XML-dosiero, kaj ĉiu derivaĵo indikas tiun radikon. Do, ekzemple la datumoj por manĝ/i aspektas kiel ĉi tio:
<art>
<kap><rad>manĝ</rad>/i</kap>
<drv>
<kap><tld/>i</kap>
<gra><vspec>tr</vspec></gra>
<dif>
Maĉi kaj gluti nutraĵon; sin nutri:
…
</dif>
</drv>
<drv>
<kap><tld/>o</kap>
<dif>
Ago <tld/>i, <tld/>ado:
</dif>
</drv>
</art>
Do per la etikedo <rad>
mi povas vidi ke estas la radiko manĝ. Ĝi havas la derivaĵojn manĝi kaj manĝo. La etikedo <tld/>
indikas la radikon. Do tiel mi povas facili vidi ke la o kaj la i en la derivaĵoj estas finaĵoj kaj ne estas parto de la radiko. Kontraste la artikolo por tra aspektas tia:
<art>
<kap><rad>tra</rad></kap>
<drv>
<kap><tld/></kap>
<dif>
Prepozicio montranta: …
</dif>
</drv>
</art>
En tiu derivaĵo ne aparte aperas la litero a ĉar ĝi estas parto de la radiko kaj tial estas facile scii ke ne temas pri adjektivo.
Do mi verkis skripton por eligi la vortoliston. Kiam ĝi detektas verbon ĝi eligas ankaŭ la kutimajn konjugaciojn kiel manĝis, manĝas, manĝos ktp. Ĝi ankaŭ eligas la aktivajn participojn kiel manĝanta, manĝonte ktp. Por la pasivaj participoj estas iomete pli komplike ĉar ili validas nur por transitivaj verboj. Do ekzemple manĝata havas sencon sed irata ne. Bonŝance la datumoj de ReVo ankaŭ notas la transitivecon de verboj per la etikedo <vspec>
kiel en la ekzemplo por manĝ.
Sekve venas malpli facilaj decidoj. Mi supozas ke se oni vidas la transitivan vorton frapi en la vortaro oni scias ke oni ankaŭ povas diri frapiĝi sen bezono de aparta difino por tiu vorto. Do mi ja aŭtomate aldonas -iĝ al ĉiu transitiva vorto. Tamen ankaŭ estas la sufikso -ig kiun oni povas ĝenerale apliki al ĉiu verbo. Ĉu la programo devas ankaŭ akcepti tion? Estas ne evidenta decido ĉar ekzemple ReVo havas apartan difinon por manĝigi, do tio pensigas ke la verkistoj de ReVo ne pensas ke -ig validas por ĉiu verbo. Mi tamen decidis ja permesi ĝin, sed eble se iu havas bonan kontraŭargumenton mi ŝanĝos la decidon. Mi simile akceptas -ado kiel sufikson por ĉiu verbo. Do fine por la sola vorto manĝi, la vortolisto havas 138 vortojn:
manĝado, manĝadoj, manĝadojn, manĝadon, manĝanta, manĝantaj, manĝantajn, manĝantan, manĝante, manĝanto, manĝantoj, manĝantojn, manĝanton, manĝas, manĝata, manĝataj, manĝatajn, manĝatan, manĝate, manĝato, manĝatoj, manĝatojn, manĝaton, manĝi, manĝigado, manĝigadoj, manĝigadojn, manĝigadon, manĝiganta, manĝigantaj, manĝigantajn, manĝigantan, manĝigante, manĝiganto, manĝigantoj, manĝigantojn, manĝiganton, manĝigas, manĝigi, manĝiginta, manĝigintaj, manĝigintajn, manĝigintan, manĝiginte, manĝiginto, manĝigintoj, manĝigintojn, manĝiginton, manĝigis, manĝigonta, manĝigontaj, manĝigontajn, manĝigontan, manĝigonte, manĝigonto, manĝigontoj, manĝigontojn, manĝigonton, manĝigos, manĝigu, manĝigus, manĝinta, manĝintaj, manĝintajn, manĝintan, manĝinte, manĝinto, manĝintoj, manĝintojn, manĝinton, manĝis, manĝita, manĝitaj, manĝitajn, manĝitan, manĝite, manĝito, manĝitoj, manĝitojn, manĝiton, manĝiĝado, manĝiĝadoj, manĝiĝadojn, manĝiĝadon, manĝiĝanta, manĝiĝantaj, manĝiĝantajn, manĝiĝantan, manĝiĝante, manĝiĝanto, manĝiĝantoj, manĝiĝantojn, manĝiĝanton, manĝiĝas, manĝiĝi, manĝiĝinta, manĝiĝintaj, manĝiĝintajn, manĝiĝintan, manĝiĝinte, manĝiĝinto, manĝiĝintoj, manĝiĝintojn, manĝiĝinton, manĝiĝis, manĝiĝonta, manĝiĝontaj, manĝiĝontajn, manĝiĝontan, manĝiĝonte, manĝiĝonto, manĝiĝontoj, manĝiĝontojn, manĝiĝonton, manĝiĝos, manĝiĝu, manĝiĝus, manĝonta, manĝontaj, manĝontajn, manĝontan, manĝonte, manĝonto, manĝontoj, manĝontojn, manĝonton, manĝos, manĝota, manĝotaj, manĝotajn, manĝotan, manĝote, manĝoto, manĝotoj, manĝotojn, manĝoton, manĝu, manĝus
Laŭ mia kompreno en Esperanto estas ĝenerala regulo pri adjektivoj ke oni povas uzi ĉiujn kiel verbon. Oni ankaŭ povas aldoni la sufikson -iĝ por montri ke io ŝanĝas staton aŭ -ig por montri ke io alia ŝanĝas la staton. Mi decidis akcepti ankaŭ tion por ĉiu adjektivo por ke ekzemple vortoj kiel ruĝiĝas kaj rapidigonta estu aŭtomate validaj.
Entute la ludo do aktuale akceptas 939 095 vortojn. Se oni konservas tion en ASCII-a dosiero ĝi postulas 12MB da spaco! La servilo tamen uzas specialan datumstrukturon por densigi la dosieron. Tiel ĝi fakte okupos nur 204KB ĉe la servilo.
Mi esperas ke ĉi tiu artikolo kaj la skripto helpos aliajn homojn se ili iam volas krei propran ludon pri vortoj en esperanto. Ne hezitu komenti se vi trovas problemojn pri la vortolisto aŭ havas aliajn ideojn. Bonan ludadon!