!7 concept Example { S input; S verb; transient S verb_guessed; } static F1 guesser; static JLabel lblStatus; p-subst { dbIndexing(Example, 'input); autoRestart(); for (S s : keys(gac36k())) uniq(Example, input := s); guesser = randomGuesser1(examples()); print("Making CRUD"); SimpleCRUD crud = simpleCRUD(Example); addToFrame(crud.panel, lblStatus = jlabel()); thread { guessLoop(); } } static SS examples() { ret mapFromKeyAndValueField([Example e : list(Example) | nempty(e.verb)], 'input, 'verb); } svoid guessLoop { repeat with sleep 5 { int changes = 0; new HashMap guessedMap; loading "Guessing..." { for (Example e) { S s = unnullStr(pcallF(guesser, e.input)); changes += cset(e, verb_guessed := s); guessedMap.put(e.input, s); } if (changes > 0) change(); SS examples = examples(); score = scoreGuesserIC_1(mapGetter(guessedMap), examples); set(lblStatus, n(examples, "example") + ", score: " + formatDouble(score*100, 1) + "%"); } }