memkompreneble

"Ekde kiam homoj la unuan fojon forlasis siajn kavernojn kaj renkontis aliulojn kun aliaj vidpunktoj kaj aliaj lingvoj ekzistas revo: mortigi ilin, por ke ni ne devu lerni ilian lingvon nek kompreni ilian vidpunkton." – citaĵo el la filmo "The Beast With a Billion Backs" de la usona tv-serio Futuramo – tiu ŝerco evidente celas al esperanto, ĉar en la sama filmo oni ankaŭ proponas senseksajn pronomojn "shklim" kaj "shkler" por la angla

pri la listo de piv-kapvortoj 2010-01-26

Filed under: raportoj — memkompreneble @ 17:00

La listo ĉe http://homepage.ntlworld.com/edmund.grimley-evans/pivkap estas tro komprimita por tuja uzo. Pro tio, eta Java-programo estis skribita por resolvi plejparton de la mallongigoj. La fontokodo de tiu programeto sekvas ĉi tie:

import java.util.ArrayList;
import java.util.Arrays;

import eo.StringLib.StringLib;

/**
 * Klaso por importi liston de kapvortoj de la plena ilustrita vortaro
 * kaj por poste uzi tiun liston por rekoni validajn esperanto-vortojn.
 *
 * @author memkompreneble
 */
public class PivKap {

 /**
 * Interna listo kun la plenaj formoj de cxiuj kapvortoj de la piv.
 */
 private ArrayList<String> kapvortoj = new ArrayList<String>();

 /**
 * Aldonas eron al la listo de kapvortoj. Rajtas esti "plurvorta vorto". Ne rajtas esti malplena nek <code>null</code>.
 * @param kapvorto
 */
 private void aldoni(String kapvorto) {
 if (kapvorto != null && kapvorto.length() > 0) {
 kapvortoj.add(kapvorto);
/*            StringBuffer s = new StringBuffer();
 s.append(Integer.toString(kapvortoj.size()));
 s.append(" ");
 s.append(kapvorto);
 System.out.println(s.toString());
*/        }
 }

 /**
 * Sxangxas usklecon de sola signo kaj redonas la reusklitan signon.
 * @param ch
 * @return
 */
 private char uskligi(char ch) {
 if (Character.isLowerCase(ch)) {
 return Character.toUpperCase(ch);
 } else {
 return Character.toLowerCase(ch);
 }
 }

 /**
 * Konstruktoro por krei novan liston kun piv-kapvortoj.
 * @param fontoteksto
 * @TODO korekti afiksojn de la formo "-vora"
 */
 public PivKap(String fontoteksto) {

 // ricevi liston kun linioj
 String[] linioj_ = fontoteksto.split("\n");
 ArrayList<String> linioj = new ArrayList<String>();
 for (String linio : linioj_) {

 // ignori liniojn kun komentoj
 if (!linio.startsWith("#")) {

 // etendi liniojn kun pluraj enskriboj
 linioj.addAll(Arrays.asList(linio.split(";")));
 }
 }

 // bufro por stori la lastan radikon
 String lasta_radiko = "";

 // bufro por indiki usklecon de lasta radiko
 boolean majuskle = false;

 // iteracio tra la linioj de la enigo
 for (String linio : linioj) {

 // forpreni maltauxgajn signojn
 linio = linio.replaceAll("\n","");
 linio = linio.replaceAll(";","");

 // se temas pri nova radiko
 if (!linio.startsWith(" ") && !linio.startsWith("\t")) {

 // se la radiko havas finajxon
 int i = linio.indexOf("/");
 if (i > 0) {

 // kopii la radikon
 lasta_radiko = linio.substring(0,i);

 // kopii la finajxon
 String finajxo = linio.substring(i + 1, linio.length());

 // aldoni al kapvortoj la novan kapvorton
 aldoni(lasta_radiko + finajxo);

 // se la radiko ne havas finajxon
 } else {

 // kopii kaj aldoni la radikon
 lasta_radiko = linio;
 aldoni(lasta_radiko);
 }

 // eltrovi usklecon de la nova radiko
 majuskle = Character.isUpperCase(lasta_radiko.charAt(0));

 // se ne temas pri nova radiko
 } else {

 // forpreni unuajn spacetojn
 while (linio.startsWith(" ") || linio.startsWith("\t")) {
 linio = linio.substring(1);
 }

 // trovi anstatauxigan signon
 int j = linio.indexOf("~");

 // se trovis anstatauxigan signon
 if (j >= 0) {

 String vorto = "";

 // se majuskla radiko ricevas afikson
 if (majuskle && j > 1) {

 // kalkuli bonan usklecon
 vorto = Character.toUpperCase(linio.charAt(0))
 + linio.substring(1,j)
 + Character.toLowerCase(lasta_radiko.charAt(0))
 + lasta_radiko.substring(1)
 + linio.substring(j + 1);

 // en cxiuj aliaj kazoj
 } else {

 // fari anstatauxigon sen uskligo
 vorto = linio.substring(0,j) + lasta_radiko + linio.substring(j + 1);
 }

 // anstatauxi eblajn aliajn okazojn
 vorto = vorto.replaceAll("~",lasta_radiko);

 // trovi uskligan signon
 int k = vorto.indexOf("\\");

 // se trovis uskligan signon
 if (k >= 0) {

 // kalkuli uskligosxangxon
 String nova_vorto = vorto.substring(0,k)
 + uskligi(vorto.charAt(k + 1))
 + vorto.substring(k + 2);

 // kaj transpreni la rezulton
 vorto = nova_vorto;
 }

 // sercxi krampojn
 int p = vorto.indexOf("(");
 int q = vorto.indexOf(")");

 // se trovis malferman kaj ferman krampon
 if (p >= 0 && q > p) {

 // aldoni duan variajxon de la vorto
 String nova_vorto = vorto.substring(0,p) + vorto.substring(q + 1);
 aldoni(nova_vorto);

 // kalkuli unuan variajxon de la vorto
 nova_vorto = vorto.substring(0,p)
 + vorto.substring(p + 1,q)
 + vorto.substring(q + 1);

 // kaj transpreni la rezulton
 vorto = nova_vorto;
 }

 // aldoni la novan kapvorton
 aldoni(vorto);
 }
 }
 }
 }

 public void printi_al_konzolo() {
 int i = 0;
 for (String kapvorto : kapvortoj) {
 i++;
 StringBuffer s = new StringBuffer();
 s.append(StringLib.aldonuMaldekstre(Integer.toString(i),"0",5));
 s.append(" ");
//            s.append(StringLib.aldonuDekstre(Integer.toString(kapvorto.length())," ",5));
//            s.append(" [");
 s.append(kapvorto);
//            s.append("]");
 System.out.println(s.toString());
 }
 }
...

Ŝajnas ke tiu inserto ne konservis komencajn spacigajn signojn. Kiu bezonas, povas ankoraŭ kopii, enmeti, apliki funkcion de aŭtomata formatigo, kaj aldoni eventuale maltroajn parentezojn. Poste alvoki per enhavo de la supre ligita dosiero. Al ties loka kopio mi tamen faris unu etan ŝanĝon: la eloriginala linio “Vulkan/o” nun estas ŝanĝita al “vulkan/o”, ĉar la majuskligo jam estas indikita en la tuj sekva linio, sed alikaze fuŝas uskligon de la sekvaj idaj kapvortoj.

La ideo estas, ke la etendita rezulta listo utilos por kontroli la kvaliton de la “renversa radikorekonado” per analizado de aperantaj esperantaj afiksoj kiel priskribite en antaŭaj blogeroj. Pro tio gravas, ke la kvalito de ĉi tiu listo mem estu laŭeble plejalta. Se la kara leganto do trovos kiajn ajn erarojn en la du partoj de la listo de la piv-kapvortoj, bv. komentu pri tio.

Fonto por alia kvalitokontrolilo estos iam la listo de oficialaj radikoj donita ĉe la paĝaro de la akademio de esperanto. Se iu el tiuj, kiuj fakte legis ĝis ĉi tie, konas alian eblan fonton de altkvalitaj eo-vortaroj aŭ kolektoj, aŭ havas aliajn pensojn, bv. skribu komenton.

 

One Response to “pri la listo de piv-kapvortoj”

  1. […] de unikaj radikoj aperantaj en la plena ilustrita vortaro kiel priskribita en la antaŭa artikolo pri-la-listo-de-piv-kapvortoj mi faris serion de testoj kontraŭ aro de segmentoj, kies lingvon mi antaŭe kontrolis okulumante […]


Respondi

Entajpu viajn informojn sube aŭ alklaku piktogramon por ensaluti:

WordPress.com Logo

Vi komentas per via konto de WordPress.com. Elsaluti /  Ŝanĝi )

Twitter picture

Vi komentas per via konto de Twitter. Elsaluti /  Ŝanĝi )

Facebook photo

Vi komentas per via konto de Facebook. Elsaluti /  Ŝanĝi )

Connecting to %s