static Scorer dm_gazelle_checkPredictor(F2, S> predictor, O... _) { ret dm_gazelle_checkPredictor(predictor, _); } static Scorer dm_gazelle_checkPredictor(O predictor, O... _) { bool verbose = boolPar verbose(_); S ruleID = stringPar ruleID(_); new Map> statementsByRule; new Scorer scorer; for (dm_gazelle_appliedRulesForLearning_Entry e : dm_gazelle_appliedRulesForLearning_withoutChangedRules()) { if (ruleID != null && neq(e.ruleID, ruleID)) continue; Set statements = getOrCreateTreeSet(statementsByRule, e.ruleID); if (nempty(statements)) { if (verbose) print("Have " + n2(statements, "statement")); S guess = (S) callF(predictor, e.r, statements); scorer.add(eq(guess, e.judgement)); if (verbose) print(" " + guess + "/" + e.judgement + ": " + e.r.map); } LS newStatements = ai_gazelle_statementsFromAppliedRule(e.r, e.judgement); statements.addAll(newStatements); } ret scorer; }